【问题标题】:Libspotify - Playlist not returning from Playlist containerLibspotify - 播放列表未从播放列表容器返回
【发布时间】:2012-06-08 02:08:14
【问题描述】:

我正在使用 libspotify 来遍历 spotify 用户名列表(存储在数据库中),并为这些用户名创建一个播放列表容器,并检索容器内的所有播放列表以及每个播放列表中的所有曲目。

我这样做如下:

static sp_playlistcontainer_callbacks pc_callbacks = {
 NULL,
 NULL,
 NULL,
 &container_loaded
};

static sp_playlist_callbacks pl_callbacks = {
 NULL,
 NULL,
 NULL,
 NULL,
 &playlist_callback,
 NULL,
 NULL,
 NULL,
 NULL,
 NULL,
 NULL,
 NULL,
 NULL
};

static void container_loaded(sp_playlistcontainer *pc, void *userdata)
{
 char * username =  ((char *) userdata);
 sp_playlistcontainer_remove_callbacks(pc, &pc_callbacks, username);

 int num_playlists = sp_playlistcontainer_num_playlists(pc);
 std::cout << "User: " << username << " has : " << num_playlists << std::endl;

 //for each playlist, analyse each song
 //sp_playlist currentPlaylist;
 for(int i=0;i<num_playlists;i++)
 {
    sp_playlist * currentPlaylist = sp_playlistcontainer_playlist(pc,i);
    sp_playlist_add_callbacks(currentPlaylist, &pl_callbacks, username);
 }

 sp_playlistcontainer_release(pc);

}

static void playlist_callback(sp_playlist *pl, void *userdata)
{
 char * username =  ((char *) userdata);

 if(!sp_playlist_is_loaded(pl))
 {
    return;
 }
 sp_playlist_remove_callbacks(pl, &pl_callbacks, username);

 int numTracks = sp_playlist_num_tracks(pl);
 for (int i=0;i<numTracks;i++)
 {
    //do track processing  
 }

 std::cout << "Found: " << sp_playlist_name(pl) << std::endl;

}


//main function
//for(int i=0;...
sp_playlistcontainer * plc = sp_session_publishedcontainer_for_user_create(g_session, usernames[i]);
sp_playlistcontainer_add_callbacks(
 plc,
 &pc_callbacks,
 usernames[i]
);
//end for
//end main

//more functions etc...

播放列表容器回调没有任何问题,但是播放列表回调有时仅适用于某些播放列表。我每次都能正确检索所有播放列表的 95%。我已将回电 30 分钟以上,但未引发回叫。

是我遗漏了什么还是这里有需要解决的错误?

感谢您的宝贵时间。

问候, 抢

【问题讨论】:

  • 确保标记您正在开发的编程语言。

标签: spotify


【解决方案1】:

libspotify 需要通过调用 sp_session_process_events 从主线程定期调用,你似乎没有这样做,至少它不是你源代码的一部分。

有关此问题的背景信息,请参阅常见问题解答:https://developer.spotify.com/technologies/libspotify/faq/

【讨论】:

    【解决方案2】:

    您是否已验证无法获取的播放列表已发布以供公众查看?如果播放列表不是由用户发布的,除非您以他们的身份登录,否则您无法获取该播放列表。

    【讨论】:

    • 感谢您的回复。这些是公开播放列表,我们可以在 Spotify 公开个人资料中看到正确的编号。
    猜你喜欢
    • 2021-12-21
    • 1970-01-01
    • 1970-01-01
    • 2014-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多