如何用Python+Spotipy调用Spotify API获取含歌曲及音频特征的完整专辑JSON
结论
目前Spotify Web API未提供可同时返回三类数据的单个端点,无法通过单次请求直接获取包含「单张专辑全属性、专辑内所有曲目全属性、所有曲目对应音频特征」的完整层级返回结果,需要多次调用不同接口后自行组装数据结构。
适配Spotipy的实现方案
- 第一步:调用
spotipy.album(album_id)方法,对应GET /albums/{id}端点,获取指定专辑的全属性数据,同时从返回结果的tracks.items字段提取所有关联的曲目ID列表 - 第二步:如需获取曲目的完整属性(第一步返回的曲目为简化版对象,缺少部分字段),调用
spotipy.tracks(track_id_list)方法批量拉取,该接口单次最多支持传入50个曲目ID - 第三步:调用
spotipy.audio_features(track_id_list)方法批量拉取所有曲目的音频特征数据,该接口同样单次最多支持传入50个曲目ID - 最后以曲目ID为唯一关联键,将三类数据按照你需要的层级结构拼接,即可得到完整的JSON数据集。
注意事项
- 若专辑内曲目总数超过50,需将曲目ID按每50个一组拆分后,分批调用第二步和第三步的接口,避免触发API参数长度限制
- 拼接数据时建议优先使用曲目ID做匹配,避免因曲目名称重复、排序错位等问题导致对应关系错误
内容的提问来源于stack exchange,提问作者Zoltan Bilcsik
相关产品推荐
相关产品推荐

