Spotifyのサイトから直接DL
サイトへ飛んでボタンをクリックするだけという極めてシンプルな方法です。
最も楽な方法なのではじめに紹介しましたが、今回の可視化では使いません。
※今回は「Japan Top 200 – Daily – 2020/12/10」としましたが、フィルターは自由に設定してください。

Organize Your Music
① Organize Your Musicにサインイン
② 表示されたデータをコピーし、エクセルに貼り付けて保存
② 表示されたデータをコピーし、エクセルに貼り付けて保存
Organize Your Musicにサインイン
まず、Spotifyのどんなデータを閲覧したいかを選択。
(保存した曲 / プレイリストに追加した曲 / フォロー中のプレイリスト..etc)
そしてSpotifyアカウントで認証が求められるので、それを入力した後「ORGANIEZE YOUR MUSIC」をクリックします。
表示されたデータをコピーし、エクセルに貼り付け
下の画像のようなデータが表示されるので、手動選択でエクセルにコピペします。
というやり方もあるのですが、これでは芸が無いので今回は「HTMLのコピー」で行うことにします。
※前述した手動選択でも問題はないのですが、人的ミスや一部のNULLで表の構造がズレることを考慮すると避けた方が良いのかもしれません。
MacだとHTMLのコピーはこんな感じです。
コピーしたHTMLはそのままエクセルに貼り付ければ表構造として読み取ってくれます。
そして不要な列や行を削除するとこんな感じです。
API
① Pythonの環境を用意
② Client ID・Client Secretを取得
③ Japan Top 200のデータを加工
④ 自分のSpotifyのデータを加工
② Client ID・Client Secretを取得
③ Japan Top 200のデータを加工
④ 自分のSpotifyのデータを加工
Pythonの環境を用意
今回はみんな大好きGoogle Colaboratoryを使います。
Pythonが実行できれば何でも良いので、Jupyter Notebookなどでも大丈夫です。お好みでどうぞ。
Spotify for Developerにログイン
Spotify for Developer > Dashboard (こちら)に自分のSpotifyアカウントでログインし「CREATE AN APP」
すると以下のような画面が現れるので、App name・App descriptionを適当に入力して「CREATE」

次の画面で「Client ID」「Client Secret」が出るので、それを忘れずにメモ。

Japan Top 200のデータを加工
Spotify API Documentはこちら
!pip install spotipy # Spotify APIを叩くためのライブラリ import pandas as pd # データの処理に必要。Google Colab標準装備 import spotipy from spotipy.oauth2 import SpotifyClientCredentials # oauth2で安全に対話 import json # jsonファイルを扱う際に必要 client_id = 'input your client id' # 先ほど入手したClient ID client_secret = 'input your client secret' # 先ほど入手したClient Secret client_credentials_manager = spotipy.oauth2.SpotifyClientCredentials(client_id, client_secret) spotify = spotipy.Spotify(client_credentials_manager=client_credentials_manager)
実行するとこんな感じの画面になるはずです。

左のサイドバーからファイルマークを選択し、上でDLしたファイルをローカルからアップします。
※ただしGoogle Colaboratoryは、ノートブックのセッションが切れて90分経過 or 新しいインスタンスを起動して12時間経過したらインスタンスがリセットされるので注意してください。

# pandasでexcelファイルを読み込み # 曲名にカンマが含まれておりcsvの構造が崩れてしまったので今回はexcelファイルとします jp_daily = pd.read_excel("regional-jp-daily-latest.xlsx")
※今回は手間省略のためexcelに切り替えましたが、Google Colabratoryで完結させたい方はcsvを直接加工しても良いかもしれません。

track_traits = pd.DataFrame() # 空のdfを作成 for url in jp_daily["URL"]: # jp_dailyのURL列を1つずつなめる a = pd.DataFrame.from_dict(spotify.audio_features(url)) # URLに該当する曲の特徴を抽出 track_traits = track_traits.append(a) # 読み込んだ特徴を行へ追加 track_traits = track_traits.reset_index(drop=True) # 後のconcatのためにindex削除。

spotifyのライブラリから、曲の特徴量を抜いてきました。
次は上の2つのdfを横方向にガッちゃんこさせて、excel形式で出力します。
m = pd.concat([jp_daily, track_traits], axis=1) # 横方向にキー無しで結合 m.to_excel('jp_daily_fixed.xlsx', index=False) # indexは不要なので削除
コードが実行できると左に「jp_daily_fixed」というファイルが生成されるので、それを右クリックでダウンロードすれば完了です。

自分のSpotifyデータを加工
「spotify_saved_20201212.xlsx」でも十分楽しめますが、曲のURLが入っていないのが気になります。
ここから先はゴリ押しでURLやその他ID情報などを追加したいと思います。
流れとしては、
- 「アーティスト名」「曲名」の文字列を結合し、新規カラムを作成
- 結合した文字列をSpotifyの検索窓に入力(API経由)
- ヒットした曲のデータの先頭の情報を読み込む
- その配列の中からURL情報を取得
- そのURLを元のエクセルファイルに結合
です。
下の赤枠が今回取得したいURLで、これを「spotify_saved_20201212.xlsx」に追加するのがゴールです。

説明は割愛しますが、以下のコードを実行すれば良いです。
各行の説明はコメントアウトしたので参考にどうぞ。
s = pd.read_excel('spotify_saved_20201212.xlsx') s['track'] = s['title'] + ' ' + s['artist'] #曲名とアーティストを結合させて「track」という新しい列を作成 s_info = pd.DataFrame() for track in s['track']: t = spotify.search(track, limit=1, offset=0, type='track',market=None) # spotify内で"track"の文字列で検索 t = t['tracks']['items'] # リストにネストされた辞書が返ってくる t = pd.io.json.json_normalize(t, sep='_') # リスト内にネストされた辞書を個別のカラムに分離 s_info = s_info.append(t) # 求めたいURLをゲット s_info = s_info.reset_index(drop=True) s_info = s_info[['name','explicit','href','id','album_id','album_name','external_urls_spotify']] # 必要なカラムのみを抽出 s_fixed = pd.merge(s, s_info, left_on='title', right_on='name', how='left') # キーを指定してleft join s_fixedm.to_excel('jp_daily_fixed.xlsx', index=False) # xlsx形式で出力
実行が成功していればファイルが生成されるので、右クリックでダウンロードします。


以上でAPIを使ったデータの準備は終了です。お疲れ様でした。
※本来はこのクエリをスケジュール更新したいところなのですが、Google Colabには該当機能がないので今回は諦めます。
Web Data Connector (Tableau限定)
① Tableau Desktopのデータソース接続欄から”Web Data Connector”を選択
(接続方法がわからない方はこちら)
② “https://spotify-wdc.herokuapp.com:443/”を入力
③ 自分のアカウントでログインし、データ範囲(直近1ヶ月/直近6ヶ月/全部)を選択
(接続方法がわからない方はこちら)
② “https://spotify-wdc.herokuapp.com:443/”を入力
③ 自分のアカウントでログインし、データ範囲(直近1ヶ月/直近6ヶ月/全部)を選択
以下のようにTableauでデータのプレビューが表示されていれば成功です。