使用spotipy 提取艺术家流派和歌曲发行日期

KD *_*Fer 5 python api pandas spotipy

我目前正在研究从 Spotify 中的歌曲中提取特定项目。我想从艺术家那里获取具体的发行日期和流派。我正在从 pandas 数据报中提取信息,如下所示:它包含歌词、标题、流派、艺术家和发行日期。我尝试过手动完成大部分工作,但作为一个包含约 1100 首歌曲的数据帧,这变得很乏味。所以我研究了一些 API 来帮助解决这个问题,特别是 Spotipy。我有一个想法,我会从以下开始:

import spotipy
from spotipy.oauth2 import SpotifyClientCredentials #To access authorised Spotify data
client_id = 'client_id'
client_secret = 'client_secret'
client_credentials_manager = SpotifyClientCredentials(client_id=client_id, client_secret=client_secret)
sp = spotipy.Spotify(client_credentials_manager=client_credentials_manager) #spotify object to access API
name = "AJR" #chosen artist
result = sp.search(name) #search query
result['tracks']['items'][0]['artists']
Run Code Online (Sandbox Code Playgroud)

但我不知道该去哪里。我尝试查看文档,虽然有关于如何从 Spotify For Developers 页面获取流派和日期的信息,但我似乎无法在 Spotipy 中找到它。任何关于从这里开始或如何实现算法以获得所需细节的建议都会很棒。谢谢。

rit*_*iek 3

Spotify 尚未公开曲目类型。相反,它公开了与艺术家或专辑相​​关的流派列表。

同样,它不会公开曲目的发行日期,而只会公开整个专辑的单个发行日期。因此,虽然我不确定艺术家是否有可能在专辑发行后向专辑中添加新曲目,这意味着专辑发行日期可能并不总是指示相应专辑中所有曲目的正确发行日期。

我尝试查看文档,虽然有关于如何从 Spotify For Developers 页面获取流派和日期的信息,但我似乎无法在 Spotipy 中找到它。

您需要访问全页对象才能访问艺术家或专辑的流派信息。

result = sp.search(name)
result['tracks']['items'][0]['artists']
Run Code Online (Sandbox Code Playgroud)

您从这段代码中得到的并不是艺术家的全分页对象,这意味着它缺少一些额外的细节,而流派是其中之一。

您需要对适当的端点进行单独的调用才能访问全分页对象。例如,这段代码:

result = sp.search("AJR")
track = result['tracks']['items'][0]

artist = sp.artist(track["artists"][0]["external_urls"]["spotify"])
print("artist genres:", artist["genres"])

album = sp.album(track["album"]["external_urls"]["spotify"])
print("album genres:", album["genres"])
print("album release-date:", album["release_date"])
Run Code Online (Sandbox Code Playgroud)

输出:

artist genres: ['modern rock']
album genres: []
album release-date: 2020-02-12
Run Code Online (Sandbox Code Playgroud)

Spotify 可能不知道某些专辑的流派(如上面的输出)或艺术家。