PythonでSpotify APIを使って50曲以上の楽曲情報を抽出する

無料枠ではlimit<=50より,一般的なやり方では50曲以上の楽曲情報を抽出できません.ここでは,offsetを操作してPythonでSpotify APIを使って50曲以上の楽曲情報を抽出します.

全国630店舗以上!もみほぐし・足つぼ・ハンドリフレ・クイックヘッドのリラクゼーション店【りらくる】

# Spotify APIの導入

Spotify APIの導入は下記のサイトを参考にしてください.

# 楽曲情報の抽出

楽曲情報の抽出は下記のサイトを参考にしてください.

# offsetの操作

offsetは抽出する情報で最初の何個をとばすかを指定できます. 無料枠では0~1049まで指定でき,次章ではfor文で回して50ごとにoffsetを指定してより多くの楽曲情報を抽出します.

# 50曲以上の邦楽情報抽出

下記のコードで50曲以上の邦楽情報抽出を実行します.

工程は下記の通りです.

  1. SpotifyAPIの起動
  2. offsetの操作
  3. 2000年の楽曲で検索
  4. 楽曲IDを取得
  5. metaに楽曲情報を格納
  6. external_idsより邦楽か判定する
  7. spotify.audio_features()で楽曲特徴を抽出
  8. getTrackFeaturesで楽曲情報と特徴をリスト化
  9. リストからデータフレームへ変換
import time
import spotipy
import pprint
from spotipy.oauth2 import SpotifyClientCredentials

# APIのIDとキー
MyID = "****************" #client ID
MySecret= "****************"  #client secret

# 工程1_spotifyAPI起動
ccm = SpotifyClientCredentials(client_id = MyID, client_secret = MySecret)
spotify = spotipy.Spotify(client_credentials_manager = ccm)

year = 2000
tracks = []
# 工程2_offsetの操作
for num in range(0, 1049, 50):
    # 工程3_検索実行
    result = spotify.search(q=f'year:{year}', limit=50, offset=0, type='track', market='JP')

    for track in result['tracks']['items']:
        # 工程4_楽曲IDを取得
        track_id = track['id']
        time.sleep(0.5)
        # 工程5_楽曲情報の抽出
        meta = spotify.track(track_id)
        # 工程6_邦楽判定
        if not meta['external_ids']['isrc'][0:2] == 'JP':
            continue
        # 工程7_楽曲特徴の抽出
        features = spotify.audio_features(track_id)
        track_info = getTrackFeatures(track_id, meta, features)
        tracks.append(track_info)
        # 工程8_重複削除
        tracks = list(map(list, set(map(tuple, tracks))))
    
## 工程9_リスト→データフレーム&csv出力
# データフレームに格納
df = pd.DataFrame(tracks, columns = ['track_id', 'name', 'album', 'artist', 'release_date', 'country', 'length', 'popularity', 'key', 'mode', 'danceability', 'acousticness', 'energy', 'instrumentalness', 'liveness', 'loudness', 'speechiness', 'tempo', 'time_signature', 'valence'])
# お気に入り降順にソート
df.sort_values('popularity', ascending=False, inplace=True)
display(df.head())

# まとめ

ここまでで,offsetを操作してPythonでSpotify APIを使って50曲以上の楽曲情報を抽出しました.

次回から,1970年から各年で取得してDBに格納します.

# 参考サイト

PythonでSpotify APIを使ってみる ~全ての音楽愛好家のためのSpotify API ep 1~ (opens new window)

PythonでSpotify API [情報の文字列検索] (opens new window)

Spotify 検索 (opens new window)

Spotify API Search for Item (opens new window)

ISO 3166-1 alpha-2 wiki (opens new window)

Spotify Web APIから分析用データセットをつくる (opens new window)

Billboard×Spotifyで「〇〇年代を代表する曲」を決めよう! (opens new window)

Spotify.Tracks (opens new window)

Pythonで2次元配列の重複行を一発で削除する (opens new window)

全国630店舗以上!もみほぐし・足つぼ・ハンドリフレ・クイックヘッドのリラクゼーション店【りらくる】

PythonでSpotify APIを使って1970年から2021年までの楽曲情報を抽出する

PythonでSpotify APIを使って1970年から2021年までの楽曲情報を抽出する

PythonでSpotify APIを使って1970年から2021年までの楽曲情報を抽出しDBに格納します.

PythonでSpotify APIを使って邦楽情報を抽出する

PythonでSpotify APIを使って邦楽情報を抽出する

PythonでSpotify APIを使って邦楽情報を抽出します.