2017-03-02 111 views

回答

0

首先,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字段只会让您在特定年份中死亡的艺术家。

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询问有关出生和死亡,我们可以得出结论,他们有兴趣只人们而不是其他类型的艺术家。

,然后键入:“人”

在这一点布赖恩提出另一种号召每个结束日期,然后过滤结果只取那些谁死在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~和端部:1990年〜AND 类型: “人” & FMT = JSON

但是,这并没有什么解决的T大问题他搜索的幅度建议,所以知道它的吕桑基于我决定学习一些吕桑,并实现有范围语法:

因此,你可以做到以上的有一个查询:

http://musicbrainz.org/ws/2/artist/?query=begin:[1720 1900 ]和 结束:1720年到1900年],然后键入:“人” & FMT = JSON

PS我建议她先加上引号,甚至URL编码您的参数值,以防止破损。 例如,在上面的示例中,将引号和开始和结束数字关闭没有问题,但是关闭类型值将失败。