【问题标题】:How to sort results from the MusicBrainz search API如何对 MusicBrainz 搜索 API 的结果进行排序
【发布时间】:2017-05-14 16:26:39
【问题描述】:

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

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

这将返回艺术家发行的歌曲的每个版本,包括合辑、“最佳”专辑和现场录音。我想找到“原始”版本,应该是第一个发布的版本。

如果不检索每一个结果(这在单个请求中可能不可能),那么明显的方法是让响应按发布日期升序排序,这样第一个结果始终是我想要的结果.

API documentation 好像没有提到排序结果,这可能吗?

【问题讨论】:

    标签: search musicbrainz


    【解决方案1】:

    我认为排序是不可能的。

    它也可能无法解决所有问题。许多录音的日期只有一年。因此,发行日期为“1989”的录音将被视为比发行日期为“1989-01-01”的录音更早的版本,实际上可能是这样,也可能不是。 p>

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

    如果准确性很重要,您可能必须找到最早的未标记为现场或合辑的正式版本,然后从该版本中选择录音。

    【讨论】:

      【解决方案2】:

      这可能不是你的解决方案,但以下 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 才能正常工作。

      我相信有更漂亮的解决方案。不过这个对我来说已经足够了。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-07-10
        • 2011-10-16
        • 2011-07-13
        • 2021-10-26
        • 1970-01-01
        • 2012-01-28
        • 2013-04-28
        • 2016-05-21
        相关资源
        最近更新 更多