You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spotipy调用recommendations()返回多艺人字典 如何提取单条推荐曲目

Spotipy recommendations接口返回数据提取方法

首先明确:你设置limit=1后接口确实只返回了1首推荐曲目,看到的多个艺人条目是这首曲目的合作参演艺人——很多歌曲是多位歌手合作完成的,所以曲目、专辑信息里都会嵌套所有参与艺人的列表,不属于返回异常。

返回结构层级拆解

接口返回的字典结构非常规整,逐层梳理如下:

  • 最外层字典包含2个核心键:
    • tracks:推荐曲目列表,列表长度等于你传入的limit参数,你当前场景下长度为1
    • seeds:本次推荐使用的种子参数信息,也就是你传入的pop流派种子的相关统计
  • tracks列表的第0个元素(recommendations['tracks'][0])就是你要的单条推荐曲目对象
  • 曲目对象下的artists键对应的值是该曲目所有参与艺人的列表,每个艺人条目包含id、名称、主页链接等信息;嵌套在album键下的artists是该曲目所属专辑的艺人列表,和曲目层级的艺人信息通常一致。

注意:tracks是列表类型,即使你设置limit=1,也需要通过[0]索引取出第一首曲目对象,不能直接在tracks键上访问曲目属性,这是初学者最容易踩的坑。

常用字段提取代码

直接按层级索引取值即可,参考代码:

import spotipy
from spotipy.oauth2 import SpotifyClientCredentials

# 你的原有初始化和请求代码
sp = spotipy.Spotify(client_credentials_manager=SpotifyClientCredentials())
recommendations = sp.recommendations(seed_genres=['pop'], limit=1)

# 提取目标单首曲目
track = recommendations['tracks'][0]

# 曲目基础信息
track_name = track['name']
track_id = track['id']
duration_second = track['duration_ms'] / 1000  # 接口返回毫秒单位,可自行转成秒
is_explicit = track['explicit']
popularity = track['popularity']
preview_audio = track.get('preview_url', '无可用试听片段')

# 提取艺人信息
# 先拿所有艺人名称列表,再按需拼接成字符串
artist_name_list = [artist['name'] for artist in track['artists']]
all_artist_name = ' / '.join(artist_name_list)
main_artist_name = artist_name_list[0]  # 通常列表第一位是主唱/主艺人

# 提取专辑信息
album = track['album']
album_name = album['name']
release_date = album['release_date']
# 专辑封面列表按尺寸从大到小排序,索引0是640*640最大图
large_cover = album['images'][0]['url']
small_cover = album['images'][-1]['url']

嵌套字典提取通用技巧

  • 第一次处理陌生接口返回值时,逐层打印键名确认结构,不要直接写深层索引避免报错:先执行print(recommendations.keys())确认最外层字段,再逐层往里核对
  • 遇到列表先打印长度确认元素数量,比如print(len(recommendations['tracks']))可以验证返回曲目数是不是和limit参数一致
  • 不确定某个字段是否存在时,用字典的.get(键名, 默认值)方法取值,不会因为字段缺失直接抛出KeyError
  • 调试阶段可以用标准库pprint格式化打印嵌套字典,会自动按层级缩进排版,比原生print输出的挤成一团的内容好读很多,用法:
from pprint import pprint
pprint(recommendations)

内容的提问来源于stack exchange,提问作者user19476575

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 16:33:15