【问题标题】:Getting album, album art, and run time info from musicbrainz从 musicbrainz 获取专辑、专辑封面和运行时间信息
【发布时间】:2018-02-17 23:41:37
【问题描述】:

是否有任何方法可以获取艺术家(乐队)的专辑列表,以及专辑封面和运行时的链接?

我已经获得了这个端点,但它返回的数据令人困惑: http://musicbrainz.org/ws/2/recording?query=artist:%22Queen%22%20and%20type:album&fmt=json

数据并没有真正围绕专辑进行组织,“长度”数据返回类似 203000 的数据。但如果您在上下文中查看它会更好,所以这是它的第一部分(抱歉,我无法将它缩进):

{
"created": "2018-02-17T03:47:57.052Z",
"count": 9533710,
"offset": 0,
"recordings": [
{
"id": "c2e919f7-ecb9-4fdf-9162-3c26d0127fa0",
"score": "100",
"title": "Son and Daughter",
"length": 203000,
"video": null,
"artist-credit": [
{
"artist": {
"id": "0383dadf-2a4e-4d10-a46a-e9e041da8eb3",
"name": "Queen",
"sort-name": "Queen",
"disambiguation": "UK rock group",
"aliases": [
{
"sort-name": "Queen + Adam Lambert",
"name": "Queen + Adam Lambert",
"locale": null,
"type": null,
"primary": null,
"begin-date": "2011",
"end-date": null
}
]
}
}
],
"releases": [
{
"id": "bb19abaf-80b3-4a3e-846d-5f12b12af827",
"title": "Queen",
"status": "Official",
"release-group": {
"id": "810068af-2b3c-3e9c-b2ab-68a3f3e3787d",
"primary-type": "Album"
},
"date": "1994",
"country": "NL",
"release-events": [
{
"date": "1994",
"area": {
"id": "ef1b7cc0-cd26-36f4-8ea0-04d9623786c7",
"name": "Netherlands",
"sort-name": "Netherlands",
"iso-3166-1-codes": [
"NL"
]
}
}
],
"track-count": 10,
"media": [
{
"position": 1,
"format": "CD",
"track": [
{
"id": "3a26455e-2660-30dc-a652-6a2b40f1fbe5",
"number": "8",
"title": "Son and Daughter",
"length": 203400
}
],
"track-count": 10,
"track-offset": 7
}
]
},
{
"id": "1783da6a-9315-3602-a488-1738eb733a0f",
"title": "Queen",
"status": "Official",
"release-group": {
"id": "810068af-2b3c-3e9c-b2ab-68a3f3e3787d",
"primary-type": "Album"
},
"date": "1973-09-04",
"country": "US",
"release-events": [
{
"date": "1973-09-04",
"area": {
"id": "489ce91b-6658-3307-9877-795b68554c98",
"name": "United States",
"sort-name": "United States",
"iso-3166-1-codes": [
"US"
]
}
}
],

如果有人可以向我解释这些数据,那么我不需要另一个端点。但我一直在寻找 musicbrainz 文档,但它们并不是很有帮助。

最好是一次通话,但如果需要,我可以连续通话。

感谢您的帮助。

【问题讨论】:

  • MusicBrainz 文档可在此处找到:musicbrainz.org/doc/Development/XML_Web_Service/Version_2 您想要的专辑称为“发行版”(而不是使用 recordigs 端点)。
  • 你不会相信我现在打开了多少个 musicbrainz 标签。是的,我查看了文档,现在我正在向 SO 寻求帮助。感谢“发布”信息。
  • 不确定您一直在寻找什么,但您可以使用 musicbrainz.org/ws/2/… 获取版本的指南,然后为每个版本获取指南:musicbrainz.org/ws/2/release/… 我不知道为什么公司的“录音”没有不适用于“浏览请求”。这可能在某个时候发生了变化。您可能还想使用 MusicBrainz 文档中列出的库。您通常可以在 IRC 上找到开发人员:metabrainz.org/contact

标签: musicbrainz


【解决方案1】:

首先:

有没有什么方法可以获取艺术家(乐队)的专辑列表,以及专辑封面和运行时的链接?

是的,当然。

首先,您需要找到艺术家,例如,完成波西米亚狂想曲的女王。他们被识别为 MusicBrainz 艺术家 ID“0383dadf-2a4e-4d10-a46a-e9e041da8eb3”,因此您可以为该艺术家发布的作品使用 browse requesthttps://musicbrainz.org/ws/2/release/?artist=0383dadf-2a4e-4d10-a46a-e9e041da8eb3&inc=recordings&fmt=json(注意 inc=recordings

这可以满足您的大部分需求。发布列表及其运行时 - 种类。每个版本都应该有一个或多个medium 属性,而这些属性又具有一个track-list 和多个tracks。每个tracks 的length 的总和构成运行时(length 以毫秒为单位)。

对于封面艺术,您可能会注意到输出具有 cover-art-archive 属性。对于封面艺术,MusicBrainz 使用 Cover Art Archive,它使用 MusicBrainz ID 作为标识符。 cover-art-archive 属性说明了封面艺术档案中是否存在任何封面艺术以及有关此的一些细节——例如,CAA 是否有任何图像 (artwork)?它是否有背面图像 (back) 和/或正面图像 (front)?该版本共有多少张图片 (count)?如果cover-art-archiveartworktrue,我们可以继续从 CAA 获取封面艺术。 CAA 的 API 非常简单:要获得一个版本的“正面”图像,比如 1974 年英国单曲“Killer Queen”,它的 MusicBrainz Release ID 为“a2d12ee8-9aeb-4d91-bfab-5c21f7a577fc”,你可以简单地做https://coverartarchive.org/release/a2d12ee8-9aeb-4d91-bfab-5c21f7a577fc/front 您还可以通过https://coverartarchive.org/release/a2d12ee8-9aeb-4d91-bfab-5c21f7a577fc 获取 JSON 文档,其中包含有关可用封面图片的更多详细信息(例如,此图片有两张图片:一张正面+中号和一张背面+中号图片)。

封面艺术档案 API 记录在 https://musicbrainz.org/doc/Cover_Art_Archive/API,MusicBrainz API/网络服务文档可以在 https://musicbrainz.org/doc/Development/XML_Web_Service/Version_2 找到

请注意,使用浏览请求,您可以使用 offset 对结果进行分页,并使用 limit 更改每个查询的结果数量,请参阅 MusicBrainz WS 文档中浏览请求部分下的 "Paging" section


其次:虽然您没有直接询问这个问题,但您在问题中使用了一个通用术语的搜索查询,所以我想我会谈谈这个问题。在 MusicBrainz 中,所有内容都使用MusicBrainz identifiers (IDs) 标识。 (我在第一部分也提到了它们。)

原因是很多很多的名字都不是唯一的。在撰写本文时,MusicBrainz 中有三位被称为“Queen”的独特艺术家:https://musicbrainz.org/search?query=%22queen%22&type=artist&method=advanced——这还不包括其他 321 位以“queen”为名字的艺术家中的任何一位。如果没有更多信息,MusicBrainz 不可能知道您想从哪一个中查找信息,因此您的第一步可能是以某种方式缩小搜索范围(例如,添加 type:group 将搜索范围缩小到 123 results ,使用country:gb 限制为21 results,同时执行这两种操作都会得到11 results(有关更多详细信息,请参阅search syntax documentation)或之后以某种方式过滤。

将范围缩小到所需的特定艺术家后,您可以继续执行上述步骤以获取所需的详细信息。缩小范围的步骤将取决于您的特定应用程序/用例。


最后:您似乎在抽象层面对 MusicBrainz 的数据结构有一些缺失的理解。例如,以上所有内容都是假设您所说的专辑是指特定发行版本,例如 1974 年英国“杀手皇后”单曲,而不是像 MusicBrainz 中的“杀手皇后”单曲的任何版本那样更通用的发行概念术语将是一个发布组。

https://musicbrainz.org/doc/MusicBrainz_Entity 是 MusicBrainz 中使用的实体列表。了解 Release Group 和 Release 之间以及 Tracks 和 Recordings(和 Works)之间的区别将使您能够更好地有效使用 Web 服务和一般的 MusicBrainz 数据。

https://musicbrainz.org/doc/MusicBrainz_Database/Schema 介绍了 MusicBrainz 的结构。了解艺术家的功劳、(“高级”)关系和媒介是如何影响事物的,也可能会在以后为您省去很多麻烦。

【讨论】:

  • 感谢@Freso。 CAA 链接很有价值。您提供的第一个链接的结果集显示有 885 个版本,但数据中仅提供 25 个。您如何访问其余部分?我猜它是连续调用,带有一些附加参数,指示哪个“页面”,但我无法在文档中找到它的示例。
  • @NotoriousWebmaster 是的,我的原始版本有“浏览请求”是指向musicbrainz.org/doc/Development/XML_Web_Service/… 的链接,其中有一个“分页”部分对此进行了描述。基本上,offset=X 允许您“跳过”X 个结果,limit=X 允许您设置每个查询返回的结果数量(最多 100 个)。因此,如果您使用&limit=100&offset=0&limit=100&offset=100&limit=100&offset=200,……它应该是您正在寻找的。在答案中也添加了对此的评论。
【解决方案2】:

需要了解返回数据的格式,将结果复制到https://jsonformatter.curiousconcept.com/等JSON格式化服务中

然后您会发现返回的数据中有多个艺术家,这就是为什么它不像“艺术家的专辑”那么简单

我猜“长度”数据是以毫秒为单位的。

【讨论】:

  • 感谢@Tony 的回复。 203,000 秒是 56.388888 小时。这似乎不太可能。所以问题是,如何仅获取单个艺术家、专辑以及每张专辑的长度的数据。但是谢谢你把我指向 jsonformatter!
  • 是的,秒会相当长 :) 我的意思是毫秒,所以 203,000 大约是 3 分 25 秒
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多