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

Spotify API获取播放列表曲目时offset参数失效问题求助

问题根源与修复方案

1. 直接URL调用的端点错误

你调用的是播放列表详情端点(/playlists/{playlist_id}),这个端点的offset参数并不作用于曲目列表。正确获取播放列表曲目应该使用曲目列表专属端点:/playlists/{playlist_id}/tracks,该端点才支持offset和limit参数分页获取曲目。

修正后的URL请求:

r = requests.get(BASE_URL + 'playlists/' + playlist_id + "/tracks?offset=100&limit=100", headers=headers)

2. Spotipy库的fields参数错误

spotipy.playlist_tracks()方法返回的直接是曲目列表的items数组,而非包含tracks键的嵌套结构。你指定的fields=["tracks.items.track.name"]会过滤掉正确的偏移后数据,导致始终返回前100条。

修正后的Spotipy代码:

spotipy = sp.Spotify(client_credentials_manager=SpotifyClientCredentials(client_id, client_secret))
# 去掉fields中的tracks前缀
response = spotipy.playlist_tracks(playlist_id, fields=["items.track.name"], offset=400, limit=100)

3. Tekore库的fields参数错误

和Spotipy同理,tekore.playlist_items()方法返回的是曲目列表的直接数据,fields参数不需要加tracks.前缀。多余的前缀会导致接口返回的偏移后数据被过滤,最终只拿到默认的前100条对应字段。

修正后的Tekore代码:

app_token = tk.request_client_token(client_id, client_secret)
tekore = tk.Spotify(app_token)
# 去掉fields中的tracks前缀
playlist = tekore.playlist_items(playlist_id=playlist_id, fields=["items.track.name"], offset=300, limit=100)

额外注意事项

  • 每次请求建议显式指定limit=100(API默认值也是100,显式设置更清晰);
  • 分页时需根据接口返回的total字段计算总页数,循环请求直到获取所有曲目;
  • 确保目标播放列表确实包含超过对应offset的曲目,避免请求不存在的偏移量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 16:27:35