[PYTHON] Créer une application à l'aide de l'API Spotify

introduction

Je pense que le système de modèle d'abonnement a tendance à avoir des données abondantes (utilisez-le car il est illimité). Dans mon cas, j'écoute tellement de musique ces derniers temps que j'ai pensé qu'il serait intéressant d'utiliser l'API Spotify.

Donc, cette fois, créons une application à l'aide de l'API Spotify.

Enregistrons l'application

https://developer.spotify.com/dashboard/

Vous pouvez vous inscrire ici. Si vous avez déjà un compte, connectez-vous et vous êtes prêt à partir.

Il vous sera demandé si vous souhaitez l'utiliser à des fins commerciales lors de l'inscription, alors répondez correctement. Après avoir créé l'application, vous pouvez saisir les informations OAuth depuis ʻEDIT SETTINGS`. Il existe différentes options, telles que le Web et les smartphones. Enregistrez celui qui vous convient.

Comme cela sera décrit plus tard cette fois, puisqu'il n'est pas strictement frappé par le service Web, une URL appropriée est définie.

Faire le tour de l'authentification

https://developer.spotify.com/documentation/general/guides/authorization-guide/

Les détails sont décrits ci-dessus. Cette fois, nous la créerons en tant qu'application Web, mais en réalité, elle sera exécutée à partir de Google Cloud Functions, donc un jeton de rafraîchissement est requis. Selon les spécifications de Spotify, le jeton d'accès restera valide pendant une heure et le jeton d'actualisation restera valide jusqu'à ce que quelque chose soit désactivé. Donc, cette fois, avant de créer l'application, créez un jeton d'actualisation à la main, convertissez-le en jeton d'accès dans le code-> appuyez sur l'API Spotify.

1. Obtenez le code

Tout d'abord, générez une URL pour obtenir le code. Je vais omettre les détails, mais l'URL finale sera la suivante. Faites correspondre client_id et redirect_uri à votre environnement.

En outre, l'API Spotify a une portée très finement divisée. Il est répertorié ci-dessous, vous devez donc spécifier la portée requise. https://developer.spotify.com/documentation/general/guides/scopes/

https://accounts.spotify.com/authorize?client_id=${CLIENT_ID}&response_type=code&redirect_uri=${REDIRECT_URL}&scope=user-read-private%20user-read-email&state=34fFs29kd09

Lorsqu'il est terminé, collez-le dans un navigateur approprié et appuyez sur Entrée pour revenir à l'ensemble redirect_uri. Il n'y a pas de problème particulier si une erreur se produit ici. Puisque l'URL elle-même a changé, nous n'utiliserons que la partie de code de cette URL ensuite.

2. Obtenez un jeton d'actualisation

Ensuite, je dois lancer POST. Alors je vais le lancer avec une boucle. Plus précisément, définissez le code qui a pris la commande suivante et client_id et client_secret en fonction de l'environnement et lancez-le. S'il n'y a pas de problème, le jeton sera retourné, alors conservez le jeton d'actualisation.

curl --data "code=${CODE}" --data "client_id=${CLIENT_ID}" --data "client_secret=${CLIENT_SECRET}" --data "redirect_uri=http://localhost/callback" --data "grant_type=authorization_code" https://accounts.spotify.com/api/token

from Refresh Token to Access Token La conversion du jeton d'actualisation en jeton d'accès est un one-shot en frappant l'API. Dans ce cas, vous devez inclure ʻAuthorization: Basic `dans l'en-tête, et il est assez facile de le trouver difficile à créer.

Pour le moment, je vais coller le code python que j'ai créé.

from dotenv import load_dotenv

import os
import requests
import base64
import json

load_dotenv(verbose=True)

client_id = os.environ.get("SPOTIFY_CLIENT_ID", default="")
client_secret = os.environ.get("SPOTIFY_CLIENT_SECRET", default="")
token = base64.b64encode((client_id + ":" + client_secret).encode("utf-8")).decode(
    "utf-8"
)

headers = {"Authorization": "Basic " + token}
data = {
    "refresh_token": os.environ.get("REFRESH_TOKEN"),
    "grant_type": "refresh_token",
}
response = requests.post(
    "https://accounts.spotify.com/api/token", data=data, headers=headers
)  # noqa: E501
print(json.loads(response.text)["access_token"])

Créez la pièce pour appeler l'API

Pour passer un appel API, définissez simplement le jeton d'accès que vous avez obtenu sur Bearer et lancez-le. Vous trouverez ci-dessous un exemple de code pour la génération de données de classement que j'essaie de créer.

    header = {"Authorization": "Bearer " + access_token}
    data = {
        "limit": 50,
        "time_range": "short_term",
    }
    response = requests.get(
        "https://api.spotify.com/v1/me/top/tracks", params=data, headers=header
    )

À la fin

