libspotify API索引参数。基于0还是基于1?

时间:2012-03-05 20:41:36

标签: spotify

我一直在玩libspotify并遇到一些奇怪的事情。 sp_playlistcontainer_move_playlist 0的索引参数是基于还是基于1?它们似乎都是,或者可能都不是:)特别是如果我有三个播放列表,我会注意到以下结果:

sp_playlistcontainer_move_playlist(handle,0,3,false)

成功并将播放列表从索引0(播放列表列表中的第一个)移动到播放列表列表的末尾。

sp_playlistcontainer_move_playlist(handle,0,1,false)

失败,返回SP_ERROR_INVALID_INDATA,根据API规范,这似乎表示我'试图将文件夹移动到自身'。由此我猜测输入(原始)索引是基于0的,并且目标索引是基于1的。这很奇怪,但是这个

sp_playlistcontainer_move_playlist(handle,0,2,false)

确实会将第一个播放列表(从索引0)移动到播放列表列表中的第二个插槽(我称之为索引1,但根据libspotify显然是2)。

当然这也有效

sp_playlistcontainer_move_playlist(handle,2,0,false)

所以也许目标指数不是基于1 ...或者0可能只是特殊的。想法?

1 个答案:

答案 0 :(得分:0)

它基于0。

在完成任何操作之前,移动操作始终采用列表状态中的索引,因此......

  • 移动0到1将被拒绝,因为它实际上是无操作。

  • 要将第一个(索引0)播放列表移动到第二个位置(索引1),您实际上将其移动到索引2 ,因为您希望它位于当前位于索引1的播放列表之后< / strong>即可。一旦你进行了调用,libSpotify将通过将索引0移动到索引1之后“提交”事务,然后将所有内容移动到一个插槽中以填充索引0处留下的空缺。