Python で Spotify API を叩く

Python で Spotify の REST API を使う方法を簡単に説明します。 Spotify の認証は 4 種類あるのですが、たぶん一番簡単なやつです。 そのためユーザデータにはアクセスできません。

Client ID と Client Secret を取得する

以下の手順で Client ID と Client Secret を取得してください。

  1. Spotify開発者ダッシュボードにログインします。
  2. CREATE AN APPをクリックして適当なアプリを作ります。
  3. アプリ画面に移動して、SHOW CLIENT SECRET をクリックして Client Secret を表示します。この ID と Secret をプログラムコード中で使うのでコピペしましょう。

Spotifyアプリ管理画面

Client Credentials 認証をする

Spotify API には目的に応じて 4 つの認証がありますが、ユーザデータが不要な アプリの場合、一番簡単な Client Credentials が良いでしょう。 公式ページ にある手順で認証を行います。

Spotifyアカウントの client ID と client secret を使います。 http の POST メソッドで、ヘッダに ID と secret を所定のフォーマットで記述し、 データに grant_type: 'client_credentials' と書いてリクエストを 送ります。うまく行くとレスポンスとして

{
  "access_token": "アクセストークン文字列",
  "token_type": "Bearer",
  "expires_in": 3600
}

という JSON が返されるのでaccess_tokenをいただきましょう。 以下がそのコードです。これだけで認証完了です。

import requests
import base64
import json
client_id = 'ここに自分の client ID'
client_secret = 'ここに自分の client seret'
headers = {'Authorization': 'Basic ' + (base64.b64encode((client_id + ':' + client_secret).encode())).decode()}
data    = {'grant_type': 'client_credentials'}
resp0 = requests.post('https://accounts.spotify.com/api/token', data=data, headers=headers)
resp = json.loads(resp0.content.decode())
token = resp0['access_token']

APIを叩いてデータを取得する

あとは Spotify Web API リファレンスを見ながら必要なリクエストを送るだけです。 ここでは Search for Item を使って楽曲を検索してみましょう。 例として "ドラえもん" のキーワードでトラック(曲)を検索します。 先ほど取得したアクセストークン(token)が必要です。

# search API を叩く
headers = {'Authorization': 'Bearer ' + token}
q = 'q=ドラえもん&type=track'    # 検索クエリ文字列
resp0 = requests.get('https://api.spotify.com/v1/search?' + q, headers=headers)
resp = json.loads(resp0.content.decode())
# 結果を アルバム名: トラック名 形式で出力
for i in resp['tracks']['items']:
    print(i['album']['name'], ':', i['name'])

するとこんな結果が得られました。(2022年1月現在)

熱烈!アニソン魂 THE BEST カバー楽曲集 TVアニメシリーズ『ドラえもん』 : 夢をかなえてドラえもん (ED)
Doraemon : Doraemon
ドラえもんのうた(オリジナルアーティスト:山野さと子)[ガイドメロディ無しカラオケ] : ドラえもんのうた(オリジナルアーティスト:山野さと子)[ガイドメロディ無しカラオケ]
卡通王國 : 多啦A夢
doraemon no uta (doraemon lofi) : doraemon no uta (doraemon lofi)
sings her LEGENDS : ドラえもんのうた
JAPAN ANIMESONG COLLECTION VOL.12 [アニソン・ジャパン] : ハグしちゃお (ドラえもん)
Doraemon No Uta (Opening Theme) : Doraemon No Uta (Opening Theme)
Piano Fables, Vol. 1 : Doraemon Theme Song (From "Doraemon")
夢をかなえてドラえもん(ガイド無しカラオケ)[原曲歌手:mao] : 夢をかなえてドラえもん(原曲歌手:mao)
Canciones Infantiles, Series de Televisión : Doraemon (De "Doraemon")
藤子不二雄8bit vol.01 : ドラえもんのうた/ドラえもん(8bit)
Niji (From Stand by Me 2 Doraemon) : Niji (From Stand by Me 2 Doraemon)
ANIME meets JAZZ~Cheerful Songs~ : ドラえもんのうた 「ドラえもん」より
Doraemon : The Shower
ファースト・ディケイド : ドラえもんのうた
Doraemon : Kokoni Inai Anatahe
REi #2 -Haneda International Music Festival Presents- : Himawari No Yakusoku - From anime "Doraemon" - Hata Motohiro
Doraemon OP1 / OP3 (Spanish Version - TV Size) : Doraemon no Uta (From "Doraemon") [Spanish Version - TV Size]
Doraemon : Doraemon no Uta(House ver.)

results matching ""

    No results matching ""