我尝试从MusicBrainz API中检索曲目信息,仅使用艺术家和标题作为搜索查询:
http://musicbrainz.org/ws/2/recording/?query=artist:Coldplay+AND+recording:The+Scientist
这将返回艺术家发布的歌曲的每个版本,包括编辑,'最好的'专辑和现场录音。我想找到原作'版本,应该是第一个发布的版本。
不检索每一个结果(在单个请求中可能无法实现),显而易见的方法是让响应按升序发布日期排序,这样第一个结果始终是我的结果。之后。
API documentation似乎没有提到排序结果,这可能吗?
答案 0 :(得分:4)
我不认为排序是可能的。
它也可能无法解决所有问题。许多录音只有一年的日期。因此,发行日期" 1989"将被视为之前的版本,而不是具有发布日期" 1989-01-01"的录制,实际上可能是也可能不是。
此外,许多版本具有相同的日期,特别是如果日期仅为一年,并且其中一些版本可能是"原始",而其他版本则不是。这些版本的所有录音都将具有相同的发布日期(例如" 1989")
如果准确性很重要,您可能必须找到最早的正式版本,未标记为实时或编辑,然后从此版本中选择录制。
答案 1 :(得分:0)
它可能不是你的解决方案,但是下面的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/-.*//'
它将查询并获取所有日期字段,对它们进行排序并获得最低值。最后,它删除了一年后可能的日期值。
对于您的具体问题,这还不够。但也许这个答案可以帮助一些人。
您需要安装jq才能实现此目的。
我相信有更漂亮的解决方案。但这个对我来说已经足够了。