查询 Spotify API 的结果与 Web 客户端中的相同查询不同

Result from querying Spotify API differs from identical query in web client

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

https://api.spotify.com/v1/search?q=track:"track+title"+artist:"artist+name"&type=track

(授权 header 不记名 [access_token]

这在大多数情况下都像预期的那样工作,但对于一首曲目我遇到了问题:我正在尝试找到曲目 I Might Just Stay Home, with Shannon Lyon

将我之前成功的 GET 请求调整为该曲目名称和艺术家后,它应该是这样的:

https://api.spotify.com/v1/search?q=track:"I+Might+Just+Stay+Home"+artist:"Shannon+Lyon"&type=track

然而,这会产生零结果。真正奇怪的是:如果我将完全相同的搜索查询 (track:"I+Might+Just+Stay+Home"+artist:"Shannon+Lyon") 复制到 Spotify Web player,我得到了我期待的一个搜索结果。我也可以在 Spotify 桌面播放器中使用相同的查询,给我一个结果。

所以,问题是:为什么我没有从 API 获得结果,而我在 Web 和桌面客户端都获得了结果,这可能是什么原因使用完全相同的查询?

Potray 已经给出了一个可能的原因。您在客户端中看到的东西来自内部API。它们与 public Web API.

略有不同

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

当你在客户端搜索时,搜索的总是用户。一个用户连接到一个国家。您只能播放您所在国家/地区可用的内容,因此仅在客户端中搜索 returns 您可以播放的内容。

当您使用 Web 进行搜索时 API,您无需指定搜索的是哪个 Spotify 用户。您也不需要指定要搜索哪个国家/地区的结果。

从一开始,在不指定国家/地区的情况下,搜索结果将列出至少在一个国家/地区可用的曲目。自去年以来,由于一个错误,它改为默认为美国。您可以更改国家/地区,但您无法再在所有国家/地区进行搜索。

https://github.com/spotify/web-api/issues/194