在我未来的网站上,我尝试将作为字符串“Artist - TrackTitle”的曲目转换为相应的“spotify:track:trackCode”。
由于我编写PHP的速度比javaScript快(随意嘲笑),我会做以下事情:
有趣的是,这只适用于所有字符串的80%。尽管字符串相当标准化(它们来自广播网站,瑞典语“Digilistan P3”),但有些搜索结果为0。
可能的解决方案:
属于B组或C组的两条曲目(从不合适的角色中删除后):
任何人都可以提出更好的转换或想法,以提高我找到合适的赛道匹配成功率吗?
当前算法can be found here。
答案 0 :(得分:3)
看起来你需要逃避&的
答案 1 :(得分:1)
客户端和Web API中的搜索算法确实略有不同,但您可能也发现了一个错误。
Web API使用全局流行度对搜索结果进行排名(使用实际搜索查询加权)。它还返回任何国家/地区可用的内容。
客户端仅返回登录用户的国家/地区可用实体。它还使用登录用户所在国家/地区的受欢迎程度对搜索结果进行排名。
根据这一点以及标签经常为具有不同权限的不同国家/地区发送完全相同相册的不同副本这一事实将使搜索结果不同。我们最近在一些国家的客户中看到了一个错误。 https://twitter.com/swemoph/status/426260017847623680
因此,根据设计,它应该略有不同,但在您的情况下,它应该只是意味着更多的搜索结果,顺序略有不同,但永远不会为零。
2-4可能解释为没有逃避&。
1号更有趣。看看Web API中的轨道的实际uri以及开放站点,我们看到它被错误归因于Teddybears(而不是Teddybears Sthlm):
$ curl -s 'http://ws.spotify.com/lookup/1/.json?uri=spotify:track:1JdC88rtMAwebQVFOcAg0D' | jq .track.artists [ { "name": "Teddybears", "href": "spotify:artist:3gqv1kgivAc92KnUm4elKv" }, { "name": "Thomas Rusiak", "href": "spotify:artist:7amcWVAeY8e6YwgV9bXlKH" } ]
http://open.spotify.com/track/1JdC88rtMAwebQVFOcAg0D显示了Teddybears的Rock'n'Roll Highschool
这清楚地解释了为什么您在Web API中找不到它。通过添加搜索词sthlm,您可以从结果中排除此曲目。查询引擎似乎按预期工作(虽然如果我们允许在这里进行更模糊的搜索,我会更喜欢,但这是一个不同的问题)。你没有做错任何事,但我们需要找出数据看起来不同的原因。