データアナリストのメモ帳

データアナリストのメモ帳

IT企業で働くデータアナリストのブログ

【Python】SpotifyのAPIを使ってaikoの人気曲とアルバムを取得する

SpotifyのAPIを使ってaikoの人気曲とアルバムを取得する

SpotifyAPIを使うと、色々と楽しそうなことができるみたいなので試してみます。
この記事では、以下の2つを解説します。

  • アーティストの人気曲の取得
  • アーティストのアルバムの取得

とりあえず、自分の好きなaikoPUFFYMayday(台湾のアーティスト)の楽曲をSpotify APIで探してみたいと思います。

Spotify APIを使うための準備

まず、Spotifyのアカウントを持っていない場合は以下のリンクからアカウントを作りましょう。
https://www.spotify.com/jp/

次に、client_idとclient_secretが必要になるので、以下のリンクから取得してください。
https://developer.spotify.com/dashboard/

Pythonの開発環境がある方は、以下のコマンドでSpotifyAPIを使えるようにします。

pip install spotipy

spotifyではなくspotipyなんですね〜

簡単ですが、準備はこれでOKです。
リファレンスは次のリンクから。わからないことがあれば適宜参照してください。
https://spotipy.readthedocs.io/en/2.9.0/

Spotify APIでアーティストのTop Tracksを取得する

ここからが本題!好きなアーティストのTop Tracks(人気の曲)を取得してみます。
まず、先程取得したclient_idとclient_secretを入力して、認証をします。

# import modules
import pandas as pd
import spotipy
from spotipy.oauth2 import SpotifyClientCredentials

client_id = 'XXXXXXXXXXXXXXXX'
client_secret = 'XXXXXXXXXXXXXXXX'
client_credentials_manager = spotipy.oauth2.SpotifyClientCredentials(client_id, client_secret)
spotify = spotipy.Spotify(client_credentials_manager=client_credentials_manager)

次にアーティストのIDを取得します。
APIを使ってアーティストを検索することもできるのですが、ここではSpotifyのWebページから取得します。

Spotifyのページからアーティストを検索し、アーティストページのURLの末尾の文字列をコピーします。
このページのURLですね。

SpotifyのAPIを使ってaikoの人気曲とアルバムを取得する https://open.spotify.com/artist/6TDMbiQCWeMClsMr9ORLRK

# アーティストのID
artist = 'spotify:artist:6TDMbiQCWeMClsMr9ORLRK' # aiko

このIDを使って、色々やってみます。
まずはTop Tracksを取得してみましょう。

spotify.artist_top_tracks(artist)

とすると、指定したアーティストの人気の10曲を取得できるようです。
曲の情報はかなり詳細に記されているのですが、そのうちの一部を取り出しましょう。

  • 曲名
  • リリース日
  • 曲の長さ
  • 人気度(popularity)
  • プレビューのURL
  • 収録されているアルバムの画像のURL
  • これらを取得してDataFrameにします。

    # Top Tracksを取得して、曲名、リリース日、人気度(popularity)などをDataFrameとして表示する
    results = spotify.artist_top_tracks(artist)
    
    name = []
    release_date = []
    duration_ms = []
    popularity = []
    preview_url = []
    images_url = []
    
    for track in results['tracks']:
        name.append(track['name'])
        release_date.append(track['album']['release_date'])
        duration_ms.append(track['duration_ms'])
        popularity.append(track['popularity'])
        preview_url.append(track['preview_url'])
        images_url.append(track['album']['images'][0]['url'])
        
    df_tracks = pd.DataFrame()
    df_tracks['name'] = name
    df_tracks['release_date'] = release_date
    df_tracks['duration_ms'] = duration_ms
    df_tracks['popularity'] = popularity
    df_tracks['preview_url'] = preview_url
    df_tracks['images_url'] = images_url
    

    すると、以下のようにDataFrameを作ることができます。
    カブトムシ、キラキラ、花火などaikoの代表的な曲が並んでいるのがわかります。
    popularityが一番大きいのは青空ですね。

    SpotifyのAPIを使ってaikoの人気曲とアルバムを取得する

    リリース日が年だったり年月日だったりすのが気になりますが・・・まあいいでしょう。

    アーティストのアルバム情報を取得する

    次に、アルバム情報を取得しましょう!
    アルバムに関しても、かなり詳細な情報が取得できるようですが、ここでは以下を取りだしてみます。

  • アルバム名
  • リリース日
  • 含まれている曲数
  • SpotifyのURL
  • ここで、アルバムを利用可能な地域"available_markets"を['JP']に指定しておきます。
    こうしておくことで、日本語名のアルバムのみを取り出せます。
    ※外国のアーティストなら指定しなくてもいいかも。詳しくは実際に触ってみてください。

    # アルバム情報を取得して、アルバム名、リリース日、URLなどをDataFrameとして表示する
    results = spotify.artist_albums(artist)
    
    name = []
    release_date = []
    total_tracks = []
    external_urls = []
    
    for item in results['items']:
        # 海外の楽曲なら不要
        if item['available_markets'] == ['JP']:
            name.append(item['name'])
            release_date.append(item['release_date'])
            total_tracks.append(item['total_tracks'])
            external_urls.append(item['external_urls']['spotify'])
            
    df_aibums = pd.DataFrame()
    df_aibums['name'] = name
    df_aibums['release_date'] = release_date
    df_aibums['total_tracks'] = total_tracks
    df_aibums['external_urls'] = external_urls
    

    こちらを実行すると、画像のようなDataFrameになると思います。
    全部で10曲のアルバムがありますね〜

    SpotifyのAPIを使ってaikoの人気曲とアルバムを取得する

    以上、SpotifyAPIで遊んでみました!
    もっと色んな使い方があるようなので、また更新します〜