PythonでSpotifyのAPIを使ってみたがPodcastの情報は扱えなかった
Oct 17, 2021 23:15 · 1764 words · 4 minute read
音楽だけではなくPodcastも聴くことができるSpotifyは、開発者向けのAPIを公開してくれています。
SpotifyのAPIでPodcastの情報を取得することができるのか試してみました。
目次
最初に結論
2021年10月16日時点では、開発者向けに公開されているSpotifyのAPIからPodcastのデータにアクセスすることはできないようでした。
以降に、確認した手順や調査した内容を記載します。
Spotify for Developersにアプリ情報を登録する
Spotify for Developersでログインし、アプリ情報を登録します。
Spotify for Developers Dashboard
「CREATE AN APP」をクリックします。
作成するアプリの情報を入力します。
アプリが作成されました。
「SHOW CLIENT SECRET」をクリックして、Client idとClient secretを確認します。
これらの値は、SpotifyのAPIにアクセスするときに使います。
動作検証
取得したClient idとClient secretでAPIを使ってみます。
今回はPython向けのライブラリ「Spotipy」を使いました。
2021年10月16日時点の最新版「2.19.0」をインストールします。
Welcome to Spotipy! — spotipy 2.0 documentation
$ pipenv install spotipy
問題なくインストールできたので、早速下記のコードで動作の確認をします。
import spotipy
from spotipy.oauth2 import SpotifyClientCredentials
import sys
import pprint
client_id = {Spotify for Developersで取得したCLIENT ID}
client_secret = {Spotify for Developersで取得したCLIENT SECRET}
client_credentials_manager = spotipy.oauth2.SpotifyClientCredentials(client_id, client_secret)
sp = spotipy.Spotify(client_credentials_manager=client_credentials_manager)
result = sp.search('検索する文字')
pprint.pprint(result)
「Rebuild」という文字で検索した結果がこちら。
APIから情報を取得できています。
{'tracks': {'href': 'https://api.spotify.com/v1/search?query=Rebuild&type=track&offset=0&limit=10',
'items': [{'album': {'album_type': 'album',
'artists': [{'external_urls': {'spotify': 'https://open.spotify.com/artist/1i5HhzrkpHFFDpsUYdz2Fs'},
'href': 'https://api.spotify.com/v1/artists/1i5HhzrkpHFFDpsUYdz2Fs',
'id': '1i5HhzrkpHFFDpsUYdz2Fs',
'name': 'Carrollton',
'type': 'artist',
'uri': 'spotify:artist:1i5HhzrkpHFFDpsUYdz2Fs'}],
{中略}
'duration_ms': 106146,
'explicit': False,
'external_ids': {'isrc': 'QM2PV1501531'},
'external_urls': {'spotify': 'https://open.spotify.com/track/6f6b4gMqP9qxCd3zwMXhVw'},
'href': 'https://api.spotify.com/v1/tracks/6f6b4gMqP9qxCd3zwMXhVw',
'id': '6f6b4gMqP9qxCd3zwMXhVw',
'is_local': False,
'name': "At Doom's Gate",
'popularity': 51,
'preview_url': 'https://p.scdn.co/mp3-preview/5ed71d6101cf6eeed3973e39e921cddab393f27b?cid=f3a8a2548cd3471e9f69ba0e3dfe995b',
'track_number': 1,
'type': 'track',
'uri': 'spotify:track:6f6b4gMqP9qxCd3zwMXhVw'}],
'limit': 10,
'next': 'https://api.spotify.com/v1/search?query=Rebuild&type=track&offset=10&limit=10',
'offset': 0,
'previous': None,
'total': 5684}}
Podcastの情報を検索する
先程のサンプルコードでPodcastのエピソードを検索してみます。
今回検索したのは、こちらのエピソード。
318: Evergreen Todo List (naan) - Rebuild | Spotify でポッドキャスト
Episodeのタイトルで検索してみます。
結果は0件。
{'tracks': {'href': 'https://api.spotify.com/v1/search?query=318%3A+Evergreen+Todo+List+%28naan%29&type=track&offset=0&limit=10',
'items': [],
'limit': 10,
'next': None,
'offset': 0,
'previous': None,
'total': 0}}
「Ed Sheeran」のようなArtist名でも検索することができるので、Rebuildを公開している宮川さんお名前「Tatsuhiko Miyagawa」でも検索してみます。
やはり結果は0件
{'tracks': {'href': 'https://api.spotify.com/v1/search?query=Tatsuhiko+Miyagawa&type=track&offset=0&limit=10',
'items': [],
'limit': 10,
'next': None,
'offset': 0,
'previous': None,
'total': 0}}
「Tatsuhiko」や「Miyagawa」で検索しても、検索結果にRebuildの情報は無し。
APIの検索結果にはPodcastの情報は含まれていないようです。
Webアプリの検索機能を調べる
Spotify for Developersで提供されているAPIの検索機能では、PodcastのEpisode情報を取得することができませんでした。
しかし、同じEpisodeのタイトルをWebアプリで検索すると、検索結果にPodcastのEpisodeが表示されています。
Webアプリの挙動から、「Webアプリは何かしらのJavaScriptフレームワークで動いており、JavaScriptから検索APIを実行している」という推測ができます。
ということで、プロキシツールを使って通信内容を確認してみました。
その結果、Webアプリではhttps://api-partner.spotify.com/
に対して検索リクエストを送信しており、こちらのAPIの検索結果にはPodcastのEpisode情報が含まれていることがわかりました。
「ではWebアプリと同じAPIを使って検索すればいいのでは?」と考えるところですが、こちらのAPIには「認証用の一時的なトークン」や「sha256Hashを使った不正利用検知機能」があるようです。
「勝手に使うんじゃないぞ!」という強い意思を感じますし、おそらく利用規約で禁じられているので、これ以上はやめておきましょう。
最後に
SpotifyのAPIを使ってみましたが、提供されているAPIではPodcastの情報は取得できないことがわかりました。
Podcastの情報もAPIから扱えるようにしてくれないかな・・・。