Мы создадим простого управляемого бота, который будет получать команды из ленты твиттера и выполнять их на клиентской машине. Для работы с Twitter API, установите пакет python-twitter.
pip install python-twitter
В качестве рабочего окружения я буду использовать python2.7 под virtualenv, и один из дистрибутивов GNU/Linux. Программа-клиент будет работать в бесконечном цикле, периодически получая команды из твиттера.
Сохраните следующий код в файле twibot.py.
#!/usr/bin/env python #!-*- coding: utf-8 -*-
import os
import time
import string
import twitter
# Задержка между запросами в секундах REQUEST_DELAY = 2 # Аккаунт Twitter для управления TWITTER_USERNAME = 'John1698736' # Формат даты, отдаваемой API твиттера DATE_FORMAT = '%a %b %d %H:%M:%S +0000 %Y' # Имя файла для записи истории "выполненных" твитов LOG_FILE = 'history.txt'
api = twitter.Api()
while True:
statuses = api.GetUserTimeline(TWITTER_USERNAME)
try:
command = statuses[0]
except IndexError:
command = None
if isinstance(command, twitter.Status):
with open(LOG_FILE, 'a+') as f:
history = string.split(f.read(), "\n")
if not str(command.id) in history:
os.system(command.text)
f.write(str(command.id) + "\n")
f.closed
time.sleep(REQUEST_DELAY)
Имя вашего Twitter-аккаунта необходимо задать в переменной TWITTER_USERNAME.
Запустим и проверим работу нашего скрипта.
./twibot.py
Теперь опубликуем тестовый твит.
Снова откроем окно с запущенным ботом, и подождем пару секунд.
Скрипт «исполняет» самый последний твит в ленте пользователя. Перед выполнением команды, в файле history.txt проверяется наличие идентификатора текущего сообщения. Если идентификатор был найден, значит твит уже «выполнялся» ранее.
Иначе, происходит «выполнение» текущего твита, после чего в history.txt записывается номер текущего сообщения.