LoginSignup
1
0

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

Last updated at Posted at 2024-04-02

Spotify APIを使って曲の分析をできることを知りました

特に業務で使うものではなかったのですが、音楽好きなものとして使ってみたくつかってみることにしました

事前準備

APIを使用するには、Spotifyでアプリを作成する必要があります 

  1. Spotify developerページにアクセスしログイン
  2. 右上のユーザー名クリックでメニューを開き[Dashboard]からダッシュボードに移動
  3. [Create App]からアプリを作成します、入力欄にそって必要なものを入力
  4. 作成できたらアプリ名をクリックし、settingから設定に移動します
  5. Client ID とClient secretは実装時使用するのでメモしておいてください
    スクリーンショット 2024-02-21 20.10.56.png

データ取得して

楽曲のデータを取得してみます
Spotifyを開いて曲検索すると、URLの末尾がランダムな文字列になっております
こちらを使用します、今回私が大好きなBUMP OF CHICKENの天体観測を使います

スクリーンショット 2024-03-20 23.43.57.png

api.py

import spotipy
from spotipy.oauth2 import SpotifyClientCredentials


my_id = 'API Client ID'
my_secret = 'API Client secret'

ccm = SpotifyClientCredentials(client_id = my_id, client_secret = my_secret)
sp = spotipy.Spotify(client_credentials_manager = ccm)

music_id = "3hRRYgBeunE3PTmnzATTS0" # 天体観測のmusic_id
result = sp.audio_features(music_id)

print(result)

返り値

[
	{
		"danceability": 0.366,
		"energy": 0.949,
		"key": 1,
		"loudness": -3.552,
		"mode": 1,
		"speechiness": 0.11,
		"acousticness": 0.381,
		"instrumentalness": 0,
		"liveness": 0.0902,
		"valence": 0.467,
		"tempo": 164.979,
		"type": "audio_features",
		"id": "3hRRYgBeunE3PTmnzATTS0",
		"uri": "spotify:track:3hRRYgBeunE3PTmnzATTS0",
		"track_href": "https://api.spotify.com/v1/tracks/3hRRYgBeunE3PTmnzATTS0",
		"analysis_url": "https://api.spotify.com/v1/audio-analysis/3hRRYgBeunE3PTmnzATTS0",
		"duration_ms": 263600,
		"time_signature": 4
	}
]

パラメータ 説明
danceability ダンスに適しているか
acousticness アコースティック感
popularity 相対的人気度
energy エネルギッシュ度
instrumentalness インスト感(歌声がない割合)
liveness ライブ感(聴衆がいるか)
valence 曲の陽性度
tempo テンポ

応用

Spotifyでは1曲単位でなく、プレイリスト、または、アルバムのURLから曲一覧を取得することができます。

アルバムから曲一覧を取得し、分析データをCSVに出力するサンプルを作成しました
※ソース内の#プレイリストからに切り替えたら、プレイリストからも作成できます

感想

思いの外手軽に楽曲情報を取得できて驚いた

こういう情報をもとに、Spotify側で自身の好みなどに合わせておすすめ出してくれてるんだろうか?

これをどう使うか、活用事例が浮かんだらまたやってみようと思います

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0