Hozzon létre egy Twitter botot a Pythonban a Tweepy használatával

Mivel a Twitter körülbelül 15% -a botokból állt, szerettem volna kipróbálni magam. Gugliztam, hogyan lehet létrehozni egy Twitter botot, és egy tisztán elrendezett webalkalmazáshoz kerültem. Lehetővé tette olyan bot létrehozását, amely egy kulcsszó alapján szeretne, követni vagy retweetelni egy tweetet. A probléma az volt, hogy csak egy botot hozhat létre egy funkcióhoz.

Ezért úgy döntöttem, hogy magam kódolok egy botot a Python és a Tweepy könyvtár segítségével.

Beállít

Először letöltöttem a Tweepy-t. Ezt a pip csomagkezelővel teheti meg.

pip install tweepy

Klónozhatja a GitHub adattárat is, ha nincs telepítve a pip.

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

Importálnia kell a Tweepy és a Tkinter programokat (a grafikus felülethez).

import tweepyimport Tkinter

Hitelesítő adatok

Ezután össze kell kapcsolnunk Twitter-fiókunkat a Python szkriptünkkel. Nyissa meg az apps.twitter.com webhelyet, és jelentkezzen be fiókjával. Hozzon létre egy Twitter alkalmazást, és hozzon létre egy fogyasztói kulcsot, egy fogyasztói titkot, egy hozzáférési tokent és egy hozzáférési token titkot. Most már készen áll a kezdésre!

Az importálási utasítások alatt tárolja hitelesítő adatait a változókban, majd a második kódblokk segítségével hitelesítse fiókját tweepy-vel.

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)

Annak ellenőrzéséhez, hogy a program működik-e, adjon hozzá:

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

Ennek vissza kell adnia Twitter-fiókjának nevét a konzolban.

A Bot építése

Ez a bot célja:

  1. Kövessen mindenkit, aki követ.
  2. Kedvenc és retweetelni egy tweetet kulcsszavak alapján.
  3. Kulcsszó alapján válaszoljon a felhasználónak.

Az első lépés a legegyszerűbb, egyszerűen hurok segítségével a követői és kövesse mindegyiket.

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

Ezen a ponton annak érdekében, hogy megbizonyosodjon arról, hogy a kód működik, jelentkezzen be a Twitterre, és figyelje, ahogy a követett emberek növekednek.

Ettől a ponttól kezdve, a címkék felállítása és a GUI-ba csomagolása mellett mindent kódoloka függvény alatt mainFunction().

def mainFunction(): #The code

Lehet, hogy láthatja, merre tart ez. Egy tweet kedvenceként vagy retweeteléséhez használhatunk egy for for ciklust és egy ilyen try állítást:

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

Annak érdekében, hogy kedvencét a tweetnek egyszerűen kicserélhesse

tweet.retweet()

val vel

tweet.favorite()

Ahhoz, hogy egy felhasználónak egy kulcsszó alapján válaszolhassunk, tárolnunk kell a felhasználó felhasználónevét és twitter azonosítóját.

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

Ezután áttekinthetjük a tweeteket, és minden felhasználónál frissíthetjük állapotunkat (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

Ha csak a terminálon keresztül szeretné használni a szkriptet, és minden alkalommal frissíteni szeretné a kódot, amikor futtatni kívánja, akkor befejezte a botot.

A GUI készítése

Létrehozhatunk egy GUI alkalmazást, amely beveszi a keresni kívánt kulcsszó beviteleit, és hogy szeretne-e kedvenc tweetet adni.

Először inicializálnunk kell a Tkintert és be kell állítanunk az elrendezést.

A felhasználói felületünk létrehozásához hét címkével látjuk el a keresést, a tweetek számát és a válaszokat. Ráadásul azokat a kérdéseket, amelyekre válaszolni akar, kedvencet, retweetelni a tweetet és követni a felhasználót.

Emlékezz az alábbi kódot a külső és a fenti a 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)

Ezenkívül minden egyes címkét be kell csomagolnunk , hogy azok megjelennek, majd egy hurokban meghívják a root függvényt, hogy az a képernyőn maradjon és ne záródjon be azonnal.

A következőképpen néz ki az első címke csomagolása . Az összes címkét összecsomagoltam a 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.