Spotifyが公開しているAPIを使ってみた話
Spotifyというのは説明するまでもなく定額制(無料でも使えるけど)の音楽ストリーミングサービスなんだけど、そのSpotifyが他の同業サービスとちょっと違うところとしてかなりユーザーに情報を公開しているんですね。
なかでもAPI(Application Programming Interface)というのが面白いと聴いたので、試しにいじってみることにしました。ざっくりいうと外部の人がSpotifyを利用したアプリケーションやサービスを開発したいときに、ここからデータをとってね、というやつです。
SpotifyのAPIはSpotify for Developersから入手。
開発環境は無料で使えるGoogle Colaboratoryを使用しました。
Googleのアカウントさえあれば無料で使えてブラウザ上で動く&すぐに結果が出てくるのでわかりやすいです。
最初に断っておくけどPythonどころかプログラミングの経験ゼロ。WEB上に転がる情報をコピペしながら色々覗いてみました。
参考にしたのはこの記事です。
コードを書いていく
兎にも角にもコードを書いていきます。基本的な知識はProgateを途中で投げ出してしまったのであまりわかっていませんが都度ググりつつ、web上の情報をコピペしつつ進めます。
Spotify APIを扱うためのライブラリSpotipyをインストールして、最初の第一歩。pandasは最初からデフォルトで使えるみたいです。
!pip install spotipy
import pandas as pd
import spotipy
from spotipy.oauth2 import SpotifyClientCredentials
import json
client_id = '自分のID'
client_secret = '自分のID'
client_credentials_manager = spotipy.oauth2.SpotifyClientCredentials(client_id, client_secret)
spotify = spotipy.Spotify(client_credentials_manager=client_credentials_manager)
次にSpotify Chartsからダウンロードしたデータをインポートします。今回は日本のWeekly TOP200のデータを使用しました。
ちなみにこのcsvをインポートする過程はGoogle Colaboratory特有の操作っぽい。一行目が不要なので2行目から読んでもらいます。ファイル名は長かったので適当に短くしました。デフォルトだと一番左の列はランクになっていますが、この後の作業のためにインデックスを振り直してます。するとこんな感じ。
from google.colab import files
uploaded = files.upload()
songs = pd.read_csv("regional-jp-weekly.csv", index_col=0, header=1)
songs.head(200)
songs=songs.reset_index()
songs.head(200)
次にSpotifyが楽曲ごとに埋め込んでいる情報を読み出します。基本的にはコピペしているので意味はわかっていないけどなんとなく構造を想像しながら進めています。
song_info = pd.DataFrame()
for url in songs["URL"] :
df = pd.DataFrame.from_dict(spotify.audio_features(url))
song_info = song_info.append(df)
song_info.head(200)
song_info=song_info.reset_index(drop=True)
song_info.head(200)
するとこんな感じ。
楽曲にたくさんの指標が格納されているのがわかります。なんだこれすごい。acousticness(アコースティック感)、danceabillty(踊りやすさ)、energy(勢い?)といったものから、楽曲のkey情報、テンポ情報まで。企業努力がとてつもないです。
さきほどのランキングのデータフレーム"songs"といまだした"song_info"を結合して、csvファイルに出力します。
基本的にPythonを使いこなせないので、エクセルで扱えるcsvファイルに逃げました。
pd.concat([songs, song_info], axis=1).to_csv("songs.csv")
これによって、日本の再生回数ランキングに、Spotifyがつけた指標値が載ったcsvファイルが生成できました。次の記事でこの中身を見ていきます。
追記
記事を書きました。
この記事は投げ銭です。有料エリアには何も書いていませんが、いいなと思ったらサポートをお願いいたします。
ここから先は
¥ 100
よければサポートをお願いいたします。 Twitter / Instagram→hkrrr_jp