[PYTHON] Facile avec Slack en utilisant Bot #NowPlaying

Cet article est l'article du 17e jour du Calendrier de l'avent 2019 de Fujitsu Cloud Technologies. Hier, c'était "[textlint PowerPoint (pptx)] de @heriet" (https://qiita.com/heriet/items/e0685fb0e9eed0101a3e) ".

Je ne suis pas un technicien mais un planificateur, j'ai donc de nombreuses opportunités de créer PowerPoint. Cela m'intéresse car il y a beaucoup d'occasions de souligner que la notation fluctue.

introduction

Au fait, je m'appelle Sasaki. Je suis généralement en charge de la planification Nifkura mobile backend.

Écoutez-vous de la musique au travail? Je pense qu'il y a des gens qui n'écoutent pas et des gens qui ne peuvent pas réellement écouter à cause du milieu de travail et de nombreuses correspondances téléphoniques. Puisque notre entreprise est une entreprise centrée sur les ingénieurs, il y a beaucoup de gens qui travaillent avec des écouteurs et des écouteurs, et je pense qu'il y a probablement plus de gens qui travaillent en écoutant de la musique que le grand public. .. Aujourd'hui, c'est une telle histoire sur la musique au travail.

#NowPlaying

Connaissez-vous le hashtag #NowPlaying qui est souvent utilisé sur Twitter? C'est un hashtag qui signifie "J'écoute cette chanson en ce moment", qui est souvent utilisé par les mélomanes et je l'utilise parfois. Il existe également des applications qui prennent en charge les publications #NowPlaying, telles que le tweet d'un titre de chanson / d'un artiste en appuyant simplement sur un bouton, ce qui facilite grandement le tweet.

Sur notre Slack, il y a une chaîne juste pour publier ce #NowPlaying, et les mélomanes de l'entreprise se rassemblent pour publier des chansons qu'ils écoutent tous les jours au travail. (Si vous rencontrez une situation où quelqu'un écoute une chanson que vous aimez beaucoup, la réaction de l'emoji jouera tranquillement.)

Cependant, aucune application ne prend en charge la publication comme Twitter et je tape le titre de la chanson / le nom de l'artiste à la main. (Surtout, mon groupe préféré appelé THEE MICHELLE GUN ELEPHANT est vraiment long, donc ça va être ...)

J'ai donc décidé de créer un Bot qui automatiserait cette tâche.

Flux et configuration du bot

J'écoute de la musique avec Spotify, j'ai donc décidé de créer un Bot avec le flux suivant.

