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

如何在JohnnyCrazy的Spotify API客户端中使用offset参数获取完整播放列表曲目

解决Spotify API播放列表曲目分页获取的问题

嘿,这问题我刚好用JohnnyCrazy的Spotify客户端处理过,给你一步步讲清楚怎么搞定分页获取所有曲目!

首先得明确:Spotify API的播放列表曲目接口默认只返回最多100首(limit默认值是100,也是最大值),所以要拿到所有曲目,就得通过offset参数来翻页,每次往后偏移100条,直到没有更多内容为止。

你原来的代码里,playlist.Tracks.Items只包含第一页的内容,正确的做法是单独调用曲目列表的分页接口,循环获取每一页。下面是修改后的完整代码:

var spotify = new SpotifyClient(MyToken);
int currentOffset = 0;
const int pageSize = 100; // Spotify允许的最大单页数量
Paging<PlaylistTrack<IPlayableItem>> currentTrackPage;

do
{
    // 创建请求参数,指定当前偏移量和每页数量
    var request = new PlaylistGetItemsRequest
    {
        Offset = currentOffset,
        Limit = pageSize
    };

    // 获取当前页的曲目列表
    currentTrackPage = await spotify.Playlists.GetItems(MyPlaylistID, request);

    // 遍历处理当前页的每一首曲目
    foreach (PlaylistTrack<IPlayableItem> item in currentTrackPage.Items)
    {
        if (item.Track is FullTrack track)
        {
            Console.WriteLine($"{track.Name} - {track.Album.Name}");
        }
    }

    // 更新偏移量,准备获取下一页
    currentOffset += pageSize;

// 当currentTrackPage.Next不为空时,说明还有更多曲目需要获取
} while (!string.IsNullOrEmpty(currentTrackPage.Next));

关键细节说明:

  • 改用Playlists.GetItems方法:这个方法专门用来获取播放列表的曲目分页,支持传入offset和limit参数,而你原来用的Playlists.Get返回的播放列表对象里的Tracks只包含第一页数据。
  • 循环终止条件:通过检查currentTrackPage.Next是否为空来判断是否还有下一页。Spotify会在返回的分页数据里提供Next标识,只要这个字段不为空,就代表还有未获取的曲目。
  • 参数控制:Limit设为100是因为这是Spotify API允许的最大值,这样能减少请求次数,提高效率。

这样就能完整获取播放列表里的所有曲目啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 22:02:41