И снова здравствуйте! :)
В этой статье рассмотрим создание простого бота для 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 = "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, можно делать намного более серьезные вещи – заводить друзей, писать личные сообщения, рвать дружбу с теми, кто отписался и многое другое.
Главное начать! :)
Желаю вам удачи!
Я бы заплатил за него)))
Бот подписывался на всех подряд, кто ставил теги follow, кажется, потом отписывался, тех, кто отписался вносил в черные списки, постил всякую чепуху из базы, ретвитил посты тех, кто был в определенном списке.. В общем я дошел до 10к подписчиков, но там такой шлак.....
В общем-то можно найти или заново сделать, но вроде бы есть уже сервисы которые это все умеют?