`Envoyez une réponse à Bot → Obtenez la chanson que Spotify joue via l'API → Publiez le nom de la chanson et le nom de l'artiste à partir du résultat de l'acquisition '

Bot s'exécute sur Python et utilise les packages suivants:

En passant, en tant que non-ingénieur, j'ai essayé beaucoup de choses déraisonnables telles que regarder la référence de l'API et essayer de tout implémenter avec JavaScript (et front-end) jusqu'à cette configuration, mais j'ai aidé mon ingénieur senior. J'ai appris cette composition. Merci!

Comment faire

Ensuite, je vous expliquerai comment le faire. En outre, veuillez définir à l'avance l'intégration Bots de Slack et noter le jeton API.

Paramètres Spotify

Tout d'abord, suivez les étapes ci-dessous pour émettre l'ID client et le secret client du côté Spotify.

  1. Allez sur ici et connectez-vous avec votre compte Spoty depuis "CONNEXION".
  2. Cliquez sur "CRÉER UNE APPLICATION"
  3. Il y aura environ 3 questions, mais entrez ou sélectionnez «Nom de l'application / du matériel», «Résumé» et «Type de création» en haut, puis cliquez sur «Suivant».
  4. Est-ce pour un usage commercial? Une question comme celle-ci apparaîtra, alors cliquez sur "Non"
  5. Après avoir accepté et vérifié, cliquez sur "SOUMETTRE"
  6. Une fois la création terminée, cliquez sur "SHOW CLIENT SECRET" et notez le secret client qui apparaît et l'ID client au-dessus. * Veillez à ne pas divulguer cette clé.
  7. Cliquez sur "MODIFIER LES PARAMÈTRES" en haut à droite
  8. Entrez "http : // localhost: 8888 / callback" dans Rediriger les URI, cliquez sur "AJOUTER", puis sur "ENREGISTRER".

Développement de serveurs

Présentation du package

Tout d'abord, présentez slackbot.

$ pip3 install slackbot

Ensuite, nous présenterons spotipy.

$  pip install spotipy

Organiser les répertoires / créer des fichiers

Créez un dossier de projet quelque part et travaillez-y. Créez des répertoires / fichiers afin qu'ils aient la hiérarchie suivante.

Dossier de projet
  ├ plugins/
  │    ├ __init__.py
  │    └ my_mention.py
  ├ run.py
  └ slackbot_settings.py

Modifier run.py

Ouvrez run.py et écrivez le script d'exécution. Exécutez ce script lors du lancement du Bot.

run.py


# coding: utf-8

from slackbot.bot import Bot

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

if __name__ == "__main__":
    print('slackbot a commencé')
    main()

Modification de slackbot_settings.py

Ensuite, modifiez le fichier de paramètres. Remplacez la partie "Jeton API d'intégration de Slack Bot" par le jeton API Bot créé du côté Slack.

slackbot_settings.py


# coding: utf-8

API_TOKEN = "Jeton API pour l'intégration des bots de Slack"

DEFAULT_REPLY = "C'est une commande inattendue."

PLUGINS = ['plugins']

my_mention.py

Maintenant, répondons. Remplacez votre nom d'utilisateur Spotify / ID client / secret client / ID utilisateur Slack. Vous pouvez trouver le nom d'utilisateur Spotify en accédant à ici. La méthode de confirmation de l'ID utilisateur Slack est disponible sur ici.

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="Nom d'utilisateur Spotify", scope, client_id="identité du client", client_secret="Secret du client", redirect_uri="http://localhost:8888/callback")

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

    if message.body['user'] == 'ID utilisateur Slack':
        if type(current_track) == dict:
            message.send(current_track['item']['name'] + ' - ' + current_track['item']['artists'][0]['name'])
        else:
            message.send('Je ne joue à rien')
    else:
        message.send('Qui êtes vous?')

Courir!

C'est tout ce qu'on peut en dire. Faisons le.

$ python run.py

Après cela, si vous invitez à une chaîne et mentionnez @bot name np, le navigateur sera lancé et vous serez invité à vous authentifier pour la première fois. Après l'authentification, l'écran passera à un écran vide, copiez donc l'URL de destination et collez-la dans le terminal.

slack.jpg

D'ailleurs, même si d'autres personnes sautent la mention, elles répondront "Qui êtes-vous?".

en conclusion

Vous pouvez désormais publier facilement les chansons que vous écoutez dans Spotify sur Slack.

Cependant, ce n'est que pour moi maintenant car le serveur exécutant Bot a besoin d'une authentification et il n'est pas possible de sauvegarder les informations d'authentification de plusieurs personnes. Je veux le rendre utilisable par différentes personnes, alors j'aimerais continuer à le réparer!

Demain, @aokuma dira: "Je veux utiliser Kubernetes d'une manière agréable même avec Nifukura!" J'ai hâte d'y être!

Passez un bon Noël.

Recommended Posts

Facile avec Slack en utilisant Bot #NowPlaying
Développement de slack bot avec python en utilisant chat.postMessage
Easy Grad-CAM avec pytorch-gradcam
Création automatique de tickets JIRA avec slack bot ~ développement de slack bot avec python ① ~
Un moyen facile de gratter avec Python en utilisant Google Colab
[Super facile] Faisons un LINE BOT avec Python.
Débogage facile avec ipdb
TopView facile avec OpenCV
Créer un bot slack
Lors de l'utilisation d'optparse avec iPython
Environnement toxique facile avec Jenkins
Essayez d'utiliser PythonTex avec Texpad.
Utilisation de Graphviz avec Jupyter Notebook
[S3] CRUD avec S3 utilisant Python [Python]
[Analyse de co-occurrence] Analyse de co-occurrence facile avec Python! [Python]
Bot d'invitation au déjeuner chez Slack
utilisation de golang slack édition C2
Utilisation de Quaternion avec Python ~ numpy-quaternion ~
Essayez d'utiliser matplotlib avec PyCharm
Publiez sur Slack avec Python 3
[Python] Utilisation d'OpenCV avec Python (basique)
Rendre avec la syntaxe facile
Grattage Web facile avec Scrapy
Utiliser une imprimante avec Debian 10
Serveur HTTP facile avec Python
Connexion proxy facile avec django-hijack
Essayez d'utiliser le folium avec anaconda
Utiliser OpenCV avec Python @Mac
Créer un chatbot Slack avec Errbot
Envoyer en utilisant Python avec Gmail
J'ai essayé d'utiliser l'émojinateur Slack