コラム

2021.10.25

【API・データ検証奮闘記】#12.Spotify API(Audio Features)やってみた

本コラムでは、APIやデータに関連する言語などを無邪気に触ってみた備忘録として、ライトに記載していきます!(連載記事はこちら
「ちょっと違くない」「他にいい方法あるのに」といったご意見もあるかと思いますが、何卒お手柔らかに!!

<プロフィール>
富松 良介
2017年、株式会社サイバー・コミュニケーションズ(CCI)入社。Oracle Bluekai・Treasure Data等のDMPや、AWS・GCP等のPublicCloud領域を担務。2019年6月よりデータの利活用を推進するコンサルティング会社「株式会社DataCurrent」に出向し、事業会社の基盤構築・運用や自社ソリューション開発を担当。

●Spotify API(Audio Features)データ取得やってみた

ボス
ボス
SpotifyのAudioFeatures(楽曲詳細)データが欲しい。
モブ
モブ
かしこまり!!

Spotifyの Audio Features (楽曲詳細)データ取得の手順から取得した結果までをご紹介致します。

対象 Spotify Audio Features (楽曲詳細)データ
URL: https://developer.spotify.com/console/get-audio-features-track/

ステップ1. どうやって取得できるか調査してみた

モブ1
モブ1
API!!
モブ2
モブ2
手動!!
モブ3
モブ3
ツール!!
モブ
モブ
APIで取得することにしよう!!
ボス
ボス
それでやってくれ。

●ステップ2. データ取得してみた

早速Pythonでデータを取得してみる。

pip install spotipy==2.17.1
import spotipy
from spotipy.oauth2 import SpotifyClientCredentials
import os, sys
import pandas as pd

uri = ['spotify:track:***********************','spotify:track:***********************','spotify:track:***********************','spotify:track:***********************','spotify:track:***********************','spotify:track:***********************','spotify:track:***********************','spotify:track:***********************','spotify:track:***********************']
client_id = '********************************'
client_secret = '********************************'

class SpotifyAPI(object):
  def __init__(self, client_id, client_secret):
    self.client_credentials_manager = spotipy.oauth2.SpotifyClientCredentials(client_id, client_secret)
    self.spotify_instance = spotipy.Spotify(client_credentials_manager=self.client_credentials_manager)

  def get_audio_features(self, uri):
    results = self.spotify_instance.audio_features(uri)
    audio_features_list = []
    for audio_features in results:
      audio_features_list.append([
        audio_features.get('danceability'),
        audio_features.get('energy'),
        audio_features.get('key'),
        audio_features.get('loudness'),
        audio_features.get('mode'),
        audio_features.get('speechiness'),
        audio_features.get('acousticness'),
        audio_features.get('instrumentalness'),
        audio_features.get('liveness'),
        audio_features.get('valence'),
        audio_features.get('tempo'),
        audio_features.get('type'),
        audio_features.get('id'),
        audio_features.get('uri'),
        audio_features.get('track_href'),
        audio_features.get('analysis_url'),
        audio_features.get('duration_ms'),
        audio_features.get('time_signature')
      ])
    result_df = pd.DataFrame(
                  audio_features_list,
                  index=None,
                  columns=['danceability',
                          'energy',
                          'key',
                          'loudness',
                          'mode',
                          'speechiness',
                          'acousticness',
                          'instrumentalness',
                          'liveness',
                          'valence',
                          'tempo',
                          'type',
                          'id',
                          'uri',
                          'track_href',
                          'analysis_url',
                          'duration_ms',
                          'time_signature']
                )
    return result_df


def main():
  spotify = SpotifyAPI(client_id, client_secret)
  df = spotify.get_audio_features(uri)

if __name__ == '__main__':
  main()

ステップ3. 取得結果

意識高いモブ
意識高いモブ
ちなみに、client_id、client_secretはSpotifyにログインして管理画面から取得する必要があるよ!

最後に

弊社では、定点的なリサーチやトレンドの分析をおこなっています。性別や年代等の属性や検索トレンドのダッシュボード提供等様々なパッケージをご用意しておりますので、お気軽にお問い合わせください。

》顧客分析サービスの詳細はこちら

》トレンドモニタリングサービスの詳細はこちら

本データに関するお問い合わせは下記にて承ります。
株式会社DataCurrent
info@datacurrent.co.jp