市販楽曲の情報を入手する手軽な手段として、Spotify Web APIがあります。
以前の記事では、キーワードを入力して楽曲を検索していました。
しかし、この方法だとあるアーティストの名前をキーワードとして与えても、そのアーティストの楽曲の情報を全ての取得することはできないようです。
また、他のアーティストの楽曲やカバー曲も引っかかってしまうため、検索効率がよくないです。
そこで、Spotify Web API の search()
以外のAPIを使って、あるアーティストの全てのアルバムの全楽曲情報を確実に取得する方法を探してみました。
方針
以下のような方針で検索します。
sp = spotipy.Spotify()
sp.search(type="artist")
を使って,アーティスト名からアーティストIDを取得sp.artist_albums()
を使って,アーティストIDから複数のアルバムIDを取得sp.album_tracks()
を使って,各アルバムIDからトラック情報の配列tracks
を取得tracks
配列に格納されたトラック情報オブジェクトtrack
にアクセス
スクリプト
# -*- coding: utf-8 -*- import spotipy from spotipy.oauth2 import SpotifyClientCredentials client_id = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" client_secret = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" sp = spotipy.Spotify(auth_manager=SpotifyClientCredentials(client_id=client_id, client_secret=client_secret), language='ja') results_search = sp.search(q=artist, type="artist", limit=5, market=market) artist_id = results_search["artists"]["items"][0]["id"] artist_name = results_search["artists"]["items"][0]["name"] results_artist_albums = sp.artist_albums(artist_id, limit=50) album_ids = [album["id"] for album in results_artist_albums["items"]] album_list = [album for album in results_artist_albums["items"]] data = [] for album_idx, album_id in enumerate(album_ids): tracks = sp.album_tracks(album_id, limit=50, market=market)["items"] for track in tracks: data.append(track["name"])
各APIの返り値の例
各情報の取り出し方の参考として、アーティスト名を「米津玄師」として上記スクリプトで処理した時の、各APIの返り値の一部を掲載します。
sp.search(type="artist")["item"]
{'external_urls': {'spotify': 'https://open.spotify.com/artist/1snhtMLeb2DYoMOcVbb8iB'}, 'followers': {'href': None, 'total': 3061574}, 'genres': ['anime', 'j-pop'], 'href': 'https://api.spotify.com/v1/artists/1snhtMLeb2DYoMOcVbb8iB', 'id': '1snhtMLeb2DYoMOcVbb8iB', 'images': [{'height': 640, 'url': 'https://i.scdn.co/image/ab6761610000e5eb5b4225f4c907007170809d8a', 'width': 640}, {'height': 320, 'url': 'https://i.scdn.co/image/ab676161000051745b4225f4c907007170809d8a', 'width': 320}, {'height': 160, 'url': 'https://i.scdn.co/image/ab6761610000f1785b4225f4c907007170809d8a', 'width': 160}], 'name': '米津玄師', 'popularity': 76, 'type': 'artist', 'uri': 'spotify:artist:1snhtMLeb2DYoMOcVbb8iB'}
sp.artist_album()["item"]
{'album_group': 'album', 'album_type': 'album', 'artists': [{'external_urls': {'spotify': 'https://open.spotify.com/artist/1snhtMLeb2DYoMOcVbb8iB'}, 'href': 'https://api.spotify.com/v1/artists/1snhtMLeb2DYoMOcVbb8iB', 'id': '1snhtMLeb2DYoMOcVbb8iB', 'name': '米津玄師', 'type': 'artist', 'uri': 'spotify:artist:1snhtMLeb2DYoMOcVbb8iB'}], 'available_markets': ['AD', ... 'ZW'], 'external_urls': {'spotify': 'https://open.spotify.com/album/0htxNVyVbhow8ESseUu5UV'}, 'href': 'https://api.spotify.com/v1/albums/0htxNVyVbhow8ESseUu5UV', 'id': '0htxNVyVbhow8ESseUu5UV', 'images': [{'height': 640, 'url': 'https://i.scdn.co/image/ab67616d0000b273eb53782889e6f2e70a2634a3', 'width': 640}, {'height': 300, 'url': 'https://i.scdn.co/image/ab67616d00001e02eb53782889e6f2e70a2634a3', 'width': 300}, {'height': 64, 'url': 'https://i.scdn.co/image/ab67616d00004851eb53782889e6f2e70a2634a3', 'width': 64}], 'name': 'STRAY SHEEP', 'release_date': '2020-08-05', 'release_date_precision': 'day', 'total_tracks': 15, 'type': 'album', 'uri': 'spotify:album:0htxNVyVbhow8ESseUu5UV'}
sp.album_tracks()["item"]
{'artists': [{'external_urls': {'spotify': 'https://open.spotify.com/artist/1snhtMLeb2DYoMOcVbb8iB'}, 'href': 'https://api.spotify.com/v1/artists/1snhtMLeb2DYoMOcVbb8iB', 'id': '1snhtMLeb2DYoMOcVbb8iB', 'name': '米津玄師', 'type': 'artist', 'uri': 'spotify:artist:1snhtMLeb2DYoMOcVbb8iB'}], 'disc_number': 1, 'duration_ms': 235720, 'explicit': False, 'external_urls': {'spotify': 'https://open.spotify.com/track/2K4aKCOfyN1JwMWUZJiwIX'}, 'href': 'https://api.spotify.com/v1/tracks/2K4aKCOfyN1JwMWUZJiwIX', 'id': '2K4aKCOfyN1JwMWUZJiwIX', 'is_local': False, 'is_playable': True, 'linked_from': {'external_urls': {'spotify': 'https://open.spotify.com/track/2WI2is2NtH0WTs7zfKNpcE'}, 'href': 'https://api.spotify.com/v1/tracks/2WI2is2NtH0WTs7zfKNpcE', 'id': '2WI2is2NtH0WTs7zfKNpcE', 'type': 'track', 'uri': 'spotify:track:2WI2is2NtH0WTs7zfKNpcE'}, 'name': 'カムパネルラ', 'preview_url': 'https://p.scdn.co/mp3-preview/dab31e22ded060b57c14214be0da2c5d98f46685?cid=b231f820fdb243f4aa71168aec1244a6', 'track_number': 1, 'type': 'track', 'uri': 'spotify:track:2K4aKCOfyN1JwMWUZJiwIX'} ```