Erstellen Sie einen Twitter-BOT mit dem GoogleAppEngine SDK für Python

Wir erstellen und betreiben Twitter BOT auf der Plattform von Google App Engine (GAE), die kostenlos zum Studium von Python verwendet werden kann. BOT verwendet Google Alerts, um regelmäßig Liebes-Live-Nachrichten zu murmeln. Konto: @ll_news_bot Quelle: GitHub

Notieren Sie sich das Verfahren zum Betreiben von BOT mit dem GAE SDK für Python.

BOT-Spezifikationen

Die endgültigen Spezifikationen des diesmal erstellten BOT lauten wie folgt.

Vorbereitungen

Google-Benachrichtigung

Erstellen Sie neue Nachrichten aus Google Alerts. Stellen Sie zu diesem Zeitpunkt das Lieferziel auf ** Feed ** ein.

Umgebung

Ich benutze die folgende Umgebung für die lokale Entwicklung.

Twitter

GoogleAppEngine Erstellen Sie eine neue Anwendung für BOT unter appengine.google.com. Die zu diesem Zeitpunkt eingegebene * Anwendungskennung * wird beim Erstellen einer neuen Anwendung mit dem GAEL-Starter als * Anwendungs-ID * verwendet.

Externes Modul

Wir haben die folgenden Module von Drittanbietern für die BOT-Entwicklung verwendet. Es gibt zwei Arten von Modulen: den Python-Wrapper der Twitter-API und den RSS-Feed-Parser.

Da das oben genannte Modul zusammen mit der Webanwendung auf GAE bereitgestellt werden muss, Nach der Installation oder dem Aufbau des Moduls musste ich es in das Projekt kopieren.

BOT-Implementierung

Die Funktionen des erstellten BOT sind größtenteils "Murmeln aus RSS-Feed" und "Betrieb der Twitter-API". Daher werden wir für jeden dieser Prozesse Module erstellen.

Vorschubmodul

Dieses Modul verwendet das Modul * feedparser *, um RSS-Feeds zu analysieren und murmelnde Inhalte zu erstellen. Wir suchen regelmäßig nach neuen Einträgen und verwenden daher * DataStore *, um doppeltes Murmeln zu vermeiden.

class FeedFetcher(object):
    '''Klasse zum Parsen von RSS-Feeds für Google Alerts'''

  	def fetch_new_entries(self):
    '''Erhalten Sie neue Einträge aus dem Google Alert RSS-Feed.'''
	#Kürzung
	return new_entory

class Entry(object):
    '''Klasse zum Speichern geparster Eintragsinformationen'''
    
 	def make_tweets(self):
	'''Erstellen Sie murmelnde Inhalte'''
	return #Gemurmel

#Wie benutzt man
fetcher = FeedFetcher()
new_entries = fetcher. fetch_new_entries()
for entry in new_entries:
	print entry.make_tweet()

Bot-Modul

In diesem Modul verpacken wir das Python-Twitter-Modul, damit Sie leicht auf die erforderliche API zugreifen können. Darüber hinaus werden die zum Zeitpunkt der Vorbereitung erhaltenen Twitter-Authentifizierungsinformationen an die Python-Twitter-API übergeben. Dies ist Referenz, und wenn Sie Python-Twitter mit GAE verwenden, wird es nicht zwischengespeichert. ..

class TwitterBot(object):
    '''Klassen zum Murmeln auf Twitter, zum erneuten Befolgen und Entfolgen von Benutzern'''

	def tweet(self, message):
	'''Murmeln Sie den Zielinhalt auf Twitter'''
	#Kürzung

	def get_not_follow_users(self):
	'''Rufen Sie die ID-Liste der nicht verfolgten Benutzer ab'''
	return #Nicht verfolgte Benutzer-ID-Liste

	def refollow(self, not_follow_id):
	'''Folgen Sie dem Zielbenutzer'''
	#Kürzung

	# ...Kürzung

#Wie benutzt man
bot = TwitterBot()
fetcher = FeedFetcher()
bot.tweet(fetcher. fetch_new_entries[0].make_tweet)
bot.refollow(bot. get_not_follow_users()[0])

Handler anfordern

