如何遍历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
相关产品推荐
相关产品推荐

