Stvorite Twitter bota u Pythonu koristeći Tweepy

Budući da se oko 15% Twittera sastoji od botova, želio sam se okušati u tome. Guglao sam kako stvoriti Twitter bota i doveden sam do čisto postavljene web aplikacije. Omogućilo vam je izradu bota koji bi želio, slijedio ili ponovno tweetovao tweet na temelju ključne riječi. Problem je bio u tome što ste mogli stvoriti samo jednog bota za jednu funkciju.

Stoga sam odlučio sam kodirati bota s Pythonom i bibliotekom Tweepy.

Postaviti

Prvo sam preuzeo Tweepy. To možete učiniti pomoću upravitelja paketa pip.

pip install tweepy

Također možete klonirati GitHub spremište ako nemate instaliran pip.

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

Morat ćete uvesti Tweepy i Tkinter (za GUI sučelje).

import tweepyimport Tkinter

Vjerodajnice

Dalje, moramo povezati svoj Twitter račun s našom Python skriptom. Idite na apps.twitter.com i prijavite se svojim računom. Stvorite Twitter aplikaciju i generirajte Potrošački ključ, Potrošačku tajnu, Pristupni žeton i Pristupni žeton. Sada ste spremni za početak!

Ispod vaših izjava o uvozu pohranite vjerodajnice unutar varijabli, a zatim upotrijebite drugi blok koda za autentifikaciju računa s 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)

Da biste provjerili radi li vaš program, možete dodati:

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

To bi trebalo vratiti ime vašeg Twitter računa u konzoli.

Izgradnja bota

Ovaj bot je namijenjen:

  1. Slijedite sve koji vas prate.
  2. Favorite i proslijedite Tweet na osnovu ključnih riječi.
  3. Odgovorite korisniku na temelju ključne riječi.

Prvi korak je najlakši, jednostavno provučete kroz svoje sljedbenike, a zatim slijedite svakog od njih.

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

U ovom trenutku, kako biste bili sigurni da vaš kod funkcionira, trebate se prijaviti na Twitter i gledati kako se povećavaju ljudi koje pratite.

Od ovog trenutka nadalje, osim postavljanja i pakiranja naljepnica u GUI, kodiram svepod funkcijom mainFunction().

def mainFunction(): #The code

Možda ćete moći vidjeti kamo ovo vodi. Da bismo tweet označili kao omiljeni ili ga ponovno proslijedili, možemo koristiti for petlju i pokušaj izraza poput ovog:

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

Da biste tweet označili kao omiljeni, možete jednostavno zamijeniti

tweet.retweet()

s

tweet.favorite()

Da bismo korisniku odgovorili na temelju ključne riječi, moramo pohraniti korisničko ime i twitter ID korisnika.

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

Tada možemo prolaziti kroz tweetove i ažurirati svoj status (tweet) kod svakog korisnika.

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

Ako želite koristiti skriptu samo preko terminala i ažurirati kôd svaki put kad je želite pokrenuti, dovršili ste bota.

Izrada GUI-ja

Možemo stvoriti GUI aplikaciju koja će uzeti naše unose za ključnu riječ koju biste željeli tražiti i želite li dodati tweet u svoje favorite ili ne.

Prvo moramo inicijalizirati Tkinter i postaviti izgled.

Da bismo stvorili svoje korisničko sučelje, imat ćemo sedam oznaka za pretraživanje, broj tweetova i odgovor. Uz to, na pitanja želite li odgovoriti, označiti ih omiljenim, ponoviti tweet i slijediti korisnika.

Zapamtite da je kod ispod izvan i iznad našeg 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)

Također moramo spakirati svaku naljepnicu tako da se prikaže, a zatim pozvati root funkciju u petlju tako da ostane na zaslonu i da se ne zatvori odmah.

Slijedi kako izgleda pakiranje prve naljepnice. Spakirao sam sve naljepnice ispod mainFunction().

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

If you only ran your GUI code, it should look something like this:

However, inputing text into the labels or clicking the submit button will do nothing at this point. As the interface is not yet connected to the code.

In order to store the user input in the labels, we need to use the .get() function. I used individual functions for each label.

def getE1(): return E1.get()

Then in my mainFunction(), I called the function getE1() and stored the input into a variable. For E1 it looks like this:

getE1()search = getE1()

You must do this for every label. For the numberOfTweets label make sure to convert the input into an integer.

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

For the last four labels (Reply, Favorite, Retweet and Follow), we need to check to see if the input from the user is “yes” or “no” in order to run that given function or not. This can be accomplished through if statements.

This would be the code for the reply function:

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

For the favorite, retweet and follow functions simply replace the reply with “retweet”, “favorite” and “follow”. Then copy and paste the code you wrote above for each one underneath the if statement.

Now we just need to add the submit button and tell it to call the mainFunction() and execute the code for our Twitter Bot. Again, don’t forget to pack it!

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

That’s it! After you run your bot script, a GUI application should run and you will be able to reply, retweet, favorite and follow users.

With this Twitter Bot, I have created the account FreeWtr which advocates for use of filtered tap water over bottled water. Here is a screenshot of the profile.

Here is the full source code on Github.