【Python】SpotifyのAPIを使ってaikoの人気曲とアルバムを取得する
SpotifyのAPIを使うと、色々と楽しそうなことができるみたいなので試してみます。
この記事では、以下の2つを解説します。
- アーティストの人気曲の取得
- アーティストのアルバムの取得
とりあえず、自分の好きなaikoとPUFFYとMayday(台湾のアーティスト)の楽曲をSpotify APIで探してみたいと思います。
Spotify APIを使うための準備
まず、Spotifyのアカウントを持っていない場合は以下のリンクからアカウントを作りましょう。
https://www.spotify.com/jp/
次に、client_idとclient_secretが必要になるので、以下のリンクから取得してください。
https://developer.spotify.com/dashboard/
Pythonの開発環境がある方は、以下のコマンドでSpotifyのAPIを使えるようにします。
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ですね。
https://open.spotify.com/artist/6TDMbiQCWeMClsMr9ORLRK
# アーティストのID artist = 'spotify:artist:6TDMbiQCWeMClsMr9ORLRK' # aiko
このIDを使って、色々やってみます。
まずはTop Tracksを取得してみましょう。
spotify.artist_top_tracks(artist)
とすると、指定したアーティストの人気の10曲を取得できるようです。
曲の情報はかなり詳細に記されているのですが、そのうちの一部を取り出しましょう。
これらを取得して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が一番大きいのは青空ですね。
リリース日が年だったり年月日だったりすのが気になりますが・・・まあいいでしょう。
アーティストのアルバム情報を取得する
次に、アルバム情報を取得しましょう!
アルバムに関しても、かなり詳細な情報が取得できるようですが、ここでは以下を取りだしてみます。
ここで、アルバムを利用可能な地域"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曲のアルバムがありますね〜