見出し画像

Spotify APIで遊ぶ 実践編

今回は実際にspotipyを使って遊んでみます。事前準備については前回の記事を参照してください。

まずVisual Studio Codeを立ち上げてターミナルさん(powershell)を開きます。


実践

spotipyには様々な機能があります。今回は、公式サイトの冒頭で紹介されていた①アルバム一覧の出力と、目玉機能の1つである②音響特徴量の出力、という2つの機能を紹介します。

アルバム一覧

まずは特定のアーティストがリリースしているアルバムの一覧を出力してみます。
公式とまったく同じことをやるのはナンセンスなので、多少コードを変更しています。今回はアーティスト名として「Mr.Children」を指定します。私はミスチルが好きだからです。

やっとpython…といきたいところですが、その前にやることがあります。
spotifyではアーティストごとにIDが割り当てられていて(以後アーティストIDと呼びます)、spotipyではそのIDを入力することによってアーティストを指定します。
アーティストIDはspotifyのアプリから入手できます。

PC上でspotifyを開きました
・・・→シェア→アーティストのリンクをコピー

コピーしたものをどこかに貼り付けると、↓のようなURLになっています。
"https://open.spotify.com/intl-ja/artist/1qma7XhwZotCAucL7NHVLY?si=5mNWzlaeSmy2UbycZ2X8mQ"

このうち"artist/"と"?si="の間の文字列がアーティストIDです。この部分をコピーして使います。

試しに以下のコードを実行してみます。
自分で実行する場合には、公式から公開されているものに加えて、必ず自分のIDが必要になります。自分のID2種類の入手方法については前回の記事で解説しています。

import spotipy
from spotipy.oauth2 import SpotifyClientCredentials

# アーティストのリンク。"artist/" と "?si="の間がID
# https://open.spotify.com/intl-ja/artist/1qma7XhwZotCAucL7NHVLY?si=5mNWzlaeSmy2UbycZ2X8mQ

artist_uri = 'spotify:artist:1qma7XhwZotCAucL7NHVLY' # ここにアーティストIDを入力
client_id = '~~~~~~~~~~~~~~~' # ここには自分のclient_idを入力
client_secret = '~~~~~~~~~~~' # ここには自分のclient_secretを入力
spotify = spotipy.Spotify(client_credentials_manager=SpotifyClientCredentials(client_id, client_secret)) # 引数に自分のID2つが必要

results = spotify.artist_albums(artist_uri, album_type='album') # 引数にアーティストIDが必要
albums = results['items']
while results['next']:
    results = spotify.next(results)
    albums.extend(results['items'])

for album in albums:
    print(album['name'])

artist_albums()なるメソッドを使います。
↓が実行結果です。

実行結果

なんかいろいろ出てきました。アルバム名が順番に出力されています。
試しにspotifyアプリ上でのアルバム一覧と比較してみます。

spotify上でのアルバム一覧

しっかり一致しています。

音響特徴量

spotipyの目玉機能の一つと思われるのが、音響特徴量の出力です。spotifyでは各楽曲に対していろいろな指標が与えられており、それがレコメンデーションシステムに使われているようです。

今回はミスチルの中でも私の世代にとって比較的なじみ深い楽曲「GIFT」を指定してみます。2008年北京オリンピックのNHKでの放送のテーマソングですね。
楽曲のIDはspotify上で楽曲欄にある「・・・」から入手できます。アーティストIDと同じような手順です。

import spotipy
import spotipy.oauth2

# 楽曲のリンク。"track/" と "?si="の間がID
# https://open.spotify.com/intl-ja/track/4OVtlZdXvYcg9QykmPxTqb?si=4d590274ecf84c95

track = '4OVtlZdXvYcg9QykmPxTqb' # ここに楽曲IDを入力
client_id = '~~~~~~~~~~~~~~~~' # ここには自分のclient_idを入力
client_secret = '~~~~~~~~~~~~' # ここには自分のclient_secretを入力
client_credentials_manager = spotipy.oauth2.SpotifyClientCredentials(client_id, client_secret) # 引数に自分のIDが必要

sp = spotipy.Spotify(client_credentials_manager=client_credentials_manager)

results = sp.audio_features(track)
result = results[0]
for key, val in result.items():
    print(f'{key} : {val}')

ここではaudio_features()なるメソッドを使います。
書式がさっきのコードと少し違うのは許してください…。
これを実行するとまたいろいろ出てきました。

実行結果

それぞれが音響特徴量、あるいは楽曲の情報です。
それぞれの指標については開発者サイトを参照です。

例えば一番上の「danceability」は0~1の中で0.462でした。「GIFT」は、「踊りやすさ」がやや低めな曲であると解釈できます。実際に曲を聴いてみるとわかるのですが、ある程度の妥当性はありそうです。

私たちが日常生活で実際に聴いている音楽のデータというのは、生態学的妥当性の高い指標になりうるのではないでしょうか。spotipyの音響特徴量抽出は、心理学研究の観点からとても魅力的な機能だと個人的には考えています。(そもそもこれらがブラックボックスな指標である点には注意が必要ですが。)

次回の記事では、私が思いつきでこの音響特徴量を使ってやってみたことを紹介します。

この記事が気に入ったらサポートをしてみませんか?