Создайте Twitter-бота на Python с помощью Tweepy

1656642488 sozdajte twitter bota na python s pomoshhyu tweepy

Лукас Кохорст

Поскольку примерно 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 на консоли.

Создание бота

Этот бот предназначен для:

  1. Следите за всеми, кто следует за вами.
  2. Добавить твит в избранное и добавить ретвит на основе ключевых слов.
  3. Ответить пользователю по ключевому слову.

Шаг первый самый простой, вы просто петля через своих подписчиков, а затем следите за каждым.

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()

Если вы только запустили код графического интерфейса, он должен выглядеть примерно так:

FyVf-GWVdug0wuVsY7tIJrmjP4PJdVvJwvmU

Однако ввод текста в метки или нажатие кнопки «Отправить» на этом этапе ничего не даст. Поскольку интерфейс не подключен к коду.

Чтобы сохранить пользовательские данные в метках, нам нужно использовать .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, который выступает за использование фильтрованной водопроводной воды вместо бутилированной. Вот скриншот профиля.

DzAOfETdkXdCFlKhwI3Fh1LBl-cIw9VdRLKX

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *