So erstellen Sie einen Twitterbot mit Python 3 und der Tweepy-Bibliothek

Einführung

Ein Twitterbot ist ein Programm, das sich in die Twitter-Plattform einfügt und automatisch andere Benutzer postet, retweetet, mag oder ihnen folgt. Twitterbots können sich als nützlich erweisen, indem sie interessante Informationen oder Updates bereitstellen, und sie können auch lustig oder humorvoll sein.

Es ist wichtig, beim Erstellen von Twitterbots vorsichtig zu sein, da Belästigung und Spam nicht nur in Ordnung sind, sondern auch dazu führen, dass Ihr Twitterbot-Konto wegen Verstoßes gegen die Nutzungsbedingungen von Twitter gesperrt wird. Bevor Sie einen Twitterbot erstellen, sollten Sie sich mit den Automationsregeln und Best Practices von Twitter vertraut machen, um sicherzustellen, dass Ihr Twitterbot ein gutes Mitglied der Twitter-Community ist.

Dieses Tutorial führt Sie durch zwei Twitterbot-Programme, eines, das https://www.digitalocean.com/community/tutorials/how-to-create-a-twitterbot-with-python-3-and-the-tweepy-library# twitterbot-that-tweets-from-a-file [Tweets aus einer Datei] und eine, die https://www.digitalocean.com/community/tutorials/how-to-create-a-twitterbot-with-python-3 -und-die-Tweepy-Bibliothek # twitterbot-dass-Retweets, -folgen, -und-Favoriten [Retweets, folgen und Favoriten]. Außerdem werden wir storing durchgehen Ihre Anmeldeinformationen in einer separaten Programmdatei und https://www.digitalocean.com/community/tutorials/how-to-create-a-twitterbot-with-python-3-and-the-tweepy-library#keeping- the-twitterbot-running [Den Twitterbot auf einem Server laufen lassen]. Jeder dieser Schritte ist optional, wird jedoch in der Reihenfolge angezeigt, in der Sie sie ausführen würden.

Voraussetzungen

Sie können zwar einen lokalen Computer zum Einrichten und Ausführen eines Twitterbots verwenden, möchten jedoch, dass dieser kontinuierlich ausgeführt wird, eine https://www.digitalocean.com/community/tutorials/how-to-install-python-3- Das Einrichten einer Programmierumgebung auf einem Ubuntu-16-04-Server [Python-Programmierumgebung auf einem Server] wäre ideal für dieses Projekt.

Darüber hinaus sollten Sie über ein https://twitter.com [Twitter] -Konto verfügen, das mit einer gültigen Telefonnummer verknüpft ist, die Sie im Abschnitt * https: //twitter.com/settings/devices [Mobile] * von hinzufügen können Ihre * Einstellungen *, wenn Sie angemeldet sind. Sie müssen eine Twitter-App erstellen und die Python Tweepy-Bibliothek installieren. Dies können Sie unter folgendem Link tun: https://www.digitalocean.com/community/tutorials/how-to-create-a-twitter-app [ So erstellen Sie eine Twitter-App] ”. Sie sollten Ihren Consumer Key, das Consumer Secret, das Access Token und das Access Token Secret in der Hand haben, bevor Sie mit diesem Lernprogramm beginnen.

Im Rahmen dieses Projekts verwenden wir Python zum Lesen von Dateien. Um sich mit der Arbeit mit Textdateien in Python vertraut zu machen, lesen Sie unsere „https://www.digitalocean.com/community/tutorials/how-to-handle-plain-text-files-in-python-3[How To“ Behandeln von Nur-Text-Dateien in Python 3].

Anmeldeinformationen speichern

Sie können Ihren Twitter-Verbraucherschlüssel, das Verbrauchergeheimnis, das Zugriffstoken und das Zugriffstoken oben in Ihrer Programmdatei geheim halten. Für bewährte Methoden sollten Sie diese jedoch in einer separaten Python-Datei speichern, auf die unsere Hauptprogrammdatei (en) zugreifen können . Jeder, der Zugriff auf diese strings hat, kann Ihr Twitter-Konto verwenden, sodass Sie diese oder nicht freigeben möchten mach sie öffentlich. Zusätzlich zur Sicherheit können wir durch die Speicherung einer separaten Datei problemlos auf unsere Anmeldeinformationen in jeder von uns erstellten Programmdatei zugreifen.

Zunächst sollten wir sicherstellen, dass wir uns mit der installierten Tweepy-Bibliothek in unserer virtuellen Umgebung befinden. Wenn die Umgebung aktiviert ist, können wir ein Verzeichnis für unser Projekt erstellen, um es organisiert zu halten:

mkdir twitterbot
cd twitterbot

Als nächstes öffnen wir einen Texteditor wie nano und erstellen die Datei "+ credentials.py +", um diese Anmeldeinformationen zu speichern:

nano credentials.py

Wir erstellen variables für jeden Schlüssel, jedes Geheimnis und jeden Token, den wir generiert haben (falls erforderlich) Um diese zu generieren, folgen Sie https://www.digitalocean.com/community/tutorials/how-to-create-a-twitter-app#step-2-%E2%80%94-modify-your-application%E2%80 % 99s-Berechtigungsstufe-und-generieren-Sie-Ihre-Zugriffstoken [diese Schritte]. Ersetzen Sie die Elemente in einfachen Anführungszeichen durch Ihre eindeutigen Zeichenfolgen von der Twitter-Apps-Website (und behalten Sie die einfachen Anführungszeichen bei).

credentials.py

consumer_key = ''
consumer_secret = ''
access_token = ''
access_token_secret = ''

Wir werden diese Variablen in unseren anderen Programmdateien aufrufen. Durch das Erstellen dieser separaten Datei "+ credentials.py" können wir sie auch zu Ihrer Datei "+ .gitignore" hinzufügen, falls wir vorhaben, unseren Code über Git freizugeben.

Twitterbot, der aus einer Datei Tweets

Wir können Pythons Fähigkeit nutzen, mit Dateien umzugehen und sie zu lesen, um unseren Twitter-Status zu aktualisieren. In diesem Beispiel wird eine bereits vorhandene Datei verwendet. Möglicherweise möchten Sie jedoch eine eigene Datei erstellen oder eine vorhandene Datei ändern.

Einrichten der Programmdatei

Beginnen wir mit der Erstellung unserer Programmdatei mit einem Texteditor wie nano:

nano twitterbot_textfile.py

Als nächstes richten wir unsere Twitter-Anmeldeinformationen ein, indem wir sie entweder oben in unsere Datei einfügen oder das importieren, was wir in der Datei "+ credentials.py +" gespeichert haben, die wir in der https://www.digitalocean.com/community eingerichtet haben / tutorials / erstelle-einen-twitterbot-mit-python-3-und-der-tweepy-bibliothek # speichere-anmeldeinformationen [abschnitt oben]. Wir werden auch 3 Zeilen hinzufügen, um mit den Berechtigungsnachweisvariablen über die Tweepy-Bibliothek zu interagieren.

twitterbot_textfile.py

# Import our Twitter credentials from credentials.py
from credentials import *

# Access and authorize our Twitter credentials from credentials.py
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)

Weitere Informationen zu diesem Setup finden Sie unter „https://www.digitalocean.com/community/tutorials/how-to-create-a-twitter-app#step-4-%E2%80 % 94-eine-Python-Anwendung-erstellen-die-mit-Twitter-interagiert [So erstellen Sie eine Twitter-App]. “Weitere Informationen zu OAuth finden Sie unter https://www.digitalocean.com/community/ Tutorials / eine-Einführung-in-oauth-2 [unsere Einführung].

Abrufen einer Textdatei zum Lesen

Für diesen Twitterbot benötigen wir eine Textdatei, aus der wir lesen können. Laden Sie sich also eine von Project Gutenberg herunter, einem Freiwilligenprojekt, das den Lesern kostenlose eBooks (meistens im öffentlichen Bereich) zur Verfügung stellt. Speichern wir eine englische Übersetzung von _http: //www.gutenberg.org/ebooks/164 [Twenty Thousand Leagues under the Sea] _ von Jules Verne als Datei mit dem Namen "+ verne.txt " mit " curl +":

curl http://www.gutenberg.org/cache/epub/164/pg164.txt --output verne.txt

Wir werden Pythons Dateihandhabungsfunktionen verwenden, zunächst unter https://www.digitalocean.com/community/tutorials/how-to-handle-plain-text-files-in-python-3#step-2-%E2 % 80% 94-opening-a-file [Datei öffnen], dann zu https://www.digitalocean.com/community/tutorials/how-to-handle-plain-text-files-in-python-3# Schritt-3-% E2% 80% 94-Datei lesen [Zeilen aus der Datei lesen] und schließlich zu https://www.digitalocean.com/community/tutorials/how-to-handle-plain-text -files-in-python-3 # step-5-% E2% 80% 94-Datei schließen [Datei schließen].

Öffnen und Lesen der Datei mit Python

Wenn unsere Datei heruntergeladen ist, können wir Variablen erstellen und die relevanten Funktionen unterhalb der Zeilen hinzufügen, die wir gerade für die Verarbeitung von Anmeldeinformationen eingerichtet haben.

twitterbot_textfile.py

from credentials import *

auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)

# Open text file verne.txt (or your chosen file) for reading


# Read lines one by one from my_file and assign to file_lines variable


# Close file

Mit dieser Einstellung können wir nun daran arbeiten, Code hinzuzufügen, damit diese Zeilen als Statusaktualisierungen in unserem Twitter-Konto ausgegeben werden.

Tweeten von Zeilen aus der Textdatei

Da unsere Dateizeilen in einer Variablen gespeichert sind, können wir Ihr Twitter-Bot-Konto aktualisieren.

Wir werden die Tweepy-Bibliothek verwenden, um mit der Twitter-API zu interagieren. Daher sollten wir import the library in unser Programm.

Wir werden auch unser Tweeting zeitbasiert automatisieren, also sollten wir das Modul "+ time " importieren. Für unsere Zwecke verwenden wir nur die Funktion " sleep () +". Daher importieren wir nur diese bestimmte Methode.

twitterbot_textfile.py

# Add all import statements at top of file


from credentials import *
...

Die Statusaktualisierungen unseres Twitter-Kontos werden aus den Zeilen von "+ verne.txt " stammen, die wir der Variablen " file_lines " zugewiesen haben. Diese Zeilen müssen durchlaufen werden, daher erstellen wir zunächst eine https://www.digitalocean.com/community/tutorials/how-to-construct-for-loops-in-python-3 [` for ` Schleife]. Um sicherzustellen, dass alles funktioniert, verwenden wir die Funktion " print () +", um diese Zeilen auszudrucken:

twitterbot_textfile.py

import tweepy
from time import sleep
from credentials import *

auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)

my_file=open('verne.txt','r')
file_lines=my_file.readlines()
my_file.close()

# Create a for loop to iterate over file_lines

Wenn Sie das Programm zu diesem Zeitpunkt mit dem Befehl "+ python twitter_textfile.py " ausführen, wird die gesamte " verne.txt +" - Datei auf Ihrem Terminalfenster ausgegeben, da wir keinen anderen Code haben oder ihn zum Beenden auffordern.

Anstatt die Ausgabe in unserem Terminalfenster zu erhalten, soll jede Zeile ein neuer Tweet werden. Um dies zu erreichen, müssen wir die Tweepy-Funktion "+ api.update_status () +" verwenden. Dies wird verwendet, um den Status des authentifizierten Benutzers zu aktualisieren, wird jedoch nur aktualisiert, wenn der Status entweder: 1) kein Duplikat oder 2) 140 Zeichen oder weniger ist.

Fügen wir diese Funktion hinzu und übergeben Sie die Variable "+ line +":

twitterbot_textfile.py

import tweepy
from time import sleep
from credentials import *

auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)

my_file=open('verne.txt','r')
file_lines=my_file.readlines()
my_file.close()

for line in file_lines:
   print(line)

Jetzt ist unser Programm so eingestellt, dass es Leitungen zu unserem Konto twittert.

Ausnahmebehandlung und Timing Tweets

Wenn wir zu diesem Zeitpunkt ein Arbeitsprogramm haben und den Code ausführen, wird die erste Zeile gedruckt. Wir werden jedoch nicht weit kommen, bevor wir eine Fehlermeldung erhalten:

Output...
tweepy.error.TweepError: [{'code': 170, 'message': 'Missing required parameter: status.'}]

Dies liegt daran, dass die zweite Zeile in der Datei eine leere Zeile ist, die nicht als Status verwendet werden kann. Um dieses Problem zu beheben, drucken wir die Zeile nur, wenn es sich nicht um eine leere Zeile handelt. Wir fügen eine "+ if" -Anweisung hinzu, die so aussieht:

if line != '\n':

In Python steht "+ \ n " für https://www.digitalocean.com/community/tutorials/how-to-format-text-in-python-3#escape-characters[escape character] für Leerzeilen unsere ` if ` Anweisung sagt dem Programm, wenn die Zeile nicht gleich (`! = +`) einer Leerzeile ist, sollten wir fortfahren und sie ausdrucken. Andernfalls sollte Python die Zeile ignorieren. Wir werden uns die Aussage unten im Kontext ansehen.

Eine weitere Sache, die wir hinzufügen sollten, ist "+ sleep () ", um sicherzustellen, dass diese Tweets nicht alle auf einmal ausgehen. Die Funktion ` sleep () ` arbeitet mit dem Zeiteinheitsmaß von Sekunden. Wenn wir also eine Stunde zwischen Tweets möchten, sollten wir die Funktion als ` sleep (3600) +` schreiben, da eine Stunde 3.600 Sekunden hat.

Verwenden wir zu Testzwecken (und nur zu Testzwecken) stattdessen 5 Sekunden. Sobald wir unseren Twitterbot regelmäßig ausführen, möchten wir die Zeit zwischen Tweets erheblich verlängern.

Sie können damit herumspielen, wo Sie + sleep (5) + hinzufügen - wo wir es unten platziert haben, kommt es zu einer etwas größeren Verzögerung zwischen den Tweets, da es zu einer Verzögerung kommt, selbst wenn die Zeile leer ist.

twitterbot_textfile.py

import tweepy
from time import sleep
from credentials import *

auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)

my_file=open('verne.txt','r')
file_lines=my_file.readlines()
my_file.close()

for line in file_lines:
 print(line)

# Add if statement to ensure that blank lines are skipped

     api.update_status(line)

# Add an else statement with pass to conclude the conditional statement



# Add sleep method to space tweets by 5 seconds each

Wenn Sie das Programm zu diesem Zeitpunkt ausführen - wenn Sie es zuvor noch nicht ausgeführt haben - werden die ersten Zeilen der Datei auf Ihrem Terminal ausgegeben. Diese Zeilen werden auch auf Ihrem authentifizierten Twitter-Konto veröffentlicht.

Wenn Sie das Programm jedoch bereits ausgeführt haben, wird möglicherweise die folgende Fehlermeldung angezeigt:

Outputtweepy.error.TweepError: [{'code': 187, 'message': 'Status is a duplicate.'}]

Sie können dies beheben, indem Sie entweder Ihren vorherigen Tweet aus Ihrem Twitter-Konto löschen oder indem Sie die erste Zeile Ihrer Datei "+ verne.txt +" löschen und speichern.

Um zu verhindern, dass das Programm Statusaktualisierungen an Ihr Twitter-Konto ausgibt, halten Sie die Tasten "+ STRG " (oder " Steuerung ") und " C +" gleichzeitig auf Ihrer Tastatur gedrückt, um den Vorgang in Ihrem Terminalfenster zu unterbrechen.

