Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Search 如何对MusicBrainz搜索API中的结果进行排序_Search_Musicbrainz - Fatal编程技术网

Search 如何对MusicBrainz搜索API中的结果进行排序

Search 如何对MusicBrainz搜索API中的结果进行排序,search,musicbrainz,Search,Musicbrainz,我正在尝试从MusicBrainz API检索曲目信息,仅使用艺术家和标题作为搜索查询: http://musicbrainz.org/ws/2/recording/?query=artist:Coldplay+AND+recording:The+Scientist 这将返回这位艺术家发布的歌曲的每一个版本,包括专辑汇编、“最佳”专辑和现场录音。我想找到“原始”版本,它应该是第一个发布的版本 如果不检索每一个结果(这在单个请求中可能不可能),显而易见的方法是按升序发布日期对响应进行排序,这样第

我正在尝试从MusicBrainz API检索曲目信息,仅使用艺术家和标题作为搜索查询:

http://musicbrainz.org/ws/2/recording/?query=artist:Coldplay+AND+recording:The+Scientist
这将返回这位艺术家发布的歌曲的每一个版本,包括专辑汇编、“最佳”专辑和现场录音。我想找到“原始”版本,它应该是第一个发布的版本

如果不检索每一个结果(这在单个请求中可能不可能),显而易见的方法是按升序发布日期对响应进行排序,这样第一个结果总是我要查找的结果


似乎没有提到排序结果,所以这可能吗?

我认为排序是不可能的

它也可能不能解决所有问题。许多录音的日期仅为一年。因此,发布日期为“1989”的记录将被视为比发布日期为“1989-01-01”的记录更早的版本,实际上可能是,也可能不是

此外,许多版本都有相同的日期,特别是当日期仅为一年时,其中一些版本可能是“原始版本”,而其他版本则不是。这些版本中的所有录音将具有相同的发布日期(例如“1989”)


如果准确性很重要,您可能需要找到最早的官方发行版,该发行版未标记为live或Compliation,然后从该发行版中选择录音。

这可能不是您的解决方案,但下面的bash one liner对我来说可以获得专辑的最老年份:

curl -s 'http://musicbrainz.org/ws/2/release/?query=artist:%22The%20Beatles%22%20AND%20release:%22Abbey%20Road%22%20AND%20status:Official&fmt=json'  | jq -r '.releases[] | .date' | sort | head -n 1  | sed 's/-.*//'
它将查询并获取所有日期字段,对它们进行排序并获取最低值。最后,它会删除年后可能的日期值

对于你的具体问题,这是不够的。但也许这个答案对某些人有帮助

要使其工作,您需要安装

我相信有更好的解决办法。但是这个对我来说已经足够好了