libspotify:有时创建的播放列表没有名字



我使用的是最新版本的libspotify API(12.1.51)。我使用C#和libspotif进行编码。NET(一个用于libspotify的简单互操作包装器库)。我已经建立了一个程序,使用libspotify API创建播放列表。我正在使用最新的Windows原生Spotify客户端来检查我创建的播放列表。

我已经构建了一个程序,等待播放列表名称和曲目URI列表或一个专辑URI,并创建相应的播放列表。如果提供了专辑URI,则专辑中的所有曲目都将添加到新的播放列表中,否则所提供的曲目URI列表将用于创建新的播放表。程序等待直到回调

playlist_update_in_progress

并且在接受要创建的新播放列表之前done参数等于true。

它工作得很好,只是有时播放列表没有名字,但有所有的曲目。我可以告诉程序创建完全相同的播放列表,但没有名字,第二次可能会起作用。这是随机发生的,但我注意到,如果我创建了大约200个播放列表,那么可能有5-10个播放列表没有名字。我可以看到播放列表被添加到你的Spotify客户端,因为程序正在运行和创建播放列表,并且随机看到没有名字的播放列表。播放列表几乎在调用回调的同时出现,并且done等于true(当然并不总是这样,可能会有延迟)。我尝试在Spotify客户端Windows中手动重命名播放列表,没有遇到任何问题(播放列表名称长度为0或空字符串,如果你愿意的话)。原生Spotify客户端甚至不允许播放列表名称为空。

我使用:

sp_playlistcontainer_add_new_playlist

添加一个新的播放列表,我尝试过使用IntPtr和C#字符串传递给它。两者都尝试过:

[DllImport("libspotify")]
public static extern IntPtr sp_playlistcontainer_add_new_playlist(IntPtr playlistContainerPtr, string name);
[DllImport("libspotify")]
public static extern IntPtr sp_playlistcontainer_add_new_playlist(IntPtr playlistContainerPtr, IntPtr namePtr);

我也试过

sp_playlist_rename

多次重命名播放列表(作为某种修复)都没有成功。我不知道创建播放列表时服务器上会发生什么。这是个bug还是怎么回事?

我真的尝试了很多技巧来实现这一点,但都无济于事。

有关该程序的更多信息:

首先,它连接到Spotify,然后等待一些控制台输入。它检查以下字符串的输入:

使用名称和曲目列表创建播放列表:

createplaylistfromtracks "Tracks playlist" spotify:track:36MuLw248uzLPtrJ6073ZR spotify:track:5WPkvx0MARhlWhXp1sJg4k spotify:track:1VrdbSFVU9wJkuDM2sWYVe spotify:track:66RG0BBwpQqHxZs06UUyeo spotify:track:0zp3uPuhnARR1XYsgg5JLV

以及使用来自专辑URI:的曲目的名称和列表来创建播放列表

createplaylistfromalbum "Album playlist" spotify:album:5rVwDKRKa1FjDlLofDZyRb

然后,该程序解析输入并创建播放列表,并设置标志Busy=true,以便控制台在Busy=false之前不会读取任何输入,Busy=false发生在调用playlist_update_in_progress回调并且done为true时。然后它再次读取输入。。。

如有任何帮助,我们将不胜感激。

我们有许多应用程序在内部和外部运行libspotify,我们在库中没有遇到过这样的问题,这表明这不是libspotif中的错误。

可能导致这种情况发生的几个指针:

  • 请确保正确管理线程。当您得到notify_main_thread()调用(到达某个后台线程)时,必须从主线程异步调用sp_sesion_process_events(),因此您需要确保将其正确地编组到主线程。如果这个过程不能正常工作,事情就会开始变得奇怪。

  • 由于您正在进行许多操作,请确保libspotify有时间将您的所有更改与服务同步。playlist_update_in_progress的设计目的是在播放列表发生多个突变时通知您,并且在其他地方发生变化时通常很有用。相反,playlist_state_changed是您需要聆听类似更改的内容(通常,在重命名后,我相信在应用更改时播放列表会进入"加载"状态,然后在更改完成后退出(即sp_playlist_is_loading再次返回false)。

  • 此外,在退出应用程序时,请确保执行sp_session_logout()调用,并等待logged_out回调激发后再退出。如果不这样做,某些更改可能无法与服务同步。

相关内容

  • 没有找到相关文章

最新更新