You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从MusicBrainz获取艺人专辑、封面及时长?端点数据解析求助

获取艺人专辑列表(含封面与总时长)的MusicBrainz API方案

首先得理清你当前遇到的问题:你用的recording端点返回的是**单首录音(歌曲)**的数据,而非按专辑组织的内容,这就是数据看起来混乱的核心原因。另外length字段的值是毫秒数,比如203000换算成常规时长就是3分23秒(203000 ÷ 1000 ÷ 60 ≈ 3.38分钟),这个是MusicBrainz统一的计时单位,并非数据异常。

接下来给你一套可行的解决方案,分步骤拆解:

1. 正确获取按专辑组织的数据

要拿到结构化的专辑列表,你需要切换到MusicBrainz的release端点,而不是recording。比如查询Queen的专辑,请求地址应该是:

http://musicbrainz.org/ws/2/release?query=artist:"Queen" AND type:album&fmt=json&inc=recordings

这里的inc=recordings参数非常关键——它会让API同时返回每个专辑下的所有录音(歌曲)数据,省去后续单独请求的麻烦,方便直接计算专辑总时长。

返回的数据里,每个release条目对应一张专辑,包含专辑名称、发行日期、MBID(唯一标识符)等核心信息,同时嵌套了recordings数组,里面是每首歌的详情(包括length字段)。

2. 计算专辑总时长

MusicBrainz不会直接返回专辑的总时长,需要你自行累加计算:

  • 遍历每个专辑下的recordings数组
  • 把每个录音的length(毫秒)累加求和
  • 最后转换成你需要的格式(比如分钟:秒或总分钟数)

举个简单的计算逻辑(伪代码):

total_ms = sum(recording['length'] for recording in release['recordings'])
total_seconds = total_ms // 1000
minutes = total_seconds // 60
seconds = total_seconds % 60
album_duration = f"{minutes}:{seconds:02d}"

3. 获取专辑封面链接

MusicBrainz本身不存储封面图片,但可以通过Cover Art Archive的服务获取,只需用专辑的MBID构造请求地址:

  • 封面的标准构造格式为:coverartarchive.org/release/{release_mbid}/front
  • 其中{release_mbid}就是你从release条目里拿到的id字段值

这个地址会直接返回专辑的封面图片(若该专辑有收录封面的话)。

补充:解析你当前的recording端点数据

你之前调用的recording端点返回的是所有匹配Queen的专辑类录音,每一条都是单独的歌曲:

  • length:单首歌的时长(毫秒),转换方式前面已经说明
  • 如果想从这些数据关联到专辑,需要查看每个recording里的releases数组,里面包含了这首歌所属的专辑信息,但这种方式需要自行聚合数据,效率远不如直接用release端点。

内容的提问来源于stack exchange,提问作者NotoriousWebmaster

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:55:50