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

如何遍历Spotipy的playlist_items返回的嵌套列表并提取所需字段

Spotipy播放列表字段提取操作方案

首先明确spotipy.playlist_items()返回结构的核心层级:

接口返回数据的顶层items数组对应所有曲目条目,单条曲目核心信息存储在条目下的track字段中,其中track.name是曲目名,track.artists是艺术家数组,每个数组元素的name字段对应单个艺术家名称。

基础提取代码(适配100首以内的播放列表)

默认接口单页最多返回100条曲目,小于100首的播放列表直接遍历即可:

# 假设你已完成鉴权初始化,且已执行 playlist = spotipy.playlist_items(playlist_id)
track_info = []

for item in playlist["items"]:
    # 跳过已下架/删除的无效曲目(track字段为None的异常情况)
    if not item["track"]:
        continue
    track = item["track"]
    # 提取曲目名
    song_name = track["name"]
    # 提取所有艺术家,多艺术家默认用/拼接
    artists = "/".join([artist["name"] for artist in track["artists"]])
    track_info.append({"曲目名": song_name, "艺术家": artists})

# 验证输出
for info in track_info:
    print(f"{info['曲目名']} - {info['艺术家']}")

全量提取代码(适配超过100首的播放列表)

超过100首的播放列表需要处理分页逻辑,循环拉取所有页的结果:

track_info = []
results = spotipy.playlist_items(playlist_id)

while results:
    for item in results["items"]:
        if not item["track"]:
            continue
        track = item["track"]
        song_name = track["name"]
        artists = "/".join([artist["name"] for artist in track["artists"]])
        track_info.append({"曲目名": song_name, "艺术家": artists})
    # 拉取下一页,无下一页时退出循环
    results = spotipy.next(results) if results["next"] else None

核心字段路径说明

  • 曲目名字段路径:item['track']['name']
  • 单艺术家名字段路径:item['track']['artists'][索引]['name'],索引从0开始计数,多艺术家的曲目可根据需要提取指定位置的艺术家信息

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 10:54:03