И снова здравствуйте! :)
В этой статье рассмотрим создание простого бота для twitter с нуля. В рамках статьи бот научится подключаться к твиттеру и сможет постить сообщения и картинки с заданными промежутками времени. Принципы и методы, изложенные здесь, помогут в дальнейшем сделать бота с гораздо более расширенным функционалом – иными словами, объясняется база создания бота, приводятся примеры, а более насыщенная алгоритмическая база остается за вами (ну, или будет рассмотрена в других статьях).
Начнем-с!
Для этого переходим на сайт https://apps.twitter.com/, регистрируемся, если надо (тут просят подтвердить номер телефона), и нажимаем кнопку “Create New App”.
Заполняем поля – можно писать что угодно, в принципе, но название приложения – первое поле, должно быть уникально для всех – поэтому напишите там что-то замороченное, иначе будет ругаться.
Описание и сайт – для пользователей, для бота вообще не важно что вы там напишете. Ну, и конечно надо согласиться с условиями.
После создания приложения переходим на вкладку Keys and Access Tokens. Вам надо сгенерировать и получить отдельные ключи доступа – внизу этой страницы нажмите кнопку “Create my access token”
Для бота нужны будут все четыре поля: Consumer Key, Consumer Secret, Access Token, Access Token Secret. Сохраните их, они потребуются для бота. Если данных нет, нажмите кнопку “Regenerate Consumer Key and Secret”.
Скачиваем и устанавливаем python c официального сайта. Пошаговую инструкцию (если кому надо) можно найти в этой статье.
4.2 Выполняем команду pip install tweepy
Вы должны увидеть что-то похожее:
Опять же, подробности о том, как писать и выполнять код вы можете найти в этой статье. Открываем редактор и пишем простецкий код для проверки – давайте получим информацию по первому пользователю 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 = "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) 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, можно делать намного более серьезные вещи – заводить друзей, писать личные сообщения, рвать дружбу с теми, кто отписался и многое другое.
Главное начать! :)
Желаю вам удачи!