Zu diesem Zeitpunkt kann Ihr Programm ausgeführt werden. Wir werden jedoch den Fehler behandeln, der auftritt, wenn der Status ein Duplikat ist. Dazu fügen wir ein "+" hinzu …​ Mit Ausnahme von + `blockieren Sie unseren Code und lassen Sie die Konsole den Grund für den Fehler ausdrucken.

twitterbot_textfile.py

import tweepy
from time import sleep
from credentials import *

auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)

my_file=open('verne.txt','r')
file_lines=my_file.readlines()
my_file.close()

for line in file_lines:
# Add try ... except block to catch and output errors

       print(line)
       if line != '\n':
           api.update_status(line)
       else:
           pass


   sleep(5)

Wenn Sie das Programm jetzt ausführen, werden Ausnahmen behandelt, damit Sie das Programm weiter ausführen können. Sie können die Zeit zwischen Tweets auf beispielsweise 15 Minuten ändern, indem Sie die Funktion "+ sleep (5) " in " sleep (900) +" ändern.

Verbesserung des Twitterbot-Programms

Um Ihr Programm weiter zu verbessern, können Sie erwägen, einige dieser Codeblöcke als Funktionen zu definieren und zusätzliche "+ sleep () +" - Funktionen hinzuzufügen, um unterschiedliche Situationen zu bewältigen, wie in:

twitterbot_textfile.py

...
# Tweet a line every 15 minutes

   for line in file_lines:
       try:
            print(line)
            if line != '\n':
                api.update_status(line)

            else:
               pass
       except tweepy.TweepError as e:
           print(e.reason)

Während Sie weiterhin mit Dateien in Python arbeiten, können Sie separate Skripte erstellen, um die Zeilen Ihrer Dateien auf eine Weise zu teilen, die für Sie sinnvoller ist, wobei Sie die maximale Anzahl von Tweets mit 140 Zeichen berücksichtigen.

Zu diesem Zeitpunkt haben wir einen voll funktionsfähigen Twitterbot, der aus einer Quelldatei twittert. Im nächsten Abschnitt gehen wir auf einen alternativen Twitterbot ein, der Retweets, Followings und Favoriten enthält. Sie können auch zu dem Abschnitt unter https://www.digitalocean.com/community/tutorials/how-to-create-a-twitterbot-with-python-3-and-the-tweepy-library#keeping-the springen -twitterbot-running [Den Twitterbot am Laufen halten].

Twitterbot, der Retweets, Follows und Favoriten erstellt

Mithilfe der Tweepy-Bibliothek können wir einen Twitterbot einrichten, der die Tweets anderer retweeten und favorisieren sowie anderen Benutzern folgen kann. In unserem Beispiel basieren diese Verhaltensweisen auf der Abfrage eines Suchbegriffs in Form eines Hashtags.

Einrichten der Programmdatei

Zunächst erstellen wir eine Python-Datei mit dem Namen "+ twitterbot_retweet.py ". Wir sollten entweder unsere Anmeldeinformationen oben in die Datei einfügen oder unsere Importanweisungen und den Zugriff auf alle unsere Schlüssel, Geheimnisse und Token über die Datei " credentials.py +" hinzufügen, die wir in der Datei "https: //www.digitalocean" erstellt haben .com / community / tutorials / Wie erstelle ich einen Twitterbot mit Python 3 und der Tweepy-Bibliothek? Wir werden auch 3 Zeilen hinzufügen, um mit den Berechtigungsnachweisvariablen über die Tweepy-Bibliothek zu interagieren.

twitterbot_retweet.py

# Import Tweepy, sleep, credentials.py
import tweepy
from time import sleep
from credentials import *

# Access and authorize our Twitter credentials from credentials.py
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)

Weitere Informationen zu diesem Setup finden Sie unter „https://www.digitalocean.com/community/tutorials/how-to-create-a-twitter-app#step-4-%E2%80 % 94-eine-Python-Anwendung-erstellen-die-mit-Twitter-interagiert [So erstellen Sie eine Twitter-App]. “Weitere Informationen zu OAuth finden Sie unter https://www.digitalocean.com/community/ Tutorials / eine-Einführung-in-oauth-2 [unsere Einführung].

Suchen von Tweets basierend auf einer Abfrage

Als Nächstes erstellen wir eine for-Schleife, die über Tweets iterieren kann. Wir werden uns Tweets ansehen, die das Hashtag "#ocean" haben. Daher verwenden wir "+ q =" # ocean "+", um diese Abfrage als Teil unserer Parameter auszuführen. Lassen Sie unser Terminal zunächst die Benutzernamen für Tweets ausdrucken, die das Hashtag #ocean verwenden, und dann die Anzahl der zurückgegebenen Elemente (oder Tweets) auf 10 begrenzen, damit die Ausgabe nicht lange anhält:

# For loop to iterate over tweets with #ocean, limit to 10
for tweet in tweepy.Cursor(api.search,q='#ocean').items(10):

# Print out usernames of the last 10 people to use #ocean
   print('Tweet by: @' + tweet.user.screen_name)

Es gibt viele zusätzliche Parameter, die wir zu unserer for-Schleife hinzufügen können, darunter:

  • einen Datumsbereich mit + since und` + until` (Beachten Sie jedoch, dass Tweets aufgrund der Einschränkungen der API nicht früher als in der Vorwoche sein dürfen)

  • Ein "+ Geocode +", der den Breitengrad, den Längengrad und einen gegebenen Radius um diesen Ort in Kilometern angibt

  • eine bestimmte Sprache unter Verwendung von "+ lang +" und Festlegen des 2-Buchstaben-Zeichens "https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes[ISO 639-1 code" für die Sprache, die Sie festlegen möchten

Während dieses spezielle Szenario * eigentlich keine Ergebnisse liefert *, behalten wir unsere Abfrage von #ocean bei. Geben Sie dann einen Zeitraum von zwei Tagen für das Abrufen von Tweets an, beschränken Sie unseren Standort auf 100 km um Singapur und fragen Sie nach französischsprachigen Tweets. Um herumzuspielen, sollten Sie jede Saite austauschen, um Ergebnisse zu erhalten, die für Sie von Bedeutung sind.

for tweet in tweepy.Cursor(api.search,
                          q='',
                          since='',
                          until='',
                          geocode='1.3552217,103.8231561,100km',
                          lang='fr').items(10):
   print('Tweet by: @' + tweet.user.screen_name)

Weitere Informationen zu den verschiedenen Parametern, die Sie für diese und andere Tweepy-Funktionen verwenden können, finden Sie unter Tweepy API Reference.

In unserem Beispielprogramm suchen wir nur nach der #ocean-Abfrage. Sie können die Methode + .items () + offen lassen, aber möglicherweise wird die folgende Fehlermeldung angezeigt, wenn Sie zu viele Anforderungen gestellt und die Ressource erschöpft haben:

Outputtweepy.error.TweepError: Twitter error response: status code = 429

Alle Fehlercodes und Antworten sind über die Tweepy API verfügbar.

Ausnahmebehandlung

Um unseren Code zu verbessern, anstatt nur den zugehörigen Twitter-Benutzernamen auszudrucken, verwenden wir eine Fehlerbehandlung mit einem "" -Versuch ... außer + `Block. Wir werden auch eine " StopIteration +" - Ausnahme hinzufügen, die die for-Schleife unterbricht.

