LoginSignup
2
2

More than 1 year has passed since last update.

Spotify API から解析情報をとる

Posted at

はじめに

ID取得とかSpotify APIを使うのに必要なことは既に理解している前提で話していきます。
まだの方はSpotify API をPythonでちょっと遊ぶからどうぞ
あとはノート代わりと自分のモチベ維持のために書いてるのでそんなことわかってるよ!っていう場所もあると思います。
ではスタート

artist_URL取得

今回はspotifyが楽曲の解析情報を提供してくれているとのことなのでそれをみていきたいと思います。そのためにはまず対象となるアーティストが必要です。誰でもいいんですけど個人的に大好きなポルノグラフィティを選びました。そしたらブラウザ版spotifyを立ち上げて、そこの検索ボックスにポルノグラフィティと入力します。ポルノのアーティスト画面が表示されるのでそこのURLを控えます。そのURLhttps://open.spotify.com/artist/5jQa0f5MIMPEK7udL7UpI6の末尾5jQa0f5MIMPEK7udL7UpI6を使います。これで前準備オッケー!!

楽曲IDを取得

では、楽曲解析を行う対象のtrackidを取ります。前回のプログラムをちょっといじって

import spotipy
from spotipy.oauth2 import SpotifyClientCredentials
import sys
import pprint
import spotify_id as si

rank = 0
client_id = si.id()
client_secret = si.secret()
client_credentials_manager = spotipy.oauth2.SpotifyClientCredentials(client_id, client_secret)
porno_id = '5jQa0f5MIMPEK7udL7UpI6'

sp = spotipy.Spotify(client_credentials_manager=client_credentials_manager)

result = sp.artist_top_tracks(porno_id)
#result = sp.audio_features('6KDmk0EF3Qk7zJfDDtRoF2')
pprint.pprint('name     : ' +result['tracks'][rank]['name'])
pprint.pprint('trackID  : ' +result['tracks'][rank]['id'])

これでresultの中のtracknameとtrackIDだけ出力されます。

'name     : THE DAY'
'trackID  : 1tjOClAkdMxDfYPO0xvGbG'

こんな感じにね
THE DAY!名曲だねえ これが人気一位らしいです。他にもrank変数の中身を変えたら

'name     : サウダージ'
'trackID  : 26OxcplUEuMjoqkjwVLcPq'

人気◯位の楽曲idも取れます。ただ、上位10位までしか取れないので自分の好きな曲はspotifyの検索ページのURLから取らないといけない...
プログラム上でやる方法もあるんでしょうけどそれはまた別の回で!

本題

では、本題の解析情報をみていこうと思います。でもここまできたら特に難しいところもなく関数にぶっ込んで終わりです。

import spotipy
from spotipy.oauth2 import SpotifyClientCredentials
import sys
import pprint
import spotify_id as si

rank = 0 
client_id = si.id()
client_secret = si.secret()
client_credentials_manager = spotipy.oauth2.SpotifyClientCredentials(client_id, client_secret)
porno_id = '5jQa0f5MIMPEK7udL7UpI6'

sp = spotipy.Spotify(client_credentials_manager=client_credentials_manager)

tracks = sp.artist_top_tracks(porno_id)
track_id = tracks['tracks'][rank]['id']
result = sp.audio_features(track_id)
pprint.pprint('name     : ' +tracks['tracks'][rank]['name'])
pprint.pprint(result)

これでTHE DAYの楽曲情報が取れました

'name     : THE DAY'
[{'acousticness': 0.000761,
  'analysis_url': 'https://api.spotify.com/v1/audio-analysis/1tjOClAkdMxDfYPO0xvGbG',
  'danceability': 0.512,
  'duration_ms': 241627,
  'energy': 0.933,
  'id': '1tjOClAkdMxDfYPO0xvGbG',
  'instrumentalness': 0,
  'key': 1,
  'liveness': 0.342,
  'loudness': -4.759,
  'mode': 0,
  'speechiness': 0.0738,
  'tempo': 92.998,
  'time_signature': 4,
  'track_href': 'https://api.spotify.com/v1/tracks/1tjOClAkdMxDfYPO0xvGbG',
  'type': 'audio_features',
  'uri': 'spotify:track:1tjOClAkdMxDfYPO0xvGbG',
  'valence': 0.465}]

各パラメータの説明は公式リファレンス参考 
細かく設定されてて壮観ですね
このパラメータを使って自作レコメンド機能を作るのを最終目標として勉強していきます。
というわけで今回はここまで
やることがいっぱい...

参考

PythonでSpotify API [audio_features編]
Spotify API公式リファレンス
Spotipy リファレンス

2
2
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
2
2