Spotify API 客户端获取播放列表曲目偏移量

问题描述 投票:0回答:2

我是 API 的新手,想尝试一下 Spotify API。

我使用 JohnnyCrazy 的 Spotify API 客户端,到目前为止它运行得很好。 使用令牌进行身份验证也有效。

作为测试,我想显示给定播放列表的所有歌曲,但发现请求限制为 100 首歌曲。 要获取下一首歌曲,我必须使用查询参数

offset
,正如我在 Spotify 开发者网站上读到的那样。

我现在的问题是如何使用 Spotify API 客户端在代码中包含

offset
参数。

这是我的代码:

var spotify = new SpotifyClient(MyToken);

var playlist = await spotify.Playlists.Get(MyPlaylistURI);

foreach (PlaylistTrack<IPlayableItem> item in playlist.Tracks.Items)
{
  if (item.Track is FullTrack track)
  {
    Console.WriteLine(track.Name, track.Album.Name);
  }
}

编辑:MyPlaylistURI 只是播放列表 ID。我的错

c# wpf api spotify offset
2个回答
2
投票

根据文档

offset
是一个查询参数,这意味着您可以将其附加到URI,即

var MyPlaylistURI = "https://uri-you-are-using?offset=100"
var spotify = new SpotifyClient(MyToken);
var playlist = await spotify.Playlists.Get(MyPlaylistURI);

当然,您不会对偏移量进行硬编码。这只是为了展示如何包含该参数。


0
投票

要获取具有给定偏移量的播放列表的曲目,您需要参数化来自 Playlists.GetItems() 的请求。检查其重载会提示您可以按如下方式执行此操作:

var request = new PlaylistGetItemsRequest() { Offset = 100 };
Paging<PlaylistTrack<IPlayableItem>> tracksPaging = await SpotifyClient.Playlists.GetItems(playlistId, request);

然而,这并不是获取所有曲目的最简单方法,因为根据播放列表的长度,您可能需要多次迭代偏移量。

相反,该库提供了有效的分页功能:

Paging<PlaylistTrack<IPlayableItem>> tracksPaging = await SpotifyClient.Playlists.GetItems(playlistId, request);
IList<PlaylistTrack<IPlayableItem>> tracksAll = await SpotifyClient.PaginateAll(tracksPaging);

瞧,来自单个等待的播放列表上所有 IPlayableItems 的 IList。

© www.soinside.com 2019 - 2024. All rights reserved.