twitterbot_retweet.py

import tweepy
from time import sleep
from credentials import *

auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)

for tweet in tweepy.Cursor(api.search, q='#ocean').items():

      print('Tweet by: @' + tweet.user.screen_name)

Jetzt können wir unseren Twitterbot anweisen, einige Aktionen basierend auf den gesammelten Daten durchzuführen.

Retweeting, Favorisieren und Folgen

Wir lassen zuerst die Twitterbot-Tweets mit der Funktion "+ .retweet () +" retweeten. Außerdem geben wir dem Terminal Feedback zu unseren Aktivitäten und fügen einen Zeilenumbruch hinzu, um die Ausgabe ein wenig besser zu organisieren:

twitter_retweet.py

import tweepy
from time import sleep
from credentials import *

auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)

for tweet in tweepy.Cursor(api.search, q='#ocean').items():
   try:
       # Add \n escape character to print() to organize tweets
       print('Tweet by: @' + tweet.user.screen_name)

       # Retweet tweets as they are found





   except tweepy.TweepError as e:
       print(e.reason)

   except StopIteration:
       break

Während das Programm ausgeführt wird, sollten Sie einen Browser öffnen, um zu überprüfen, ob diese Retweets in Ihrem Twitterbot-Konto veröffentlicht werden. Ihr Konto sollte nun mit Retweets gefüllt sein und ungefähr so ​​aussehen:

