如何查询1720年后出生并在1900年以前去世的所有艺术家https://musicbrainz.org?为所有艺术家查询https://musicbrainz.org
我需要检索他们的ID和一些关于他们的信息。 是否有可能以JSON格式获取数据?
如何查询1720年后出生并在1900年以前去世的所有艺术家https://musicbrainz.org?为所有艺术家查询https://musicbrainz.org
我需要检索他们的ID和一些关于他们的信息。 是否有可能以JSON格式获取数据?
首先,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
字段只会让您在特定年份中死亡的艺术家。
对于那些谁不想读长的帖子,这里是一切的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编码您的参数值,以防止破损。 例如,在上面的示例中,将引号和开始和结束数字关闭没有问题,但是关闭类型值将失败。
当您不需要稳定/生产Web服务时,可以使用JSON格式:https://musicbrainz.org/doc/Development/JSON_Web_Service – JonnyJD