Np-Urのデータ分析教室

オーブンソースデータなどWeb上から入手できるデータを用いて、RとPython両方使って分析した結果を書いていきます

Python × Spotify API で音楽データを分析するための事前準備

久しぶりの記事更新です…!

世の中にある実データを可視化や分析してみることはとても楽しいことですよね?
過去に執筆した以下の書籍でも、そのコンセプトで、実際の不動産取引データやTwitterデータを使って色々な分析をしてみてました。

今回は、Python と Spotify の APIを使って音楽データの分析をしてみたいと思います!

本記事では、まずAPIを使うための準備とPythonでのサンプルコードの紹介をします。
次回記事で実際に分析をしてみます。

Spotify API

Spotify は音楽ストリーミングサービスですが、その API を使うことで、ユーザーのプレイリストや楽曲情報を取得することができます。
まずは、Spotify の API を使うための準備をしていきます。

Spotify Developer Dashboardへログイン

Spotifyのアカウントがまだ無い方は、まずはアカウントを作成してください。

続いて、Spotify Developer ページ にアクセスします。

Spotify Developer画面
Spotify Developer画面

右上のログインボタンをクリックし、Spotifyのアカウントでログインします。
ログインしたら、Dashboard にアクセスします。

下のような確認画面が表示されるので、「Accept the terms」をクリックします。

規約同意画面
規約同意画面

以下のように「Create app」という画面が表示されれば、一旦OKです。

Spotiryアプリ作成画面
Spotiryアプリ作成画面

Spotify API の Client ID と Client Secret の取得

「Create app」をクリックすると、以下のような画面が表示されます。

アプリ作成画面
アプリ作成画面

以下の情報を入力して、「Save」ボタンを押してください。

  • App Name: 任意のアプリ名を入力 (あとで分かれば良いので、適当でもOK)
  • App Description: 任意のアプリ説明を入力 (ここも適当でOK)
  • Redirect URIs: 任意のURLを入力 (ユーザー認証後にリダイレクトされるURLです。今回は使いませんので、「localhost」などでOK)

保存出来たら、右上の「Settings」ページに移動してください。

アプリ作成完了画面
アプリ作成完了画面

このページに表示されている、Client ID と Client Secret をメモしておいてください。

これにて、Spotify API の準備は完了です!!

PythonでSpotify APIを使う

spotipy ライブラリのインストール

Python で Spotify API を使うために、以下のライブラリをインストールすると便利です!

以下を実行して、インストールしておきましょう!

$ pip install spotipy

Spotify API でユーザーのプレイリストを取得

以下のコードを実行すると、Spotify API にアクセスして、ユーザーのプレイリスト情報を取得することができます。

YOUR_CLIENT_IDとYOUR_CLIENT_SECRETには、先ほど取得したClient IDとClient Secretをコピペしてください。

import spotipy
from spotipy.oauth2 import SpotifyClientCredentials


client_id = 'YOUR_CLIENT_ID'
client_secret = 'YOUR_CLIENT'

client_credentials_manager = SpotifyClientCredentials(client_id=client_id, client_secret=client_secret)
sp = spotipy.Spotify(client_credentials_manager=client_credentials_manager)

# ユーザーのプレイリスト情報を取得
playlists = sp.user_playlists('spotify')

for playlist in playlists['items']:
    print(f"name: {playlist['name']}, description: {playlist['description']}")

実行すると、Spotify の公式プレイリストの名前と概要が表示されるはずです。

プレイリスト一覧取得結果
プレイリスト一覧取得結果

これで、Spotify API を使って、ユーザーのプレイリスト情報を取得することができました!

コードの説明を軽くすると、以下部分で、Spotify API にアクセスするためのクライアントを作成しています。

client_credentials_manager = SpotifyClientCredentials(client_id=client_id, client_secret=client_secret)
sp = spotipy.Spotify(client_credentials_manager=client_credentials_manager)

そして、以下部分で、ユーザーのプレイリスト情報を取得しています。
"spotify" というユーザー名を他のユーザー(例えば、あなた自身のユーザー名)に変更すると、そのユーザーが作成したプレイリスト一覧を取得できます!

playlists = sp.user_playlists('spotify')

for playlist in playlists['items']:
    print(f"name: {playlist['name']}, description: {playlist['description']}")

自分自身のユーザー名はSpotifyのユーザーページにいくと確認できます

Spotifyプロフィールページ
Spotifyプロフィールページ

他のサンプルコード

他にも、Spotify API を使って、様々な情報を取得することができます。

例えば、以下のような情報を取得することができます。

- 曲の長さ(duration_ms)
- 音の大きさ(loudness)
- BPM(tempo)
- ライブ感(liveness)

- アーティストの人気曲
- 類似するアーティスト情報

今回は、その中から、各曲の特徴を取得してみたいと思います。

各曲の特徴を取得するPythonコード

以下は、曲IDが "6a5FG3A5rkMvcrig6QJPpC" の曲の特徴を取得するコードです。
ちなみにこの曲は、Enjoy Music Club の 「グッド・バッド・ストーリー」という曲です。

import spotipy
from spotipy.oauth2 import SpotifyClientCredentials

client_id = 'YOUR_CLIENT_ID'
client_secret = 'YOUR_CLIENT'

client_credentials_manager = SpotifyClientCredentials(client_id=client_id, client_secret=client_secret)
sp = spotipy.Spotify(client_credentials_manager=client_credentials_manager)

track_id = '6a5FG3A5rkMvcrig6QJPpC'
# アーティスト名
artist_name = sp.track(track_id)['album']['artists'][0]['name']
# 曲名
track_name = sp.track(track_id)['name']
# 各曲の特徴を取得
track_features = sp.audio_features(tracks=[track_id])

print(f"Artist Name: {artist_name}")
print(f"Track Name: {track_name}")
print(f"Track Features: {track_features}")

実行すると以下の結果が表示されます。

Spotify APIで曲の特徴を取得
Spotify APIで曲の特徴を取得

まとめと次回予告

次回は、今回紹介したSpotify APIを用いて、ここ最近日本国内で聴かれる曲の傾向を分析していきます。
そして、傾向の変化点(何がきっかけで聴かれる曲が変わったのか?)がどこにあったのかを深堀りできたらを考えています。