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.
Die endgültigen Spezifikationen des diesmal erstellten BOT lauten wie folgt.
Mutter alle 30 m einen neuen Eintrag für Google Alert (* 1) (9: 00 ~ 23: 59)
Mutter Follow Me (18:30)
Folgen Sie alle 30 m (* 1) (6: 00 ~ 23: 59)
Wenn Sie nur alle 1 Stunde folgen Entfernen (0: 00 ~ 5: 59)
1 GAE hat eine Instanzzeit und verbraucht keine Zeit nur während des Anforderungsverarbeitungszeitraums. Es ist inaktiv, so dass es sofort nach Abschluss der Anforderung antworten kann, verbraucht aber auch Zeit während dieser Zeit. Deshalb versuchen wir, keine Leerlaufzeit zu verschwenden, indem wir gleichzeitig murmeln und folgen.
Erstellen Sie neue Nachrichten aus Google Alerts. Stellen Sie zu diesem Zeitpunkt das Lieferziel auf ** Feed ** ein.
Ich benutze die folgende Umgebung für die lokale Entwicklung.
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.
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.
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.
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()
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])
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
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.
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