Рубрики
Без рубрики

Создайте бот Twitter в Python, используя Tweepy

Автор оригинала: FreeCodeCapm Team.

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

Около 15% из Twitter состоит из ботов, я хотел попробовать мою руку. Я поглотил, как создать в Twitter Bot и был доставлен в чисто выложенное веб-приложение. Это позволило вам создать бот, который хотелось бы, следовать или ретвиднуть Tweet на основе ключевого слова. Проблема заключалась в том, что вы можете создать только один бот для одной функции.

Поэтому я решил кодировать бот сам с Python и Tweepy Library.

Настраивать

Во-первых, я скачал Tweepy. Вы можете сделать это, используя диспетчер пакетов PIP.

pip install tweepy

Вы также можете клонировать репозиторий GitHub, если у вас нет установленных PIP.

git clone https://github.com/tweepy/tweepy.gitcd 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 и посмотреть, как люди, которых вы следуете увеличению.

С этого момента награды, помимо настройки и упаковки на этикетки в графическом интерфейсе, я кодирую все Под функцией Основная функция () Отказ

def mainFunction():    #The code

Возможно, вы сможете увидеть, где это происходит. Для того, чтобы любить или ретвит чирикать, мы можем использовать петлю для петли, а также подобное заявление:

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

Затем мы можем зацикливаться через твиты и обновлять наш статус (Tweet) у каждого пользователя.

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 и настроить макет.

Чтобы создать наш пользовательский интерфейс, у нас будет семь ярлыков для поиска, количество твитов и ответа. Плюс вопросы, которые вы хотите ответить, любимые, ретвидят Tweet и следуйте пользователю.

Помните код ниже снаружи и выше наше Основная функция () Отказ

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)

Нам также нужно пакет Каждая этикетка, так что они отображаются, а затем вызывают корневую функцию в петле, чтобы она оставалась на экране и не сразу закрывается.

Ниже приведено что Упаковка Первая этикетка выглядит как. Я упаковал все этикетки ниже Основная функция () Отказ

label1.pack()E1.pack()
root.mainloop()

Если вы только провели только код GUI, он должен выглядеть что-то подобное:

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

Чтобы хранить ввод пользователя в этикетках, нам нужно использовать .get () функция. Я использовал отдельные функции для каждой этикетки.

def getE1():    return E1.get()

Тогда в моем Основная функция () Я назвал функцию 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

Для любимой, ретвит и следуйте функциям просто замените Ответить С «ретвидью», «любимым» и «следовать». Затем скопируйте и вставьте код, который вы написали выше для каждого подъема Если утверждение.

Теперь нам просто нужно добавить Отправить кнопка и скажи ему позвонить в Основная функция () и выполнить код для нашего бота в Twitter. Опять не забудьте упаковать его!

submit = Button(root, text ="Submit", command = mainFunction)

Это оно! После того, как вы запустите свой скрипт бота, необходимо запустить приложение GUI, и вы сможете ответить, ретвит, любимые и следующие пользователи.

С этим ботом Twitter я создал аккаунт Freewtr которые выступают за использование фильтрованной водопроводной воды над водой в бутылках. Вот скриншот профиля.

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