Slack-Benachrichtigung, wenn ein bestimmtes Wort auf Twitter mit Heroku mit Python gemurmelt wird

** Dieser Artikel wurde am 23. November 2019 veröffentlicht. ** ** **

Hallo. Dies ist @kosukeobata. In letzter Zeit gibt es viele Titel wie PdM und Vermarkter, aber da das Engineering wieder aufgenommen wurde, werde ich ein wenig lächerlich posten.

Dieses Mal werde ich beschreiben, wie man einen BOT erstellt, der Slack benachrichtigt, wenn ein bestimmtes Wort auf Twitter gemurmelt wird. Es ist auf GitHub nicht sehr schön, aber da der Quellcode für die Öffentlichkeit zugänglich ist, denke ich, dass Sie ihn erstellen können, während Sie darauf verweisen. https://github.com/kosukeobata/twitter-bot

■ Anforderungen

■ Technologie

■ Was Sie tun

Verwenden Sie das geplante Add-On von Heroku, um alle 10 Minuten nach Twitter zu suchen. Alle Beiträge, die abgefangen werden, werden an den von Ihnen angegebenen Slack benachrichtigt.

Zu diesem Zeitpunkt wird die größte Tweet-ID unter den erfassten Tweets in sqlite3 gespeichert. Wenn nur Tweets durchsucht werden, die größer sind als die bei der nächsten Ausführung gespeicherte ID, wird die Freigabe doppelter Tweet-IDs beseitigt.

■ Installationsverfahren

  1. Erstellen Sie ein Twitter-API-Konto.
  2. Erstellen Sie ein Heroku-Konto und fügen Sie eine Instanz hinzu.
  3. Webhook-Einstellungen in Slack.
  4. Git-Klon aus meinem Repository.
  5. Fügen Sie die Datei config.py hinzu.
  6. In Heroku bereitstellen.
  7. Scheduler zu Heroku hinzugefügt.

1. Erstellen Sie ein Twitter-API-Konto

Registrieren Sie sich unter https://developer.twitter.com/ und beantragen Sie die Verwendung. Bitte beachten Sie, dass es vom Antrag bis zur Genehmigung einige Zeit dauert. Siehe Qiita hier für Details. Zusammenfassung der Verfahren von der Registrierung der Twitter-API (Kontoantragsmethode) bis zur Genehmigung * Informationen ab August 2019

2. Erstellen Sie ein Heroku-Konto

Registrieren Sie sich unter https://jp.heroku.com/. Es gibt nichts besonders Schwieriges, also denke ich, dass Sie es reibungslos machen können.

Nachdem Sie ein Konto erstellt haben, erstellen wir eine Instanz. In diesem Artikel lautet der Instanzname beispielsweise "qiita-katsuo". In Bezug auf den Teil von Qiita-Katsuo, der in diesem Artikel vorkommt, denke ich, dass es einen Namen gibt, den Sie sich selbst gegeben haben. Bitte ersetzen Sie ihn durch diesen Namen und lesen Sie weiter.

3. Slack Webhook-Einstellungen

Es gibt auch hier verschiedene Qiita-Artikel. Bitte beziehen Sie sich auf diese. Verwenden Sie Slacks eingehende Webhooks Sobald Sie die URL erhalten haben, die mit "https://hooks.slack.com/services/" beginnt, sind Sie fertig.

  1. git clone Gehen Sie zu dem Verzeichnis, mit dem Sie arbeiten möchten, und klonen Sie es mit git.

$ git clone [email protected]:kosukeobata/twitter-bot.git



### 5. Fügen Sie die Datei config.py hinzu
 Da es sich um eine Datei handelt, die Zugriffstoken usw. beschreibt, wird sie nicht auf GitHub hochgeladen.
 Bitte fügen Sie die Datei selbst hinzu.
 Es ist in Ordnung, wenn die Datei wie folgt ist.

 ――Die vier wichtigsten sind die Twitter-API-Einstellungen.
 --WEB_HOOK_KEY ist die Einstellung von Slacks Webhook.
 - Geben Sie für SEARCH_KEYWORD das Schlüsselwort an, das Sie beim Murmeln auf Twitter veröffentlichen möchten.
 - Geben Sie für CHANNEL_NAME den Kanalnamen an, den Sie von Slack benachrichtigen möchten.

