Spotify APIで好きなプレイリストの楽曲データを取得し、CSV化するの巻

どんな人におすすめの記事なのか?

  • Spotifyの楽曲を分析してみたい
  • Spotify APIを使ってみたい

この記事を読むと学べること

  • Spotify for Developers上での事前設定方法
  • Spotifyの楽曲データを取得するためのコードがわかる

Spotify for Developersでの事前設定手順

  1. https://developer.spotify.com へアクセスする。Spotifyアカウントをお持ちの場合、そのアカウントでログインし、持っていない場合は「Spotifyに登録する」から始める。
  2. 右上のアカウントアイコンからダッシュボードへ移動する。
  3. 画面右上のCreate Appをクリックし、App name、App description、Redirect URIsを入力し、Saveする。
  4. 作成したAppを選択し、画面右上のSettingsを開き、Client IDとClient secret(View Client secretをクリック)をコピペで控えておく。

楽曲データ取得コード

Google Colaboratoryに以下コードをコピペし、クライアントID、クライアントシークレット、そしてSpotifyのプレイリストIDを任意のものに置き換え、実行する。

#%% [code]
!pip install spotipy

#%% [code]
import time
from spotipy.oauth2 import SpotifyClientCredentials
import spotipy
import pandas as pd

#%% [code]
# Spotify APIのクライアントIDとクライアントシークレットを設定
client_id = 'your_client_id_here'  # 自分のクライアントIDに置き換えてください
client_secret = 'your_client_secret_here'  # 自分のクライアントシークレットに置き換えてください
client_credentials_manager = SpotifyClientCredentials(client_id, client_secret)

sp = spotipy.Spotify(client_credentials_manager=client_credentials_manager)

#%% [code]
def getTrackIDs(playlist_ids):
    track_ids = []
    for playlist_id in playlist_ids:
        playlist = sp.playlist(playlist_id)
        for item in playlist['tracks']['items']:
            track_id = item['track']['id']
            if track_id not in track_ids:
                print(f'Adding track {track_id} to track_ids')
                track_ids.append(track_id)
    return track_ids

#%% [code]
playlist_ids = ['xxxxxxxxxxxxxxxxx']  # SpotifyのプレイリストのIDを入力
track_ids = getTrackIDs(playlist_ids)

print(f'Number of tracks: {len(track_ids)}')
print(track_ids)

#%% [code]
def getTrackFeatures(track_id):
    meta = sp.track(track_id)
    features = sp.audio_features(track_id)[0]

    track_info = [
        meta['name'], 
        meta['album']['name'], 
        meta['album']['artists'][0]['name'], 
        meta['album']['release_date'], 
        meta['duration_ms'], 
        meta['popularity'], 
        features['key'], 
        features['mode'], 
        features['danceability'], 
        features['acousticness'], 
        features['energy'], 
        features['instrumentalness'], 
        features['liveness'], 
        features['loudness'], 
        features['speechiness'], 
        features['tempo'], 
        features['time_signature'], 
        features['valence']
    ]
    return track_info

#%% [code]
tracks = []
for track_id in track_ids:
    time.sleep(0.5)  # Spotify APIのレート制限を避けるために0.5秒の遅延を追加
    track = getTrackFeatures(track_id)
    tracks.append(track)
    
print(tracks)

#%% [code]
# データフレームに変換し、CSVファイルとして保存
df = pd.DataFrame(tracks, columns=[
    'name', 'album', 'artist', 'release_date', 'length', 'popularity', 'key', 'mode', 
    'danceability', 'acousticness', 'energy', 'instrumentalness', 'liveness', 
    'loudness', 'speechiness', 'tempo', 'time_signature', 'valence'
])
df.head()

# CSVファイルとして保存し、ダウンロード可能にする
csv_filename = 'spotify_tracks.csv'
df.to_csv(csv_filename, encoding='utf_8_sig')

from google.colab import files
files.download(csv_filename)

補足:SpotifyのプレイリストIDについて

任意のプレイリストを開き、一番右の三点リーダーから、シェア > プレイリストのリンクをコピーする。
リンクが”https://open.spotify.com/playlist/37i9dQZF1DXcFHus2afh6U?si=ce870221ae3d4bc4“の場合、プレイリストIDは”37i9dQZF1DXcFHus2afh6U”である。

Spotify APIを利用することで、楽曲データを取得し、データ分析に活用していくことができる。面倒なコードを書く作業やデータ準備の時間を削減し、データの可視化、分析の時間を充実させてほしい。

  • Spotify APIを利用することで好きなプレイリストの楽曲データを取得できる
  • 取得したデータをCSV化できる