Vous pouvez désormais créer une application en toute sécurité à l'aide de l'API Spotify. Bien que Spotify soit difficile à comprendre où et ce que c'est, les spécifications de l'API sont écrites en détail. Il y a étonnamment beaucoup de choses à faire, c'est donc une impression que cela peut être utilisé comme un bon échantillon comme point de départ pour la création d'API.

Au fait, ce que je fais maintenant, c'est de publier les classements que j'ai entendus le mois précédent sur Twitter une fois par mois. Je n'ai pas encore fait la partie post, donc je vais le faire à partir de maintenant.

La procédure de fabrication manuelle est la même pour les autres API OAuth, elle peut donc être appliquée efficacement. Veuillez essayer de créer diverses applications en accédant à diverses API. Cependant, si vous le publiez, la limite de l'API sera immédiatement dépassée, donc dans ce cas, faisons correctement la partie authentification afin que cela puisse être fait avec l'interface utilisateur.

Recommended Posts

Créer une application à l'aide de l'API Spotify
Créez une application qui recherche uniquement à l'aide de l'API de recherche personnalisée Google avec Python 3.3.1 dans Bottle
Essayez d'utiliser l'API Twitter
Créez un pdf facile à lire des lois et ordonnances gouvernementales à l'aide de l'API Law
Essayez d'utiliser l'API Twitter
Créez une application qui fonctionne bien avec les rapports des utilisateurs à l'aide de l'API COTOHA
Essayez d'utiliser l'API PeeringDB 2.0
Créez un robot de réponse automatique en temps réel à l'aide de l'API Twitter Streaming
J'ai créé un guide de programme original en utilisant l'API de guide de programme NHK.
Créez une API en utilisant hug avec mod_wsgi
Créer une API CRUD à l'aide de l'API rapide
J'ai essayé d'utiliser l'API checkio
J'ai créé une application avec Lambda qui notifie LINE de "j'aime" à l'aide de l'API Qiita.
Créer une API qui renvoie les données d'un modèle à l'aide de turicreate
Créez un alias pour Route53 vers CloudFront avec l'API AWS
Créer une application en classifiant avec Pygame
Essayez d'utiliser l'API Wunderlist en Python
Essayez d'utiliser le framework d'application Web Flask
Essayez d'utiliser l'API Kraken avec Python
Tweet à l'aide de l'API Twitter en Python
Créer un graphique à l'aide du module Sympy
[Python] Créez rapidement une API avec Flask
Jouez avec Dajare en utilisant l'API COTOHA
Essayez d'accéder à l'API Spotify dans Django.
Enregistrez des événements personnalisés à l'aide de l'API Shotgun
J'ai essayé d'utiliser l'API BigQuery Storage
Comment créer une application à partir du cloud à l'aide du framework Web Django
[Hyperledger Iroha] Créez un compte à l'aide de la bibliothèque Python
J'ai recherché dans la bibliothèque l'utilisation de l'API Gracenote
Accédez à l'API Web à l'aide de requêtes Exemple: Flickr
Essayez d'utiliser l'API BitFlyer Ligntning en Python
Créez une API REST à l'aide du modèle appris dans Lobe et TensorFlow Serving.
Créez facilement un serveur API à l'aide du module go-json-rest
Créons une API REST en utilisant SpringBoot + MongoDB
J'ai essayé d'utiliser l'API Google Cloud Vision
Création d'une application interactive à l'aide d'un modèle de rubrique
Obtenez un jeton d'accès pour l'API Pocket
Essayez de créer un serveur HTTP en utilisant Node.js
Pour envoyer automatiquement des e-mails avec des pièces jointes à l'aide de l'API Gmail en Python
Créez un filtre pour obtenir un jeton d'accès avec l'API Graph (Flask)
Créez rapidement un serveur API avec Python + Falcon
Essayez d'utiliser l'API DropBox Core avec Python
Créez une interface graphique sur le terminal à l'aide de curses
Utilisez l'API Spotify pour obtenir toutes les chansons des informations sur les chansons d'Arashi et vérifier l'index
[CRUD] [Django] Créer un site CRUD en utilisant le framework Python Django ~ 1 ~
Paramètres initiaux lors de l'utilisation de l'API foursquare avec python
Envoyez et recevez Gmail via l'API Gmail en utilisant Python
Créez une carte thermique de tweet avec l'API Google Maps
Publiez sur votre compte en utilisant l'API sur Twitter
Créer un pseudo serveur d'API REST à l'aide de pages GitHub
J'ai essayé d'utiliser l'API de Sakenowa Data Project
[CRUD] [Django] Créer un site CRUD en utilisant le framework Python Django ~ 2 ~
Utiliser l'API de recherche de la Bibliothèque du Parlement national en Python
[CRUD] [Django] Créer un site CRUD en utilisant le framework Python Django ~ 3 ~
[CRUD] [Django] Créer un site CRUD en utilisant le framework Python Django ~ 4 ~
[CRUD] [Django] Créer un site CRUD en utilisant le framework Python Django ~ 5 ~
Rechercher la table à l'aide de sqlalchemy et créer un dictionnaire