Spotify APIで好きなプレイリストの楽曲データを取得し、CSV化するの巻
どんな人におすすめの記事なのか?
- Spotifyの楽曲を分析してみたい
- Spotify APIを使ってみたい
この記事を読むと学べること
- Spotify for Developers上での事前設定方法
- Spotifyの楽曲データを取得するためのコードがわかる
Spotify for Developersでの事前設定
Spotify for Developersでの事前設定手順
- https://developer.spotify.com へアクセスする。Spotifyアカウントをお持ちの場合、そのアカウントでログインし、持っていない場合は「Spotifyに登録する」から始める。
- 右上のアカウントアイコンからダッシュボードへ移動する。
- 画面右上のCreate Appをクリックし、App name、App description、Redirect URIsを入力し、Saveする。
- 作成したAppを選択し、画面右上のSettingsを開き、Client IDとClient secret(View Client secretをクリック)をコピペで控えておく。
一瞬でSpotifyの楽曲データを取得し、CSV化する
楽曲データ取得コード
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化できる