Wenn Sie das Programm mehrmals ausführen, werden Sie möglicherweise feststellen, dass der Twitterbot wieder dieselben Tweets findet. Aufgrund der Ausnahmebehandlung "+ tweepy.TweepError +" wird Ihr Twitterbot diese jedoch nicht erneut twittern und stattdessen die folgende Ausgabe bereitstellen:

Output[{'message': 'You have already retweeted this tweet.', 'code': 327}]

Wir können Funktionen hinzufügen, die es dem Twitterbot ermöglichen, den gefundenen Tweet zu favorisieren und dem Benutzer zu folgen, der den Tweet erstellt hat. Dies geschieht in einer ähnlichen Syntax und Art wie das Format für das Retweeten.

twitterbot_retweet.py

import tweepy
from time import sleep
from credentials import *

auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)

for tweet in tweepy.Cursor(api.search, q='#ocean').items():
   try:
       print('\nTweet by: @' + tweet.user.screen_name)

       tweet.retweet()
       print('Retweeted the tweet')

       # Favorite the tweet



       # Follow the user who tweeted



       sleep(5)

   except tweepy.TweepError as e:
       print(e.reason)

   except StopIteration:
       break

Möglicherweise stellen Sie fest, dass die Tweepy-Fehlerbehandlung folgende Benutzer nicht berücksichtigt, denen bereits gefolgt wurde. Daher können wir vor der Funktion "+ .user.follow () " eine " if +" -Anweisung einfügen:

...

           # Don't forget to indent
           tweet.user.follow()
           print('Followed the user')
...

Sie können diesen Code weiter nach Ihren Wünschen ändern und weitere Möglichkeiten zur Behandlung verschiedener Situationen einführen.

Nun wollen wir uns damit befassen, wie dieser Twitterbot auf unserem Server ausgeführt wird.

Den Twitterbot am Laufen halten

Da Twitterbots fortlaufende und automatisierte Aufgaben ausführen, möchten Sie das Programm möglicherweise auch dann weiter ausführen, wenn Ihr Computer in den Energiesparmodus versetzt oder ausgeschaltet wird. Mit einem Server können Sie Ihr Programm so lange ausführen, wie Sie möchten.

In diesem Beispiel verwenden wir die Datei "+ twitter_retweet.py ". Sie können jedoch auch die Datei " twitterbot_textfile.py +" oder eine andere von Ihnen erstellte Twitterbot-Datei verwenden. Stellen Sie sicher, dass alle zugehörigen Dateien im selben Verzeichnis des Servers verfügbar sind.

Um unser Twitterbot-Programm am Laufen zu halten, verwenden wir den Befehl "+ nohup ", der das HUP-Signal (Hangup) ignoriert. Wenn Sie " nohup " verwenden, wird die Ausgabe, die normalerweise im Terminalfenster angezeigt wird, stattdessen in eine Datei mit dem Namen " nohup.out +" gedruckt.

