在 Spotify 高级搜索中对运算符进行分组

Posted

技术标签:

【中文标题】在 Spotify 高级搜索中对运算符进行分组【英文标题】:Grouping operators in Spotify advanced search 【发布时间】:2012-10-15 04:09:21 【问题描述】:

我正在尝试使用 Spotify Web API 在一个响应中返回多个特定结果。

例如,也许我想要 Spotify 的关于迈克尔杰克逊的“Thriller”和 Deep Purple 的“Highway Star”的详细信息。

由于我还没有 Spotify uri,我需要使用 Search 方法。还有一个页面描述了 Spotify 的高级搜索语法here。它们支持针对特定字段进行搜索,例如曲目、艺术家和专辑。它们还支持基本的布尔运算符。

但该页面(或互联网上的其他任何地方,据我所知)没有任何内容描述布尔运算符优先级的工作原理,或者您如何对搜索条件进行分组。

我需要与 (track:Thriller AND artist:"Michael Jackson") OR (track:"highway star" AND artist:"Deep Purple") 相同的东西。

使用类似的标准一次只提取一首曲目是可行的:

http://ws.spotify.com/search/1/track?q=track:"thriller"+AND+artist:"michael+jackson"

我试图直接插入括号,尽管文档中没有提到它们。运气不好:

ws.spotify.com/search/1/track?q=(track:"thriller"+AND+artist:"michael+jackson")+OR+(track:"highway+star"+AND+artist:"深+紫色")

然后我想我会尝试优先播放。也许他们不只是从左到右处理 - 也许 OR 都已解决,然后是 AND:

ws.spotify.com/search/1/track?q=track:"thriller"+OR+track:"highway+star"+AND+artist:"michael+jackson"+OR+artist:"deep+紫色”

这看起来很有希望,并返回了 185 个结果,但它并不完全正确。我从其他乐队看到了名为“Highway Star”的曲目。这似乎排除了“从左到右”、“OR-before-AND”和“AND-before-OR”。哪个没有任何意义 - 还剩下什么?

任何有更多 Spotify 经验的人都可以阐明这样的查询应该如何工作吗?

【问题讨论】:

这个问题已经有一段时间了,我也在Spotify IRC频道上问过,没有任何回应。 Spotify 的工作人员不会监控这个网站吗?他们表现得好像这是他们的官方支持方法。不是想出风头,我只是觉得很难相信 Spotify 的某个人不会知道多个布尔值串在一起时的行为。即使开发团队中没有人知道,也应该只是快速浏览一下相关代码...... 【参考方案1】:

不幸的是,Spotify 的 Web API 对此并没有多少支持(我自己试过,结果和你一样)。从外观上看,API 已经开发了几年,所以我不希望有太大的变化。

但是,我强烈建议您改为查看 the Echo Nest API's;他们非常支持powerful queries,并且在他们的 API 中有很多很棒的东西。 此外,他们还支持getting Spotify URI:s 的搜索结果(曲目、艺术家等)。这意味着您可以完全坚持使用 EN API。

此外,The Echo Nest 不断为其 API 添加更多功能,因此它确实成为了音乐的首选 API(远远超过 Last.fm 和类似的 API)。

【讨论】:

谢谢,我对 Echo Nest 很熟悉,但这次不是一个可行的解决方案。我们正在与另一个数据提供者合作,类似于 Echo Nest(但它可能应该保持无名),它不会为结果返回 Spotify URI。但客户想要“在 Spotify 中播放”链接。 选项包括: - 为每个曲目(标题+艺术家+专辑)进行单独的 Spotify 调用 - 进行一次复杂的 Spotify 调用以一次覆盖所有曲目 - 使用其他服务(如 Echo Nest ) 第一个选项不可行,因为它会破坏 Spotify 服务器并且肯定会遇到速率限制。最后一个不是一个选项,因为客户特别想避免引入更多的 API(尤其是 Echo Nest 的),原因我不会深入。 我们最终放弃了该项目,部分原因是 Spotify 完全缺乏支持/响应。我觉得非常令人沮丧。显然,在搜索中将一堆 AND 和 OR 串在一起会起到一些作用。我们只需要 Spotify 熟悉实际代码的人来告诉我们什么。我知道 API 是免费提供的,但是要从他们在其网站上列出的每个支持渠道获得零响应是令人抓狂的。一个简单的“我们不知道我们的头脑,不想花十分钟弄清楚,所以你不走运”将是一个改进。

以上是关于在 Spotify 高级搜索中对运算符进行分组的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法使用非高级帐户使用 Spotify API 搜索歌曲但不播放它们?

mongoDB高级篇①聚集运算之group与aggregate

如何在 Symfony 中对 Monolog 消息进行高级过滤?

在使用 spotify api 进行用户身份验证后管理 spotify 订阅(取消、升级)

JIRA的使用介绍(四)- 高级搜索(JQL)

第六章 高级加密标准