查询Spotify API的结果不同于web客户端中的相同查询

查询Spotify API的结果不同于web客户端中的相同查询,spotify,Spotify,我一直在使用Spotify API查询给定艺术家的准确曲目,并发出如下GET请求: https://api.spotify.com/v1/search?q=track:"track+title"+artist:"artist+name"&type=track (使用授权头承载[访问令牌]) 这在大多数情况下都能像预期的那样工作,但有一条赛道我遇到了一个问题:我正试图找到这条赛道 我之前成功的GET请求已调整为此曲目标题和艺术家,这就是它的外观: https://api.spotify.

我一直在使用Spotify API查询给定艺术家的准确曲目,并发出如下GET请求:

https://api.spotify.com/v1/search?q=track:"track+title"+artist:"artist+name"&type=track
(使用授权头承载[访问令牌])

这在大多数情况下都能像预期的那样工作,但有一条赛道我遇到了一个问题:我正试图找到这条赛道

我之前成功的GET请求已调整为此曲目标题和艺术家,这就是它的外观:

https://api.spotify.com/v1/search?q=track:"I+Might+Just+Stay+Home"+artist:"Shannon+Lyon"&type=track
然而,这不会产生任何结果。这真的很奇怪:如果我将完全相同的搜索查询(跟踪:“我+可能+只是+呆在家里”+艺术家:“香农+里昂”)复制到中,我会得到一个我期待的搜索结果。我也可以在Spotify桌面播放器中使用相同的查询,得到一个结果


那么,问题是:当我在web和桌面客户端使用完全相同的查询时,为什么我没有从API中获得结果,而我没有从web和桌面客户端获得结果?Potray已经给出了一个可能的原因。您在客户机中看到的东西来自内部API。它们与公共Web API略有不同

另一个更可能的原因是不同国家的可用性不同,您的两个查询针对不同的国家,但您可能没有意识到这一点

当您在客户端中搜索时,搜索的始终是用户。用户已连接到某个国家/地区。您只能播放您所在国家/地区的可用内容,因此在客户端中搜索只能返回您可以播放的内容

使用Web API进行搜索时,无需指定Spotify用户正在搜索的对象。您也不需要指定要搜索结果的国家

从一开始,不指定国家,搜索结果将列出至少在一个国家可用的曲目。自去年以来,由于一个bug,它转而默认为美国。您可以更改国家,但不能再在所有国家搜索


客户端似乎不使用公共API,而是使用某种私有API,因为这不仅仅发生在这条轨道上。你完全正确!如果我在请求中添加market=NO,我将得到预期的响应。我猜这个bug也解释了为什么我看到了一个搜索结果的例子,根据API,该搜索结果应该只在美国可用,但我仍然在网络播放器中找到了这首歌:特定的歌曲可能存在于不同版本中,具有不同的市场可用性,但是,由于搜索默认为market=US,它似乎在NO中不可用。我还认为文档()是误导性的:对于查询参数market,它说“可选(…),如果给定了国家代码,则只会返回艺术家、专辑和曲目,其中的内容可在该市场播放”。如果忽略市场,我将因此期待任何市场的回报。我花了将近一个小时试图理解为什么结果会不同。文档中没有任何内容。另一件事是,他们说市场参数可以是国家代码字符串列表,但他们不接受我尝试的任何参数。这上面有人吗?