【发布时间】: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;
【问题讨论】: