Пишем бота для twitter - пошаговое руководство

И снова здравствуйте! :)

В этой статье рассмотрим создание простого бота для twitter с нуля. В рамках статьи бот научится подключаться к твиттеру и сможет постить сообщения и картинки с заданными промежутками времени.  Принципы и методы, изложенные здесь, помогут в дальнейшем сделать бота с гораздо более расширенным функционалом – иными словами, объясняется база создания бота, приводятся примеры, а более насыщенная алгоритмическая база остается за вами (ну, или будет рассмотрена в других статьях).

Начнем-с!

Подготовка

1. Для начала работы создаем своё приложение

Для этого переходим на сайт https://apps.twitter.com/, регистрируемся, если надо (тут просят подтвердить номер телефона), и нажимаем кнопку “Create New App”.



Заполняем поля – можно писать что угодно, в принципе, но название приложения – первое поле, должно быть уникально для всех – поэтому напишите там что-то замороченное, иначе будет ругаться.

 Описание и сайт – для пользователей, для бота вообще не важно что вы там напишете. Ну, и конечно надо согласиться с условиями.



2.Получаем API ключи для доступа

После создания приложения переходим на вкладку  Keys and Access Tokens. Вам надо сгенерировать и получить отдельные ключи доступа – внизу этой страницы нажмите кнопку “Create my access token”



Для бота нужны будут все четыре поля: Consumer Key, Consumer Secret, Access Token, Access Token Secret. Сохраните их, они потребуются для бота. Если данных нет, нажмите кнопку “Regenerate Consumer Key and Secret”.



3. Скачиваем и устанавливаем Python

Скачиваем и устанавливаем python c официального сайта. Пошаговую инструкцию (если кому надо) можно найти в этой статье.

4. Устанавливаем библиотеку для работы с Твиттером

4.1 Запускаем командную строку от имени администратора


Реклама:


4.2 Выполняем команду pip install tweepy

Вы должны увидеть что-то похожее:

5. Запускаем код и проверяем

Опять же, подробности о том, как писать и выполнять код вы можете найти в этой статье. Открываем редактор и пишем простецкий код для проверки – давайте получим информацию по первому пользователю twitter (которого зовут twitter ;)).

Нам потребуются ключи, которые мы получили на шаге 2, давайте запустим код и проверим, что он работает. Код вернет нам имя пользователя и количество его подписчиков.

import tweepy

API_KEY = "YOUR_API_KEY"
API_SECRET = "YOUR_API_SECRET"

ACCESS_TOKEN = "YOUR_ACCESS_TOKEN"
ACCESS_TOKEN_SECRET = "YOUR_ACCESS_TOKEN_SECRET"

auth = tweepy.OAuthHandler(API_KEY, API_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET)

api = tweepy.API(auth)

user = api.get_user('twitter')

print(user.screen_name, user.followers_count)

Заметки по коду:

Вкратце, вам нужно вбить ключи API в строках 3-7, и до 13й строки больше ничего не трогать (но, если вам очень интересно, можете узнать технические детали здесь).

 В 14й строке мы вызываем метод API который называется get_user и возвращает информацию о пользователе, имя которого мы указали (‘twitter’). Вы можете указать другое имя (своё, например) и посмотреть результат.

В 16й строке мы выводим user.screen_name и user.followers_count – это отображаемое имя и количество тех, кто на него подписался. Посмотреть на то, какие именно поля возвращаются, можно в описании самого Twitter. Ну, или просто заменить 16ую строку   на print(user).

Запускаем, проверяем – скрипт работает, и у пользователя twitter 60 млн. подписчиков, не плохо!

 

Эксплуатация

 

Научим бота отправлять всякую чушь себе же на страницу.

Код до 13й строки не трогаем, а дальше удаляем всё и пишем одну строчку:

import tweepy

API_KEY = "YOUR_API_KEY"
API_SECRET = "YOUR_API_SECRET"

ACCESS_TOKEN = "YOUR_ACCESS_TOKEN"
ACCESS_TOKEN_SECRET = "YOUR_ACCESS_TOKEN_SECRET"

auth = tweepy.OAuthHandler(API_KEY, API_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET)

api = tweepy.API(auth)

api.update_status('Просто так твит ни о чём!')

Смотрим что получилось иииии….:


Работает ) Но без картинок скучно. Давайте затвитим парусник? Вот такой:

Картинка лежит у меня в C:/images и называется boat.jpg.

Самое время её твитнуть и написать что-нибудь мотивирующее. Немного изменяем код:

import tweepy

API_KEY = "YOUR_API_KEY"
API_SECRET = "YOUR_API_SECRET"

ACCESS_TOKEN = "YOUR_ACCESS_TOKEN"
ACCESS_TOKEN_SECRET = "YOUR_ACCESS_TOKEN_SECRET"

auth = tweepy.OAuthHandler(API_KEY, API_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET)

api = tweepy.API(auth)

api.update_with_media('C:/images/boat.jpg', 'Пора в путешествие!')

И смотрим на свою ленту:

Ух ты, работает =)

Давайте теперь усложним немного – пусть у нас будет список текстов и картинок, и мы раз в минуту будем их постить. Когда список закончится, бот перестанет работать.

У меня три картинки, для каждой из них я подобрал описание, немного изменил код:

import time
import tweepy

API_KEY = "8OyjQtiUhdPKKfTJXluOOV1ZB"
API_SECRET = "pLkLJjCHHrMB2mgSoELW323gdO3Ddgoi0vhYDfQhbKTJQciZrf"

ACCESS_TOKEN = "1410630781-6VaQNR23nwBSXukUQhISyjAGNCQ5fKwfAr8iiTm"
ACCESS_TOKEN_SECRET = "9dRTQng7y4ufCNBdMYRCMcpqtrTqiNy1WlQqFA0DG3MYy"

auth = tweepy.OAuthHandler(API_KEY, API_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET)

api = tweepy.API(auth)

image_path = 'C:/images/'

tweets = [
    ['elephant.jpg', 'Белый слон рождается только в джунглях'],
    ['shark.jpg', 'Акула будет рада, если весь мир окажется под водой'],
    ['nature.jpg', 'Законы джунглей давно уже шагнули в города.']
]

for tweet in tweets:
    status = api.update_with_media(image_path + tweet[0], tweet[1])
    time.sleep(60)

запустил, открыл ленту Твиттера – и смотрел, как раз в минуту появляются записи:

Такая вот простая альтернатива отложенной записи в твиттере. Если покопаться в методах API, можно делать намного более серьезные вещи – заводить друзей, писать личные сообщения, рвать дружбу с теми, кто отписался и многое другое.

Главное начать! :)

Желаю вам удачи! 

 

 

Тэги: