音楽ストリーミングサービスのSpotifyにはAPIが用意されていて、曲に関するさまざまなデータを取得できる。今回は、Spotify APIのPythonラッパーであるspotipyを利用して、プレイリストの曲一覧を取得してみる。
環境
WSL2(Ubuntu20.04)。
$ lsb_release -dr Description: Ubuntu 20.04.4 LTS Release: 20.04 $ python3 -V Python 3.8.10
Spotify APIのCLIENT IDとCLIENT SECRETの取得
Spotify APIを使用するには、Spotifyの開発者サイトでアプリを作成してCLIENT IDとCLIENT SECRETを取得する必要がある。
アプリを作成するには、Spotify for DevelopersのDASHBOARDにログインして、「CREATE AN APP」をクリックする。アプリ名(App name)とアプリの説明(App description)を記入するだけで作成できる。アプリを作成すると、DASHBOARDでCLIENT IDとCLIENT SECRETが確認できるようになる。
spotipyのインストール
Spotify APIによるデータ取得には、Spotify APIのPythonラッパーであるspotipyを使う。pipでインストールできる。
$ pip3 install spotipy $ pip3 show spotipy Name: spotipy Version: 2.19.0 ...
インストールしたら、環境変数SPOTIPY_CLIENT_IDとSPOTIPY_CLIENT_SECRETにそれぞれCLIENT IDとCLIENT SECRETを設定しておく。
export SPOTIPY_CLIENT_ID=xxxxxxxxxxxxxxxxxxxxxxxx export SPOTIPY_CLIENT_SECRET=xxxxxxxxxxxxxxxxxxxxxxxx
spotipyでプレイリストの曲一覧を取得
spotipyでプレイリスト「トップ50 日本」の曲一覧を取得してみる。spotipyにはプレイリストの曲情報を取得するためのplaylist_itemsメソッドがあり、引数としてプレイリストIDが必要になる。プレイリストIDは、プレイリストURLの最後の22桁。「トップ50 日本」のプレイリストIDは「37i9dQZEVXbKXQ4mDTEBXq」。
playlist_itmesメソッドで取得できるのは曲名、アーティスト名、曲が含まれるアルバム情報などいろいろある。ここでは曲名とアーティスト名を取得して、一覧表示してみる。
import spotipy from spotipy.oauth2 import SpotifyClientCredentials # language='ja'としないとアーティスト名が英語表記になる spotify = spotipy.Spotify(client_credentials_manager=SpotifyClientCredentials(), language='ja') # プレイリスト「トップ50 日本」のプレイリストID # SpotifyのプレイリストURLの最後の22文字がプレイリストID playlist_id = '37i9dQZEVXbKXQ4mDTEBXq' results = spotify.playlist_items( playlist_id, fields=None, limit=50, offset=0, market='JP', additional_types=('track', 'episode'), ) items = results['items'] tracks = [] for item in items: data = {} track = item['track'] data['name'] = track['name'] data['artists'] = [ar['name'] for ar in track['artists']] tracks.append(data) for i, tr in enumerate(tracks): print(i + 1, tr['name'], '-', '|'.join(tr['artists']))
上記コードを実行すると、以下のようにトップ50の曲一覧が取得できる。
1 W / X / Y - Tani Yuuki
2 シンデレラボーイ - Saucy Dog
3 ミックスナッツ - Official髭男dism
4 ベテルギウス - 優里
5 なんでもないよ、 - マカロニえんぴつ
6 カメレオン - King Gnu
7 水平線 - back number
8 喜劇 - 星野 源
9 ドライフラワー - 優里
10 きらり - 藤井 風
11 残響散歌 - Aimer
12 CITRUS - Da-iCE
13 LOVE DIVE - IVE
14 シャッター - 優里
15 Butter - BTS
16 Dynamite - BTS
17 群青 - YOASOBI
18 恋風邪にのせて - Vaundy
19 勿忘 - Awesome City Club
20 逆夢 - King Gnu
21 Permission to Dance - BTS
22 一途 - King Gnu
23 STAY (with Justin Bieber) - The Kid LAROI|ジャスティン・ビーバー
24 夜に駆ける - YOASOBI
25 点描の唄 - Mrs. GREEN APPLE|井上苑子
...
47 まつり - 藤井 風
48 もう少しだけ - YOASOBI
49 虹 - 菅田 将暉
50 FEARLESS - LE SSERAFIM
0 件のコメント:
コメントを投稿