
Содержание статьи
Лукас Кохорст
Поскольку примерно 15% Twitter состоит из ботов, я хотел попробовать свои силы. Я посмотрел, как создать бота Twitter, и попал в четко оформленную веб-программу. Это позволило создать бота, который будет желать, подписываться или ретвитировать твит на основе ключевого слова. Проблема заключалась в том, что вы могли создать только один бот для одной функции.
Потому я решил самостоятельно написать бота с помощью Python и библиотеки Tweepy.
Настройка
Сначала я скачал Tweepy. Вы можете сделать это с помощью менеджера пакетов pip.
pip install tweepy
Вы можете клонировать репозиторий GitHub, если у вас не установлен pip.
git clone tweepypython setup.py install
Вам нужно будет импортировать Tweepy и Tkinter (для интерфейса GUI).
import tweepyimport Tkinter
Учетные данные
Далее нам нужно связать нашу аккаунт Twitter с нашим сценарием Python. Перейдите на страницу apps.twitter.com и войдите в свой аккаунт. Создайте приложение Twitter и сгенерируйте ключ потребителя, секрет потребителя, маркер доступа и секрет маркера доступа. Теперь вы готовы начать!
Под операторами импорта сохраните свои учетные данные в переменных, а затем используйте второй блок кода для проверки подлинности учетной записи с помощью tweepy.
consumer_key = 'consumer key'consumer_secret="consumer secrets"access_token = 'access token'access_token_secret="access token secret"
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)auth.set_access_token(access_token, access_token_secret)api = tweepy.API(auth)
Чтобы проверить, работает ли ваше приложение, вы можете добавить:
user = api.me()print (user.name)
Это должно вернуть название вашей учетной записи Twitter на консоли.
Создание бота
Этот бот предназначен для:
- Следите за всеми, кто следует за вами.
- Добавить твит в избранное и добавить ретвит на основе ключевых слов.
- Ответить пользователю по ключевому слову.
Шаг первый самый простой, вы просто петля через своих подписчиков, а затем следите за каждым.
for follower in tweepy.Cursor(api.followers).items(): follower.follow() print ("Followed everyone that is following " + user.name)
На этом этапе, чтобы убедиться, что ваш код работает, вам следует войти в Twitter и наблюдать, как увеличивается количество людей, на которых вы подписаны.
С этого момента, кроме настройки и упаковки меток в GUI, я кодирую все под функцией mainFunction()
.
def mainFunction(): #The code
Возможно, вы можете увидеть, куда это идет. Чтобы добавить твит в избранное или ретвитнуть, мы можем использовать цикл for и оператор try, как это:
search = "Keyword"
numberOfTweets = "Number of tweets you wish to interact with"
for tweet in tweepy.Cursor(api.search, search).items(numberOfTweets): try: tweet.retweet() print('Retweeted the tweet')
except tweepy.TweepError as e: print(e.reason)
except StopIteration: break
Чтобы добавить твит в избранное, вы можете просто заменить
tweet.retweet()
с
tweet.favorite()
Чтобы ответить пользователю на основе ключевого слова, необходимо сохранить имя пользователя и идентификатор Twitter.
tweetId = tweet.user.idusername = tweet.user.screen_name
Затем мы можем просматривать твиты и обновлять свой статус у каждого пользователя.
phrase = "What you would like your response tweet to say"
for tweet in tweepy.Cursor(api.search, search).items(numberOfTweets): try: tweetId = tweet.user.id username = tweet.user.screen_name api.update_status("@" + username + " " + phrase, in_reply_to_status_id = tweetId) print ("Replied with " + phrase) except tweepy.TweepError as e: print(e.reason)
except StopIteration: break
Если вы хотите использовать сценарий только через терминал и обновлять код всякий раз, когда вы хотите его запустить, тогда вы завершили создание бота.
Создание GUI
Мы можем создать программу графического пользовательского интерфейса, которая будет принимать наши данные относительно ключевого слова, по которому вы бы хотели искать, и того, хотите ли вы добавить твит к избранному.
Поначалу нам необходимо инициализировать Tkinter и настроить макет.
Чтобы создать наш пользовательский интерфейс, мы будем иметь семь меток для поиска, количества твитов и ответов. Кроме того, вопросы, на которые вы хотите ответить, добавьте в подборку, ретвитните твит и подписывайтесь на пользователя.
Запомните код ниже наружу и выше наш mainFunction()
.
root = Tk()
label1 = Label( root, text="Search")E1 = Entry(root, bd =5)
label2 = Label( root, text="Number of Tweets")E2 = Entry(root, bd =5)
label3 = Label( root, text="Response")E3 = Entry(root, bd =5)
label4 = Label( root, text="Reply?")E4 = Entry(root, bd =5)
label5 = Label( root, text="Retweet?")E5 = Entry(root, bd =5)
label6 = Label( root, text="Favorite?")E6 = Entry(root, bd =5)
label7 = Label( root, text="Follow?")E7 = Entry(root, bd =5)
Нам тоже нужно пакет каждую метку, чтобы они отображались, а затем вызывайте корневую функцию в цикле, чтобы она оставалась на экране и не закрывалась сразу.
Вот что такое упаковка первый ярлык выглядит следующим образом. Я упаковал все этикетки ниже mainFunction()
.
label1.pack()E1.pack()
root.mainloop()
Если вы только запустили код графического интерфейса, он должен выглядеть примерно так:

Однако ввод текста в метки или нажатие кнопки «Отправить» на этом этапе ничего не даст. Поскольку интерфейс не подключен к коду.
Чтобы сохранить пользовательские данные в метках, нам нужно использовать .get()
функция. Я использовал отдельные функции для каждой метки.
def getE1(): return E1.get()
Потом в моем mainFunction()
я вызвал функцию getE1()
и сохранил входные данные в переменную. Для E1 это выглядит так:
getE1()search = getE1()
Вы должны сделать это для каждой метки. Для numberOfTweets
метка убедитесь, что входные данные преобразуются в целое число.
getE2()numberOfTweets = getE2()numberOfTweets = int(numberOfTweets)
Для последних четырех меток (Ответить, Избранное, Ретвит и Подписаться) нам нужно проверить, введено ли пользователем да или нет, чтобы запустить эту функцию или нет. Это может быть достигнуто через если заявления.
Это будет код для ответить функция:
if reply == "yes":
for tweet in tweepy.Cursor(api.search, search).items(numberOfTweets): try: tweetId = tweet.user.id username = tweet.user.screen_name api.update_status("@" + username + " " + phrase, in_reply_to_status_id = tweetId) print ("Replied with " + phrase) except tweepy.TweepError as e: print(e.reason)
except StopIteration: break
Для функций избранных, ретвитов и подписок просто замените ответить с «ретвит», «любимое» и «подписаться». Затем скопируйте и вставьте код, который вы написали выше, для каждого из них под если заявление.
Теперь нам просто нужно добавить подать и скажите, чтобы он вызвал mainFunction()
и выполните код для нашего Twitter Bot. Опять же не забудьте упаковать его!
submit = Button(root, text ="Submit", command = mainFunction)
Это! После запуска сценария бота программа с графическим интерфейсом должна запуститься, и вы сможете отвечать, делать ретвиты, добавлять в список пользователей и следить за ними.
С помощью этого Twitter-бота я создал аккаунт FreeWtr, который выступает за использование фильтрованной водопроводной воды вместо бутилированной. Вот скриншот профиля.

Вот полный исходный код на Github.