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

How to sort results from the MusicBrainz search API

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

http://musicbrainz.org/ws/2/recording/?query=artist:Coldplay+AND+recording:The+Scientist

这将 return 艺术家发行的歌曲的每个版本,包括合辑、'best of' 专辑和现场录音。我想找'original'版本,应该是第一个发布的

如果不检索每一个结果(这在单个请求中可能是不可能的),最明显的方法是让响应按发布日期升序排序,这样第一个结果总是我' m 之后.

API documentation好像没有提到排序结果,请问这样可以吗?

我认为排序不可能。

也未必能解决所有问题。许多录音的日期仅为年份。因此,发行日期为“1989”的录音将被视为比发行日期为“1989-01-01”的录音更早的版本,实际上可能是也可能不是这种情况.

此外,许多版本具有相同的日期,特别是如果日期仅为一年,并且其中一些版本可能是 "original",而另一些则不是。这些发行版的所有录音将具有相同的发行日期(例如“1989”)

如果准确性很重要,您可能需要找到最早的未标记为实时或编译的正式版本,然后从该版本中选择一个录音。

这可能不是您的解决方案,但以下 bash 一行对我来说很有效,可以获取专辑中最早的年份:

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/-.*//'

它将查询并获取所有日期字段,对它们进行排序并获得最低的。最后,它会删除年份之后可能的日期值。

对于您的具体问题,这还不够。但也许这个答案可以帮助一些人。

您需要安装 jq 才能运行。

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