久しぶりの記事更新です…!
世の中にある実データを可視化や分析してみることはとても楽しいことですよね?
過去に執筆した以下の書籍でも、そのコンセプトで、実際の不動産取引データやTwitterデータを使って色々な分析をしてみてました。
今回は、Python と Spotify の APIを使って音楽データの分析をしてみたいと思います!
本記事では、まずAPIを使うための準備とPythonでのサンプルコードの紹介をします。
次回記事で実際に分析をしてみます。
Spotify API
Spotify は音楽ストリーミングサービスですが、その API を使うことで、ユーザーのプレイリストや楽曲情報を取得することができます。
まずは、Spotify の API を使うための準備をしていきます。
Spotify Developer Dashboardへログイン
Spotifyのアカウントがまだ無い方は、まずはアカウントを作成してください。
続いて、Spotify Developer ページ にアクセスします。
右上のログインボタンをクリックし、Spotifyのアカウントでログインします。
ログインしたら、Dashboard にアクセスします。
下のような確認画面が表示されるので、「Accept the terms」をクリックします。
以下のように「Create app」という画面が表示されれば、一旦OKです。
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 API を使って、様々な情報を取得することができます。
例えば、以下のような情報を取得することができます。
- 各曲の特徴(詳細は、API公式仕様書)
- 曲の長さ(duration_ms)
- 音の大きさ(loudness)
- BPM(tempo)
- ライブ感(liveness)
- アーティスト情報(詳細は、API公式仕様書)
- アーティストの人気曲
- 類似するアーティスト情報
今回は、その中から、各曲の特徴を取得してみたいと思います。
各曲の特徴を取得する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を用いて、ここ最近日本国内で聴かれる曲の傾向を分析していきます。
そして、傾向の変化点(何がきっかけで聴かれる曲が変わったのか?)がどこにあったのかを深堀りできたらを考えています。