Stellen Sie sicher, dass Sie sich in Ihrer Python-Umgebung mit Zugriff auf die Tweepy-Bibliothek und in dem Verzeichnis befinden, in dem sich Ihre Python-Programmdatei befindet, und geben Sie den folgenden Befehl ein:

nohup python  &

Sie sollten eine Ausgabe mit einer Zahl in Klammern ("+ [1] +", wenn dies der erste Prozess ist, den Sie starten) und einer Folge von Zahlen erhalten:

Output[1]

Überprüfen Sie zu diesem Zeitpunkt, ob Ihr Twitterbot ausgeführt wird, indem Sie die Twitter-Seite Ihres Kontos überprüfen. Mindestens ein neuer Tweet sollte gepostet sein, bevor das Programm zu Ihrer Funktion + sleep () + gelangt. Wenn der neue Tweet nicht vorhanden ist, können Sie sich die Datei + nohup.out + mit einem Texteditor wie nano ansehen:

nano nohup.out

Überprüfen Sie, ob Fehler vorliegen, und nehmen Sie nach Bedarf Änderungen am Programm vor. Brechen Sie den Vorgang ab, führen Sie den Befehl "+ nohup +" erneut aus und suchen Sie in Ihrem Twitter-Konto nach einem neuen Tweet.

Sobald Sie überprüft haben, dass Ihr Twitterbot ausgeführt wird, schließen Sie die Verbindung zu Ihrem Server mit + logout +.

logout

Wenn Sie Ihren Prozess für längere Zeit ohne Überwachung ausführen und abhängig von der Kapazität Ihres Servers, kann + nohup.out + Ihren Festplattenspeicher ausfüllen. Wenn Sie möchten oder müssen, können Sie Ihren Twitterbot stoppen, indem Sie sich wieder bei Ihrem Server anmelden und den Befehl + kill + verwenden. Sie verwenden diesen Befehl mit der oben generierten Zahlenfolge. In unserem Beispiel würden wir "+ kill " verwenden. Da Sie diese Nummer möglicherweise nicht mehr zur Hand haben, können Sie die Zahlenfolge einfach abrufen, indem Sie den Befehl " ps " für den Prozessstatus und das Flag " -x +" ausführen, um alle Prozesse einzuschließen, die nicht an Terminals angeschlossen sind:

ps -x

Sie sollten eine Ausgabe erhalten, die ungefähr so ​​aussieht:

Output  PID TTY      STAT   TIME COMMAND
21658 ?        Ss     0:00 /lib/systemd/systemd --user
21660 ?        S      0:00 (sd-pam)

21764 ?        S      0:00 sshd: sammy@pts/0
21765 pts/0    Ss     0:00 -bash
21782 pts/0    R+     0:00 ps xw

Sie sollten sehen, dass Ihr Python-Programm ausgeführt wird. In unserem Fall befindet sich die ID in der dritten Zeile. Jetzt können wir den Prozess stoppen:

kill 21725

Wenn Sie den Befehl "+ ps -x +" erneut ausführen, ist der Prozess des Python-Twitterbots nicht mehr vorhanden.

Fazit

In diesem Tutorial wurden zwei verschiedene Versionen von Twitterbots eingerichtet und ausgeführt, um automatisch mit der Social-Media-Plattform von Twitter zu interagieren. Mit der Twitter-API und mit Bibliotheken wie Tweepy können Entwickler noch viel mehr auf Twitter zugreifen.

Von hier aus können Sie auch tiefer in die Tweepy-Bibliothek und die Twitter-API einsteigen, um Listen zu erstellen, Benutzer zu Listen hinzuzufügen, sich mit Direktnachrichten zu befassen und mit Twitter zu streamen, um Tweets in Echtzeit herunterzuladen. Sie können auch die Funktionalität der beiden oben erstellten Twitterbots kombinieren. Neben der Erstellung interaktiver Twitterbots können Sie mithilfe der Twitter-API auch umfangreiches Data Mining durchführen.