如何解析Spotipy搜索返回JSON提取曲目、专辑、艺术家信息
解决方案
Spotify的sp.search()返回的track类型结果是固定三层嵌套结构,字段访问路径不对就会拿不到值,直接用下面的代码即可实现要求的输出格式:
# 注意提前替换成你自己的Spotify API密钥完成sp客户端初始化 search_res = sp.search(q="你要搜索的曲目关键词", type="track", limit=10) track_list = search_res["tracks"]["items"] for seq, track in enumerate(track_list, start=1): # 字段提取 track_name = track["name"] track_id = track["id"] album_name = track["album"]["name"] # 单曲目可能关联多个艺人,用逗号拼接所有艺人名 artist_name = ", ".join([i["name"] for i in track["artists"]]) # 固定格式输出 print(f"{seq} {track_name} {artist_name} {album_name} {track_id}")
常见踩坑点
- 艺人字段键名是复数
artists,且值为数组格式,不是单值字段,直接写track["artist"]会触发KeyError,直接取track["artists"]拿到的是艺人对象列表不是名称字符串 - 专辑信息嵌套在
track下的album对象中,直接取track["album"]拿到的是整个专辑的JSON对象,需要进一步取["name"]才能拿到专辑名字符串 - 所有曲目列表存放在返回结果的
tracks -> items路径下,直接遍历返回结果最外层的items键会拿到空值
对应JSON结构参考(简化)
{ "tracks": { "items": [ { "name": "曲目名", "id": "track唯一ID", "album": { "name": "所属专辑名" }, "artists": [ {"name": "艺人名1"}, {"name": "艺人名2"} ] } ] } }
内容的提问来源于stack exchange,提问作者Ghoul Fool
相关产品推荐
相关产品推荐

