2022年5月8日日曜日

Spotify APIで再生回数トップ50の曲データを取得する

音楽ストリーミングサービスの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 件のコメント:

コメントを投稿