[PYTHON] Einfach mit Slack mit Bot #NowPlaying

Dieser Artikel ist der 17. Tagesartikel von Fujitsu Cloud Technologies Adventskalender 2019. Gestern war @heriets "textlint PowerPoint (pptx)".

Ich bin kein technischer Mitarbeiter, sondern ein Planer, daher habe ich viele Möglichkeiten, PowerPoint zu erstellen. Ich bin interessiert, weil es viele Möglichkeiten gibt, darauf hinzuweisen, dass die Notation schwankt.

Einführung

Ich heiße übrigens Sasaki. Ich bin normalerweise für die Planung des [Nifkura Mobile Backend] verantwortlich (https://mbaas.nifcloud.com/).

Hörst du Musik bei der Arbeit? Ich denke, dass es Menschen gibt, die nicht zuhören, und Menschen, die aufgrund des Arbeitsumfelds und vieler Telefonkorrespondenzen nicht wirklich zuhören können. Da unser Unternehmen ein Unternehmen ist, das sich auf Ingenieure konzentriert, gibt es viele Menschen, die mit Kopfhörern und Kopfhörern arbeiten, und ich denke, dass es wahrscheinlich mehr Menschen gibt, die beim Musikhören arbeiten als die breite Öffentlichkeit. .. Heute ist so eine Geschichte über Musik bei der Arbeit.

#NowPlaying

Kennen Sie das Hashtag #NowPlaying, das häufig auf Twitter verwendet wird? Dies ist ein Hashtag, der bedeutet "Ich höre gerade diesen Song", der oft von Musikliebhabern verwendet wird und ich benutze ihn manchmal. Es gibt auch einige Apps, die # NowPlaying-Beiträge unterstützen, z. B. das Twittern eines Songtitels / Interpreten per Knopfdruck, wodurch das Twittern sehr einfach wird.

Auf unserer Slack gibt es einen Kanal, auf dem Sie dieses #NowPlaying veröffentlichen können, und Musikliebhaber im Unternehmen versammeln sich, um Songs zu veröffentlichen, die sie jeden Tag bei der Arbeit hören. (Wenn Sie auf eine Situation stoßen, in der jemand einen Song hört, den Sie sehr mögen, wird Emojis Reaktion leise abgespielt.)

Es gibt jedoch keine App, die das Posten wie Twitter unterstützt, und ich gebe den Songtitel / Künstlernamen von Hand ein. (Besonders meine Lieblingsband namens THEE MICHELLE GUN ELEPHANT ist wirklich lang, also wird es ...)

Also habe ich beschlossen, einen Bot zu erstellen, der diese Aufgabe automatisiert.

Bot Flow und Konfiguration

Ich höre Musik mit Spotify und habe beschlossen, einen Bot mit dem folgenden Ablauf zu erstellen.

Senden Sie eine Antwort an Bot → Rufen Sie das Lied ab, das Spotify über die API abspielt → Veröffentlichen Sie den Liednamen und den Künstlernamen aus dem Erfassungsergebnis

Bot läuft auf Python und verwendet die folgenden Pakete:

Übrigens habe ich als Nicht-Ingenieur viele unvernünftige Dinge ausprobiert, z. B. die API-Referenz überprüft und versucht, alles mit JavaScript (und Front-End) zu implementieren, aber ich habe meinem leitenden Ingenieur geholfen. Mir wurde diese Komposition beigebracht. Vielen Dank!

Wie man ... macht

Dann werde ich erklären, wie es geht. Stellen Sie außerdem die Bots-Integration von Slack im Voraus ein und notieren Sie sich das API-Token.

Spotify-Einstellungen

Führen Sie zunächst die folgenden Schritte aus, um die Client-ID und das Client-Geheimnis auf der Spotify-Seite auszugeben.

  1. Gehen Sie zu hier und melden Sie sich mit Ihrem Spoty-Konto über "ANMELDEN" an.
  2. Klicken Sie auf "APP ERSTELLEN".
  3. Es werden ungefähr 3 Fragen gestellt, aber geben Sie "App / Hardware-Name", "Zusammenfassung" und "Erstellungstyp" von oben ein oder wählen Sie sie aus und klicken Sie auf "Weiter".
  4. Ist es für den kommerziellen Gebrauch? Eine solche Frage wird angezeigt. Klicken Sie daher auf "Nein".
  5. Nachdem Sie zugestimmt und überprüft haben, klicken Sie auf "SENDEN".
  6. Klicken Sie nach Abschluss der Erstellung auf "CLIENT SECRET ANZEIGEN" und notieren Sie sich das angezeigte Client-Geheimnis und die darüber liegende Client-ID. * Achten Sie darauf, diesen Schlüssel nicht zu verlieren.
  7. Klicken Sie oben rechts auf "EINSTELLUNGEN BEARBEITEN"
  8. Geben Sie "http : // localhost: 8888 / callback" in Umleitungs-URIs ein, klicken Sie auf "HINZUFÜGEN" und dann auf "SPEICHERN".

Serverentwicklung

Paketeinführung

Führen Sie zuerst Slackbot ein.

$ pip3 install slackbot

Als nächstes werden wir spotipy vorstellen.

$  pip install spotipy

Verzeichnisse organisieren / Dateien erstellen

Erstellen Sie irgendwo einen Projektordner und arbeiten Sie darin. Erstellen Sie Verzeichnisse / Dateien so, dass sie die folgende Hierarchie haben.

Projektordner
  ├ plugins/
  │    ├ __init__.py
  │    └ my_mention.py
  ├ run.py
  └ slackbot_settings.py

Bearbeiten Sie run.py

Öffnen Sie run.py und schreiben Sie das Ausführungsskript. Führen Sie dieses Skript aus, wenn Sie den Bot starten.

run.py


# coding: utf-8

from slackbot.bot import Bot

def main():
    bot = Bot()
    bot.run()

if __name__ == "__main__":
    print('Slackbot hat begonnen')
    main()

Bearbeiten von slackbot_settings.py

Bearbeiten Sie als Nächstes die Einstellungsdatei. Ersetzen Sie den Teil "Slack Bot's Integration API Token" durch den Bot API Token, der auf der Slack-Seite erstellt wurde.

slackbot_settings.py


# coding: utf-8

API_TOKEN = "API-Token für die Bots-Integration von Slack"

DEFAULT_REPLY = "Dies ist ein unerwarteter Befehl."

PLUGINS = ['plugins']

my_mention.py

Lassen Sie uns jetzt eine Antwort geben. Ersetzen Sie Ihren Spotify-Benutzernamen / Ihre Client-ID / Ihr Client-Geheimnis / Ihre Slack-Benutzer-ID. Den Spotify-Benutzernamen finden Sie unter hier. Die Bestätigungsmethode für die Slack-Benutzer-ID finden Sie unter hier.

my_mention.py


import spotipy
import spotipy.util as util
from slackbot.bot import respond_to

@respond_to('NP')
@respond_to('np')
def mention_func(message):
    scope = 'user-read-currently-playing'

    token = util.prompt_for_user_token(username="Spotify-Benutzername", scope, client_id="Kunden ID", client_secret="Kundengeheimnis", redirect_uri="http://localhost:8888/callback")

    spotify = spotipy.Spotify(auth=token)
    current_track = spotify.current_user_playing_track()

    if message.body['user'] == 'Slack User ID':
        if type(current_track) == dict:
            message.send(current_track['item']['name'] + ' - ' + current_track['item']['artists'][0]['name'])
        else:
            message.send('Ich spiele nichts')
    else:
        message.send('Wer bist du?')

Lauf!

Dies ist abgeschlossen. Machen wir das.

$ python run.py

Wenn Sie danach zu einem Kanal einladen und "@bot name np" erwähnen, wird der Browser gestartet und Sie werden aufgefordert, sich zum ersten Mal zu authentifizieren. Nach der Authentifizierung ändert sich der Bildschirm in einen leeren Bildschirm. Kopieren Sie daher die Ziel-URL und fügen Sie sie in das Terminal ein.

slack.jpg

Übrigens, selbst wenn andere Leute die Erwähnung überspringen, werden sie antworten "Wer bist du?".

abschließend

Jetzt können Sie die Songs, die Sie gerade hören, ganz einfach in Spotify to Slack veröffentlichen.

Dies gilt jedoch nur für mich, da der Server, auf dem Bot ausgeführt wird, eine Authentifizierung benötigt und es nicht möglich ist, die Authentifizierungsinformationen mehrerer Personen zu speichern. Ich möchte es für verschiedene Personen nutzbar machen, daher möchte ich es weiterhin reparieren!

Morgen wird @aokuma sagen: "Ich möchte Kubernetes auch mit Nifukura auf nette Weise nutzen!" Ich freue mich darauf!

Schöne Weihnachten.

Recommended Posts

Einfach mit Slack mit Bot #NowPlaying
Entwicklung eines Slack Bot mit Python mit chat.postMessage
Easy Grad-CAM mit Pytorch-Gradcam
JIRA Ticket automatische Erstellung mit Slack Bot ~ Slack Bot Entwicklung mit Python ① ~
Einfache Möglichkeit, mit Google Colab mit Python zu kratzen
[Super einfach] Machen wir einen LINE BOT mit Python.
Einfaches Debuggen mit ipdb
Einfache TopView mit OpenCV
Erstellen Sie einen Slack Bot
Bei Verwendung von optparse mit iPython
Einfache toxische Umgebung mit Jenkins
Versuchen Sie, PythonTex mit Texpad zu verwenden.
Verwenden von Graphviz mit Jupyter Notebook
[S3] CRUD mit S3 unter Verwendung von Python [Python]
[Analyse des gemeinsamen Auftretens] Einfache Analyse des gemeinsamen Auftretens mit Python! [Python]
Mittagessen Einladungsbot bei Slack
mit Golang Slack Editing C2
Verwenden von Quaternion mit Python ~ numpy-quaternion ~
Versuchen Sie es mit matplotlib mit PyCharm
Post to Slack mit Python 3
[Python] Verwenden von OpenCV mit Python (Basic)
Machen Sie es mit der Syntax einfach
Einfaches Web-Scraping mit Scrapy
Verwenden eines Druckers mit Debian 10
Einfacher HTTP-Server mit Python
Einfache Proxy-Anmeldung mit Django-Hijack
Versuchen Sie es mit Folium mit Anakonda
Verwenden von OpenCV mit Python @Mac
Machen Sie Slack Chatbot mit Errbot
Senden Sie mit Python mit Google Mail
Ich habe versucht, Slack Emojinator zu verwenden