Erstellen Sie zunächst eine * app.yaml * -Datei für die URL-Zuordnung. Wenn die Anmeldung auf admin eingestellt ist, wird die Anfrage erst gesendet, wenn Sie die URL im Browser drücken, es sei denn, Sie authentifizieren Ihr Konto. Schreiben Sie im Skript den Objektnamen * WSGIApplication *, der den Modulnamen und die URL zuordnet.

application: ll-news-bot
version: 8
runtime: python27
api_version: 1
threadsafe: true

handlers:
- url: /
  script: tweet.app
  login: admin

- url: /tweet
  script: tweet.app
  

Erstellen Sie auf der Python-Seite eine Klasse, die * RequestHandler * erbt, und schreiben Sie die Handle-Verarbeitung der get- oder post-Methode. Ich rufe die Twitter-API nicht in großer Anzahl gleichzeitig auf, sondern verwende Aufgabenwarteschlangen zum Lernen. Wenn die Aufgabe ausgeführt wird, wird eine POST-Methodenanforderung an die angegebene URL gesendet.

tweet.py


class MainHandler(webapp2.RequestHandler):    
    def get(self):
		 taskqueue.add(queue_name='tweet', url='/tweet', params={'message': u'Prüfung'})

class TweetHandler(webapp2.RequestHandler):    
    def post(self):
		#Tweet-Verarbeitung
		bot = TwitterBot()
		bot.tweet(self.request.get('message')

app = webapp2.WSGIApplication([('/', MainHandler), ('/tweet', TweetHandler)], true) 

Erstellen Sie * queue.yaml *, um die Aufgabenwarteschlange zu verwenden. Die folgende Site war sehr hilfreich für die Erklärung der Aufgabenwarteschlange.

app.yaml


queue:
- name: tweet
  rate: 1/s
  bucket_size: 1 
  retry_parameters:
    task_retry_limit: 0

Erstellen Sie abschließend eine * cron.yaml * -Datei, damit dieser Prozess regelmäßig ausgeführt wird. Verwenden Sie * Zeitplan *, um festzulegen, wie oft ausgeführt werden soll.

cron.yaml


cron:
- description: tweet task
  url: /
  schedule: every 30 minutes from 9:00 to 23:59
  timezone: Asia/Tokyo

Lokale Ausführung

Verwenden Sie die GAELaucher-App, um den Betrieb der App in Ihrer lokalen Umgebung zu überprüfen. Sie können es über die Launcher-App erstellen. Verwenden Sie zu diesem Zeitpunkt die * Anwendungskennung * der zuvor erstellten Anwendung für die Anwendungs-ID.

Sie müssen * Make Symlink * aus dem Menü ausführen, bevor Sie es ausführen können. Wenn die von GAE verwendete Portnummer von einer anderen App verwendet wird, müssen Sie eine der Portnummern ändern.

Bereitstellen

Verwenden Sie schließlich GAE Launcher, um die Anwendung auf den Servern von Google bereitzustellen. Zu diesem Zeitpunkt werden Sie aufgefordert, ein Konto einzugeben. Geben Sie daher das Google-Konto ein, das der zuvor erstellten Anwendung entspricht.

Ich sehe manchmal * Überprüfen, ob die Bereitstellung erfolgreich war. * Endlos während der Bereitstellung, was ein serverseitiges Problem zu sein scheint. Schließlich werden Sie aufgefordert, ein Upgrade durchzuführen und erneut bereitzustellen oder ein Rollback durchzuführen. Dieses Mal habe ich ein Upgrade durchgeführt und erneut bereitgestellt, und es hat funktioniert.    Das Obige ist der Fluss von der Entwicklung von Twitter BOT zu seinem Betrieb.

Recommended Posts

Erstellen Sie einen Twitter-BOT mit dem GoogleAppEngine SDK für Python
Erstellen Sie mit Minette für Python einen LINE BOT
Schritte zum Erstellen eines Twitter-Bots mit Python
Machen wir einen Twitter-Bot mit Python!
Erstellen Sie mit Python + Qt (PySide) einen Farbwähler für das Farbrad.
Machen Sie Twitter Trend Bot mit Heroku + Python
Erstellen Sie ein Verzeichnis mit Python
Ich habe einen Twitter BOT mit GAE (Python) gemacht (mit einer Referenz)
Erstellen Sie in Docker eine Ebene für AWS Lambda Python
Ein Hinweis zum Aufrufen der Facebook-API mit dem Python SDK
Erstellen Sie einen Mastodon-Bot mit einer Funktion, die automatisch mit Python antwortet
Wahrscheinlich der einfachste Weg, um mit Python 3 ein PDF zu erstellen
Probieren Sie die ähnliche Suche von Image Search mit Python SDK [Search] aus.
Erstellen Sie mithilfe der Twitter-Streaming-API einen Echtzeit-Bot für die automatische Antwort
[Python] Erstellen Sie mit Django einen Bildschirm für den HTTP-Statuscode 403/404/500
Ich habe ein Skript geschrieben, um mit AWS Lambda + Python 2.7 schnell eine Entwicklungsumgebung für Twitter Bot zu erstellen
Erstellen Sie eine Windows Python-Ausführungsumgebung mit VScode + Remote WSL
Erstellen Sie eine gestreifte Illusion mit Gammakorrektur für Python3 und openCV3
Die Geschichte, einen Standardtreiber für db mit Python zu erstellen.
[LINE Messaging API] Erstellen Sie einen BOT, der eine Verbindung zu jemandem mit Python herstellt
Erstellen Sie ein USB-Boot-Ubuntu mit einer Python-Umgebung für die Datenanalyse
Erstellen Sie ein Kompatibilitätsbewertungsprogramm mit dem Zufallsmodul von Python.
Tweet die Wettervorhersage mit Bot
Erstellen Sie mit Class einen Python-Funktionsdekorator
Erstellen Sie mit Python + PIL ein Dummy-Image.
Erstellen wir eine virtuelle Umgebung für Python
[Python] Erstellen Sie mit Anaconda eine virtuelle Umgebung
Erstellen wir mit Python eine kostenlose Gruppe
Durchsuche das Labyrinth mit dem Python A * -Algorithmus
Arbeiten mit OpenStack mit dem Python SDK
[Python] [LINE Bot] Erstellen Sie einen LINE Bot mit Papageienrückgabe
Erstellen Sie mit Python 3.4 einen Worthäufigkeitszähler
Erstellen Sie einen Bot, der Twitter-Trends verstärkt
Erstellen Sie einen Twitter-BOT-Dienst mit der GAE / P + Tweepy + RIOT-API! (Teil 1)
Die Geschichte, wie man mit Python einen 100-Yen-Frühstücks-Bot für die Universität macht
[Einführung in die Udemy Python3 + -Anwendung] 47. Verarbeiten Sie das Wörterbuch mit einer for-Anweisung
Erstellen Sie mit dem Python-Anforderungsmodul einen Datensatz mit Anhängen in KINTONE
Erstellen Sie mit tkinter [Python] einen Rahmen mit transparentem Hintergrund.
[Python] Holen Sie sich die Dateien mit Python in den Ordner
Tweet die Wettervorhersage mit Bot Teil 2
Erstellt einen Python-Wrapper für die Qiita-API
Holen Sie sich ein Ticket für einen Themenpark mit Python
Ich habe versucht, mit Python einen Twitter-Blocker für faule Mädchen zu machen
Verwenden Sie vorerst Logger mit Python
Vorgehensweise zum Erstellen eines mit Python erstellten LineBot
Erstellen Sie eine virtuelle Umgebung mit conda in Python
Erstellen Sie eine Seite, die unbegrenzt mit Python geladen wird
[Hinweis] Erstellen Sie mit Python eine einzeilige Zeitzonenklasse
Sie können auch mit Python problemlos eine GUI erstellen
Erstellen Sie mit Sublime Text3 eine Python3-Build-Umgebung
Erstellen Sie mit Django ein Dashboard für Netzwerkgeräte!
Python: Bereiten Sie einen Serializer für die Klasseninstanz vor:
Erstellen Sie eine Farbleiste mit Python + Qt (PySide)
Befehle zum Erstellen einer Python3-Umgebung mit virtualenv
Erstellen Sie mit Python einen Entscheidungsbaum von 0 (1. Übersicht)
Erstellen Sie eine neue Seite im Zusammenfluss mit Python
Erstellen Sie mit Python + Qt (PySide) ein farbspezifisches Widget.