libspotify:如何确定曲目uri是否正确且可播放?

libspotify:如何确定曲目uri是否正确且可播放?,spotify,Spotify,这个问题听起来很简单,但我找不到检查曲目uri是否正确的方法 例如,通过给定的有效曲目uri播放曲目的正常过程是: 1) 通过sp_link获取sp_link*\u从字符串创建sp_(const char*$track\u uri) 2) 通过sp_链接作为sp_轨迹获取sp_轨迹*(sp_链接*) 3) sp_轨道添加_参考(sp_轨道*) 4) 如果sp_track_error()返回sp_error_OK,或sp_error_正在加载但元数据已更新且sp_error_OK,则sp_sess

这个问题听起来很简单,但我找不到检查曲目uri是否正确的方法

例如,通过给定的有效曲目uri播放曲目的正常过程是:

1) 通过sp_link获取sp_link*\u从字符串创建sp_(const char*$track\u uri)

2) 通过sp_链接作为sp_轨迹获取sp_轨迹*(sp_链接*)

3) sp_轨道添加_参考(sp_轨道*)

4) 如果sp_track_error()返回sp_error_OK,或sp_error_正在加载但元数据已更新且sp_error_OK,则sp_session_player_load和sp_session_player_加载并播放曲目

5) sp_曲目_release()和sp_session_player_unload()在曲目结束时

现在,如果用户在spotify曲目uri上输入了一个错误,并试图播放spotify:track:5Z7ygHQo02SUrFmcgpwsKQ(最后一个字符Q是一个错误,应该是W)。过程中所有可能的错误检查都不会返回任何错误:

步骤1)sp_链接不为空

步骤2)sp_轨迹*不为空

步骤3)返回SP_ERROR_OK

步骤4)sp_track_error()返回sp_error_正在加载,从未调用更新的元数据,当然程序挂起

加载曲目之前的检查无法发现曲目uri的无效性。APIsp_track_availability听起来像是一种方法,但如果未加载曲目,它将始终返回NOT AVAILABLE,但如果曲目uri不正确,则永远不会加载曲目


我是否遗漏了什么或误解了API?

您可以通过检查链接类型来检查uri是否有效,该链接类型说明:

enum    sp_linktype { 
  SP_LINKTYPE_INVALID = 0, 
  SP_LINKTYPE_TRACK = 1, 
  SP_LINKTYPE_ALBUM = 2, 
  SP_LINKTYPE_ARTIST = 3, 
  SP_LINKTYPE_SEARCH = 4, 
  SP_LINKTYPE_PLAYLIST = 5, 
  SP_LINKTYPE_PROFILE = 6, 
  SP_LINKTYPE_STARRED = 7, 
  SP_LINKTYPE_LOCALTRACK = 8, 
  SP_LINKTYPE_IMAGE = 9 
}
这使我们有可能执行如下链接检查:

  • 检查sp\U链路类型(链路)=sp\U链路类型\U轨道
  • 从sp_link创建sp_track*曲目,作为sp_曲目(link),或sp_track可播放(sp_link*,sp_session*)
  • 等待加载,然后检查可用性

  • 将曲目uri spotify:track:5Z7ygHQo02SUrFmcgpwsKW复制到浏览器的地址栏,然后输入,它将自动切换到spotify应用程序并定位到该相册。

    我遇到的问题与您遇到的问题相同。我知道这个问题很老,但我想知道你是否真的解决了它。