获取Spotify播放列表内容的意外结果

Posted

技术标签:

【中文标题】获取Spotify播放列表内容的意外结果【英文标题】:Unexpected results getting contents of spotify playlist 【发布时间】:2012-04-10 20:53:44 【问题描述】:

我需要使用播放列表的内容使数据库保持最新。

我正在为 libspotify api 使用 C# Wrapper - http://libspotify-sharp.hallerud.se/

我目前的工作流程如下

登录,等待播放列表容器加载,加载时监听播放列表加载事件,加载我感兴趣的播放列表时等待播放列表上的所有曲目加载完毕,然后将内容写入数据库。

每次程序启动时,我都会完全清除缓存目录。

我发现这在大多数情况下都可以正常工作并且正如预期的那样,然后在删除普通 spotify 客户端中的一些曲目时,即使它们不再存在,这些曲目似乎仍然被 API 返回(我正在清除缓存目录,所以它们必须是?)。

有人知道是什么原因造成的吗?

更新

我发现 API 似乎将不同的信息返回到客户端中的可见内容。我已经从不同的计算机上运行了控制台应用程序,并且已删除的曲目仍在返回。普通的 Spotify 客户端不显示这些,也在多台计算机上进行了测试。在我的应用程序中,我登录,等待播放列表完全加载然后退出,这个应用程序正在执行计划任务。

更新 2

我目前正在等到

(playlist.IsLoaded == true && 
playlist.CurrentTracks.All(x => x.IsLoaded && x.Artists.Count() > 0))

使用

session.OnMetaDataUpdated += HandleOnMetaUpdated;

playlist.OnMetadataUpdated += PlaylistMetaUpdated;

【问题讨论】:

【参考方案1】:

如果播放列表后端运行缓慢,则客户端中所做的更改可能需要一段时间才能到达 Spotify 后端。只有当它们进入后端时,这些更改才会影响到其他客户端。

【讨论】:

稍微更新了我的问题。当您说后端时,您指的是普通的 Windows 客户端吗?我在周五删除的一些曲目,3 天后仍然被退回。我想知道如何进一步排除故障。 不,我所说的“后端”是指 Spotify 服务器。您可以通过在新机器上安装 Spotify 客户端进行仔细检查,并查看它为您的播放列表显示的内容。此外,请注意播放列表更改会作为增量发送到 libSpotify,因此您可能会在收到“删除这些曲目”增量之前查看列表。 sp_playlistcontainer 上有 API 可以检查发生了什么。 Spotify 客户端显示播放列表,其中在多台计算机上删除了曲目,而控制台应用程序显示它们仍存在于多台计算机上。我需要使用哪些 Api 调用?已经用我目前用来检查的内容再次更新了问题。 我目前正在等待 (playlist.IsLoaded == true && playlist.CurrentTracks.All(x => x.IsLoaded && x.Artists.Count() > 0)) 使用 session.OnMetaDataUpdated + = HandleOnMetaUpdated;和 playlist.OnMetadataUpdated += PlaylistMetaUpdated; 想通了.. 应用程序没有任何问题,是客户端隐藏了曲目,因为它们在我所在的地区无法播放。感谢您的帮助!

以上是关于获取Spotify播放列表内容的意外结果的主要内容,如果未能解决你的问题,请参考以下文章

Spotify Apps API:获取其他用户的播放列表

获取 Spotify 用户当前播放的曲目名称 [Web API]

如何从 Spotify 播放列表中获取数据

spotify api 获取用户的播放列表

如何在 Spotify APi 上获取播放列表的歌曲推荐

通过用户名从 Spotify 获取公共播放列表