CONSUMER_KEY = "" CONSUMER_SECRET = "" ACCESS_TOKEN = "" ACCESS_TOKEN_SECRET = "" WEB_HOOK_KEY = "" SEARCH_KEYWORD = "" CHANNEL_NAME = "#*********"


 Zu diesem Zeitpunkt können Sie es lokal ausführen.
 Wenn Sie lokal testen möchten, führen Sie zuerst den folgenden Befehl aus, um die Umgebung lokal vorzubereiten.
 ** Pip installieren **

$ curl -O https://bootstrap.pypa.io/get-pip.py $ python get-pip.py --user $ export PATH="HOME/Library/Python/2.7/bin:PATH" $ echo 'export PATH="HOME/Library/Python/2.7/bin:PATH"' >> ~/.bash_profile $ source ~/.bash_profile


 ** Installationsanforderung **
```$ pip install requests requests_oauthlib --user```

 ** Lauf **

#### **`$ python get_twitter_data.py`**
```py


### 6. In Heroku bereitstellen
 Bereitstellung auf der in Schritt 2 erstellten Instanz.
 Zuerst wird die Anmeldeauthentifizierung im Terminal durchgeführt, dann wird die Instanz verknüpft und dann an heroku gesendet.

$ heroku login $ git init $ heroku git:remote -a qiita-katsuo $ git add . $ git commit -am "make it better" $ git push heroku master


### 7. Registrieren Sie Ihren Zeitplan bei Heroku.
 Mit dem Add-On "Zeitplan" können Sie alle 10 Minuten nach Twitter suchen.
 Es ist nicht in Echtzeit, aber ich denke, es ist in Ordnung, wenn es so häufig ist.
 Fügen Sie zunächst das Add-On hinzu, indem Sie den folgenden Befehl im Terminal ausführen.

#### **`$ heroku addons:create scheduler:standard --app qiita-katsuo`**

Anschließend können Sie den Zeitplan auf dem Heroku-Bildschirm registrieren. https://dashboard.heroku.com/apps/qiita-katsuo/scheduler Geben Sie den folgenden Befehl als anzugebenden Job an.

$ python get_twitter_data.py



 Damit sind die Einstellungen abgeschlossen.
 Wenn Sie andere kleine Einstellungen ändern möchten, stellen Sie diese bitte nach und nach ein.


Recommended Posts

Slack-Benachrichtigung, wenn ein bestimmtes Wort auf Twitter mit Heroku mit Python gemurmelt wird
Schreiben Sie ein Skript in Shell und Python, um Sie in Slack zu benachrichtigen, wenn der Vorgang abgeschlossen ist
Verwenden Sie AWS Lambda, um einen Mechanismus zu erstellen, der Slack benachrichtigt, wenn der von CloudWatch überwachte Wert in Python überschritten wird
Einfach! Implementieren Sie einen Twitter-Bot, der auf Heroku in Python ausgeführt wird
Verwendung ist und == in Python
Ein Memorandum, weil ich beim Versuch, MeCab mit Python zu verwenden, gestolpert bin
Bequem zum Verwenden von Ebenen beim Laden von Bibliotheken auf Lambda
So benachrichtigen Sie Discord-Kanäle in Python
Das Ausgabe-Timing ist falsch, wenn die Standardausgabe (Fehlerausgabe) in eine Datei in Python konvertiert wird
Ein Memorandum zur Verwendung von Keras 'keras.preprocessing.image
Beachten Sie beim Initialisieren einer Liste in Python
Verwenden Sie communic (), wenn Sie eine Ausgabe in einem Python-Unterprozess empfangen
Ein Skript, das Tweets mit bestimmten Schlüsselwörtern auf Twitter in Echtzeit an Slack überträgt.
Verwendung der Methode __call__ in der Python-Klasse
[Python] Hinweise beim Versuch, Numpy mit Cython zu verwenden
Zusammenfassung der Punkte, die beim Schreiben eines Programms zu beachten sind, das unter Python 2.5 ausgeführt wird
Wenn Sie einen UNIX-Befehl in Python ausführen möchten
Post an Slack in Python
Über den Fehler, den ich beim Versuch, Adafruit_DHT von Python auf Raspberry Pi zu verwenden, festgestellt habe
Beachten Sie, was Sie getan haben, um Flycheck mit Python zu verwenden
Ein Spiel für ein Abenteuer im interaktiven Python-Modus
Senden Sie eine Nachricht von IBM Cloud Functions an Slack in Python
[Python] Ausführungszeit, wenn eine Funktion in einen Wörterbuchwert eingegeben wird
So verwenden Sie Python in Pyenv unter MacOS mit PyCall
Zeitzonenspezifikation beim Konvertieren einer Zeichenfolge in einen Datums- / Uhrzeittyp mit Python
Verwendung von Sternchen (*) in Python. Vielleicht ist das alles? ..
[Einführung in Python] Wie verwende ich den Operator in in der for-Anweisung?
So stellen Sie eine Django-App in nur 5 Minuten für Heroku bereit
Was tun, wenn der Werttyp in Python nicht eindeutig ist?
Verwenden Sie Stoff wie in Python (Stoff3)
Verwendung von SQLite in Python
Wie man MySQL mit Python benutzt
Verwendung von ChemSpider in Python
Verwendung von PubChem mit Python
Beim Schreiben eines Programms in Python
Verwenden Sie AWS Lambda, um Nachrichten zu kratzen und LINE regelmäßig über Updates zu informieren [Python]
Dinge, auf die Sie beim Erstellen einer Python-Umgebung auf einem Mac achten sollten
Was tun, wenn in python json .dumps eine Dezimalstelle enthalten ist?
Stellen Sie von Python aus eine Verbindung zu postgreSQL her und verwenden Sie gespeicherte Prozeduren in einer Schleife.
So schreiben Sie eine Zeichenfolge, wenn Python mehrere Zeilen enthält
Benachrichtigen Sie mit Notification Center, wenn die Ausführungsumgebung in Python macOS ist
[Python] [Word] [python-docx] Versuchen Sie, mit python-docx eine Vorlage für einen Wortsatz in Python zu erstellen
Fügen Sie dem Benutzerwörterbuch von MeCab unter Ubuntu Wörter zur Verwendung in Python hinzu
python So benachrichtigen Sie automatisch per Telefon, wenn das System ausfällt
Benachrichtigen Sie Slack, wenn der auf GCP ausgeführte maschinelle Lernprozess abgeschlossen ist
Was tun, wenn eine Warnmeldung in der Pip-Liste angezeigt wird?
So stoppen Sie das Programm bis zu einem bestimmten Datum und einer bestimmten Uhrzeit in Python
Was tun, wenn der Fehler RuntimeError angezeigt wird: Python wird nicht als Framework installiert, wenn Sie versuchen, matplitlib und pylab in Python 3.3 zu verwenden
[Einführung in Python] Wie verwende ich eine Klasse in Python?
Verwenden Sie print in Python2 lambda expression
[Python3] Code, der verwendet werden kann, wenn Sie ein Bild in einer bestimmten Größe ausschneiden möchten
Die Geschichte der Erstellung von Botonyan, das den Inhalt von Google Text & Tabellen als Antwort auf ein bestimmtes Keyword in Slack zurückgibt
Vorsichtsmaßnahmen beim Beizen einer Funktion in Python
Melden Sie sich mit Anforderungen in Python bei Slack an
Wie bekomme ich Stacktrace in Python?