【问题标题】:Querying https://musicbrainz.org for all artists查询所有艺术家的 https://musicbrainz.org
【发布时间】:2017-03-02 13:55:27
【问题描述】:

如何在https://musicbrainz.org 上查询所有出生于 1720 年且死于 1900 年之前的艺术家?

我需要检索他们的 ID 和一些关于他们的信息。 是否可以获取JSON格式的数据?

【问题讨论】:

标签: json fetch musicbrainz


【解决方案1】:

对于那些不想阅读长篇文章的人,这里是 OP 在一个查询中要求的所有内容:

http://musicbrainz.org/ws/2/artist/?query=begin:[1720 TO 1900] AND end:[1720 TO 1900] AND type:"person"&fmt=json

这应该会返回完美的结果,并且必须是可能的最佳答案。 - 所有艺术家,出生于 1720 年之后,死亡于 1900 年之前,采用 json 格式,可检索他们的 ID,以及关于他们的大量信息...

解释和思考过程:

由于 Brian 目前接受的答案包括 API 文档的链接,我可以说它在技术上是完整的,但我不认为指向规范是最好的答案,并且可以大大改进。

首先很容易通过添加json格式参数返回json。

&fmt=json

其次,虽然我不认为当时有很多男孩乐队,但鉴于 OP 询问的是出生和死亡,我们可能会得出结论,他们只对人感兴趣,而不是对其他类型的艺术家群体感兴趣。

AND 类型:“人”

此时,Brian 建议每个结束日期再调用一次,然后过滤结果,只选择那些在 1900 年之前去世的人。

如果您这样做,您将需要进行超过 180 次搜索(最佳答案建议),而是针对每个出生和每个死亡年份组合进行一次搜索,所以从技术上讲,从 1720 年到 1720 年,一直到 1900-1900 年,我的数学很臭,但那是数千次搜索。

但这仍然是一个如此可怕的搜索是因为有时日期要么只写有年份,然后有时写有月份日期和年份,例如,如果你搜索开始 1929 和结束 1900

因此,如果写入的日期不仅包括年份,还包括月份/日期,由于完整的生日,您将不会得到该艺术家的任何结果:

例如:

id "2b8a16a9-468f-49b0-93ea-5e6726f41643" 类型“人”寿命
开始“1929-11-10” 结束“1990” 结束为真

因此,为了仅使用年份获得任何好的结果,您需要添加模糊搜索语法

musicbrainz.org/ws/2/artist/?query=begin:1960~ AND end:1990~ AND 类型:“人”&fmt=json

但这并不能解决建议的搜索量的大问题,所以知道它基于 LUCENS,我决定学习一些 LUCENS,并意识到有范围语法:

因此,您可以通过一个查询完成上述所有操作:

http://musicbrainz.org/ws/2/artist/?query=begin:[1720 到 1900] 和 结束:[1720 TO 1900] AND 类型:“person”&fmt=json

PS 我建议开始添加引号甚至 url 编码您的参数值以防止损坏。 例如,在上面的示例中将引号从开始和结束数字中删除没有问题,但类型值将失败。

【讨论】:

    【解决方案2】:

    首先,据我所知,Musicbrainz 仅返回 XML,因此您必须将结果转换为 JSON。

    要回答您的问题,您似乎无法在一次通话中获得所需的数据。 (以下内容基于XML Web Service Search documentation。)

    此调用将检索在给定年份出生的所有艺术家:

    http://musicbrainz.org/ws/2/artist/?query=begin:1720

    我相信您需要编写 180 次调用(1720 到 1900 年间每年一次)才能获得所需的数据。您还需要通过查看<life-span> 中的<end> 节点手动过滤掉1900 年后去世的艺术家。这是因为end 字段只会显示在特定年份去世的艺术家。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多