从musicbrainz 获取专辑、专辑封面和运行时间信息

Not*_*ter 3 musicbrainz

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

我得到了这个端点,但它返回的数据令人困惑: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"
]
}
}
],
Run Code Online (Sandbox Code Playgroud)

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

最好是一次通话,但如有必要,我可以进行连续通话。

谢谢你的帮助。

Fre*_*eso 7

首先:

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

当然是。

首先,您需要找到这位艺术家,比如制作波西米亚狂想曲的女王。他们用 MusicBrainz 艺术家 ID“ 0383dadf-2a4e-4d10-a46a-e9e041da8eb3标识,因此您可以浏览该艺术家的发行版:https : //musicbrainz.org/ws/2/release/ ? artist = 0383dadf-2a4e-4d10-a46a-e9e041da8eb3&inc=recordings&fmt=json(注意inc=recordings

这为您提供了您所要求的大部分内容。版本列表及其运行时——有点。每个 Release 都应该有一个或多个medium属性,而这些属性又包含一个track-list带有多个tracks 的属性。length每个tracks的总和构成了运行时(length以毫秒为单位)。

对于封面艺术,您可能会注意到输出有一个cover-art-archive属性。对于封面,MusicBrainz 使用Cover Art Archive,它使用 MusicBrainz ID 作为标识符。该cover-art-archive属性说明封面艺术档案中是否存在任何封面艺术以及有关此的一些详细信息——例如,CAA 是否有任何图像 ( artwork)?它是否有背面图像 ( back) 和/或正面图像 ( front)?发行版 ( count)总共有多少张图片?如果cover-art-archive? artworktrue,我们可以继续从 CAA 获取封面艺术。CAA 的 API 非常简单:要获得发行版的“正面”图像,例如 1974 年英国单曲“Killer Queen”,其 MusicBrainz 发行版 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 文档有关可用封面图片的更多详细信息(例如,这一张有两张图片:一张正面+中图和一张背面+中图)。

Cover Art Archive 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 文档中浏览请求部分下的“分页”部分


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

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

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


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

https://musicbrainz.org/doc/MusicBrainz_Entity是 MusicBrainz 中使用的实体列表。了解发行组和发行版之间以及曲目和录音(和作品)之间的区别将使您能够更好地有效使用网络服务和一般的 MusicBrainz 数据。

https://musicbrainz.org/doc/MusicBrainz_Database/Schema介绍了 MusicBrainz 的结构。了解艺术家的信用、(“高级”)关系和媒介如何发挥作用也可能会为您省去很多麻烦。

  • @NotoriousWebmaster 是的,我的原始版本有“浏览请求”是指向 https://musicbrainz.org/doc/Development/XML_Web_Service/Version_2#Browse 的链接,其中有一个“分页”部分对此进行了描述。基本上,`offset=X` 允许你“跳过”X 个结果,`limit=X` 允许你设置每个查询返回的结果数量(最多 100 个)。所以如果你做`&limit=100&offset=0`、`&limit=100&offset=100`、`&limit=100&offset=200`,......它应该是你正在寻找的。在答案中也添加了对此的评论。 (2认同)