de Lucas Kohorst

Creați un bot Twitter în Python folosind Tweepy

Având în vedere că aproximativ 15% din Twitter este compus din roboți, am vrut să încerc cu asta. Am căutat pe Google cum să creez un bot Twitter și am fost adus într-o aplicație web bine pusă la punct. Acesta v-a permis să creați un bot care ar dori, urmări sau retweetează un tweet pe baza unui cuvânt cheie. Problema era că puteți crea un singur bot pentru o funcție.

Așa că am decis să codific eu însumi un bot cu Python și biblioteca Tweepy.

Înființat

În primul rând, am descărcat Tweepy. Puteți face acest lucru folosind managerul de pachete pip.

pip install tweepy

De asemenea, puteți clona depozitul GitHub dacă nu aveți pip instalat.

git clone https://github.com/tweepy/tweepy.gitcd tweepypython setup.py install

Va trebui să importați Tweepy și Tkinter (pentru interfața GUI).

import tweepyimport Tkinter

Acreditări

Apoi, trebuie să ne conectăm contul Twitter la scriptul nostru Python. Mergi la apps.twitter.com și conectați-vă cu contul dvs. Creați o aplicație Twitter și generați o cheie de consum, un secret al consumatorului, un token de acces și un secret de token de acces. Acum ești gata să începi!

Sub declarațiile de import, stocați acreditările în variabile și apoi utilizați al doilea bloc de cod pentru a vă autentifica contul cu 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)

Pentru a verifica dacă programul dvs. funcționează, puteți adăuga:

user = api.me()print (user.name)

Aceasta ar trebui să returneze numele contului dvs. Twitter în consolă.

Construirea Bot

Acest bot este destinat:

  1. Urmărește pe toți cei care te urmăresc.
  2. Favorite și Retweetează un Tweet pe baza cuvintelor cheie.
  3. Răspundeți unui utilizator pe baza unui cuvânt cheie.

Primul pas este cel mai ușor, pur și simplu buclă prin adepții tăi și apoi urmează-i pe fiecare.

for follower in tweepy.Cursor(api.followers).items():    follower.follow()    print ("Followed everyone that is following " + user.name)

În acest moment, pentru a vă asigura că codul dvs. funcționează, ar trebui să vă conectați la Twitter și să urmăriți cum oamenii pe care îi urmăriți cresc.

Începând cu acest moment, pe lângă configurarea și ambalarea etichetelor în GUI, codific totul sub funcție mainFunction().

def mainFunction():    #The code

S-ar putea să vedeți încotro merge acest lucru. Pentru a favoriza sau retweetează un tweet, putem folosi o buclă for și o declarație try ca aceasta:

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

Pentru a favoriza un tweet, puteți înlocui pur și simplu

tweet.retweet()

cu

tweet.favorite()

Pentru a răspunde unui utilizator pe baza unui cuvânt cheie, trebuie să stocăm numele de utilizator și ID-ul twitter.

tweetId = tweet.user.idusername = tweet.user.screen_name

Putem apoi să parcurgem tweet-urile și să ne actualizăm starea (tweet) la fiecare utilizator.

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

Dacă doriți să utilizați scriptul doar prin terminal și să actualizați codul de fiecare dată când doriți să îl rulați, atunci ați finalizat botul.

Crearea interfeței grafice

Putem crea o aplicație GUI care va prelua introducerea cuvântului cheie pe care doriți să îl căutați și dacă doriți sau nu să preferați un tweet.

Mai întâi trebuie să inițializăm Tkinter și să configurăm aspectul.

Pentru a crea interfața noastră de utilizator, vom avea șapte etichete pentru căutare, numărul de tweets și răspunsuri. În plus, întrebările pe care doriți să le răspundeți, să le preferați, să retweetează tweet-ul și să urmăriți utilizatorul.

Amintiți-vă că codul de mai jos este in afara și de mai sus al nostru 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)

De asemenea, trebuie ambalaj fiecare etichetă astfel încât să apară și apoi să apeleze funcția rădăcină într-o buclă, astfel încât să rămână pe ecran și să nu se închidă imediat.

Ceea ce urmează ambalare prima etichetă arată. Am ambalat toate etichetele de sub mainFunction().

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

Dacă ați rulat doar codul GUI, ar trebui să arate cam așa:

Creati un bot Twitter in Python folosind Tweepy

Cu toate acestea, introducerea textului în etichete sau apăsarea butonului de trimitere nu va face nimic în acest moment. Deoarece interfața nu este încă conectată la cod.

Pentru a stoca datele introduse de utilizator în etichete, trebuie să folosim .get() funcţie. Am folosit funcții individuale pentru fiecare etichetă.

def getE1():    return E1.get()

Apoi în a mea mainFunction(), Am numit funcția getE1() și a stocat intrarea într-o variabilă. Pentru E1 arată așa:

getE1()search = getE1()

Trebuie să faceți acest lucru pentru fiecare etichetă. Pentru numberOfTweets eticheta asigurați-vă că convertiți intrarea într-un număr întreg.

getE2()numberOfTweets = getE2()numberOfTweets = int(numberOfTweets)

Pentru ultimele patru etichete (Răspuns, Favorite, Retweet și Urmăriți), trebuie să verificăm dacă intrarea de la utilizator este „da” sau „nu” pentru a rula sau nu funcția dată. Acest lucru poate fi realizat prin dacă declarații.

Acesta ar fi codul pentru răspuns funcţie:

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

Pentru funcțiile favorite, retweet și urmăriți funcțiile, pur și simplu înlocuiți răspuns cu „retweet”, „favorite” și „follow”. Apoi copiați și lipiți codul pe care l-ați scris mai sus pentru fiecare sub dacă afirmație.

Acum trebuie doar să adăugăm Trimite și spuneți-i să apele mainFunction() și executați codul pentru botul nostru Twitter. Din nou, nu uitați să-l împachetați!

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

Asta este! După ce rulați scriptul bot, ar trebui să ruleze o aplicație GUI și veți putea răspunde, retweet, favorit și urmăriți utilizatorii.

Cu acest bot Twitter, am creat contul FreeWtr care pledează pentru utilizarea apei de la robinet filtrate peste apa îmbuteliată. Iată o captură de ecran a profilului.

1612192507 15 Creati un bot Twitter in Python folosind Tweepy

Aici este cod sursă complet pe Github.