Получение альбома, обложки альбома и информации о времени выполнения из musicbrainz

Есть ли способ получить список альбомов для исполнителя (группы), а также ссылку на обложку альбома и время выполнения?

Мне дали эту конечную точку, но данные, которые она возвращает, сбивают с толку: http://musicbrainz.org/ws/2/recording?query=artist:%22Queen%22%20and%20type:album&fmt=json

Данные на самом деле не организованы вокруг альбомов, а данные "length" возвращают что-то вроде 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, и они не очень полезны.

Предпочтительно это было бы с одним вызовом, но я могу делать последовательные вызовы при необходимости.

Спасибо за вашу помощь.

2 ответа

Решение

Прежде всего:

Есть ли способ получить список альбомов для исполнителя (группы), а также ссылку на обложку альбома и время выполнения?

Определенно да.

Сначала вы захотите найти художника, скажем, королеву, которая сделала богемную рапсодию. Они идентифицированы с идентификатором MusicBrainz Artist ID " https://musicbrainz.org/artist/0383dadf-2a4e-4d10-a46a-e9e041da8eb3 ", поэтому вы можете сделать запрос на просмотр релизов этого исполнителя: https://musicbrainz.org/ws/2/release/?artist=0383dadf-2a4e-4d10-a46a-e9e041da8eb3&inc=recordings&fmt=json (обратите внимание на inc=recordings)

Это дает вам большую часть того, что вы просите. Список выпусков и их время выполнения - вроде. Каждый релиз должен иметь один или несколько medium свойства, которые в свою очередь имеют track-list с рядом track s. Сумма length каждого из этих track S это то, что составляет время выполнения (length дается в миллисекундах).

Что касается обложки, вы можете заметить, что выход имеет cover-art-archive имущество. Для обложки MusicBrainz использует Cover Art Archive, который использует идентификаторы MusicBrainz в качестве идентификаторов. cover-art-archive Атрибут указывает, существует ли какая-либо обложка в Архиве обложек и некоторые подробности об этом, например, есть ли у CAA какие-либо изображения вообще (artwork)? Есть ли у него заднее изображение (back) и / или лицевое изображение (front)? Сколько всего изображений для релиза (count)? Если cover-art-archiveartwork является trueмы можем продолжить и получить обложку из CAA. API CAA действительно прост: чтобы получить "передний" образ релиза, скажем, британский сингл "Killer Queen" 1974 года с идентификатором выпуска MusicBrainz " https://musicbrainz.org/release/a2d12ee8-9aeb-4d91-bfab-5c21f7a577fc ", вы можете просто выполнить https://coverartarchive.org/release/a2d12ee8-9aeb-4d91-bfab-5c21f7a577fc/front Вы также можете сделать https://coverartarchive.org/release/a2d12ee8-9aeb-4d91-bfab-5c21f7a577fc для получения более подробной информации о том, какие изображения обложки доступны (например, у этого есть два изображения: одно переднее + среднее и одно заднее + среднее изображение).

API-интерфейс Cover Art Archive задокументирован по адресу https://musicbrainz.org/doc/Cover_Art_Archive/API а документацию API/ веб-службы MusicBrainz можно найти по адресу https://musicbrainz.org/doc/Development/XML_Web_Service/Version_2

Обратите внимание, что с помощью запросов просмотра вы можете пролистать результаты, используя offset и варьировать количество результатов на запрос, используя limit см. раздел "Пейджинг" под разделом запроса просмотра в документации MusicBrainz WS.


Во-вторых: Хотя вы не спрашиваете об этом напрямую, вы используете поисковый запрос, использующий общий термин в вашем вопросе, поэтому я решил немного поговорить об этом. В MusicBrainz все идентифицируется с помощью идентификаторов (идентификаторов) MusicBrainz. (Я вроде упомянул их в первом разделе.)

Причина этого в том, что многие, многие имена не являются уникальными. На момент написания статьи в MusicBrainz есть три уникальных художника, известных как "Queen": https://musicbrainz.org/search?query=%22queen%22&type=artist&method=advanced - не считая ни одного из 321 других художников, у которых есть "queen" "как часть их имени. Без дополнительной информации MusicBrainz не сможет узнать, от кого из них вы хотите узнать информацию, поэтому ваш первый шаг, скорее всего, будет заключаться в том, чтобы сузить поиск (например, добавить type:group сужает поиск до 123 результатов, используя country:gb ограничивает до 21 результата, и то и другое дает 11 результатов (см. документацию по синтаксису поиска для получения более подробной информации)) или каким-либо образом фильтровать впоследствии

После того, как вы сузили его до определенного исполнителя, которого вы хотите, вы можете продолжить с шагами, описанными выше, чтобы получить детали, которые вы хотите. Действия по его сужению будут зависеть от вашего конкретного приложения / варианта использования.


Наконец: у вас, похоже, недостаточно понимания на абстрактном уровне о том, как структурированы данные MusicBrainz. Например, все вышесказанное предполагает, что под альбомом вы имеете в виду определенную выпущенную версию, такую ​​как британский сингл "Killer Queen" 1974 года, а не более общую концепцию релиза, как любая версия сингла "Killer Queen", которая в MusicBrainz терминология будет группа выпуска.

https://musicbrainz.org/doc/MusicBrainz_Entity - это список объектов, используемых в MusicBrainz. Понимание различий между группой выпусков и выпуском, а также между треками и записями (и работами) позволит вам гораздо эффективнее использовать веб-сервис и данные MusicBrainz в целом.

https://musicbrainz.org/doc/MusicBrainz_Database/Schema - введение в структуру MusicBrainz. Знание того, как кредиты художника, ("продвинутые") отношения и медиумы играют на вещи, также, вероятно, избавит вас от головной боли позже.

Вам необходимо понять формат возвращаемых данных, скопировать результат в службу форматирования JSON, например https://jsonformatter.curiousconcept.com/

Затем вы поймете, что у вас есть несколько исполнителей в возвращенных данных, поэтому это не так просто, как "альбомы по исполнителю"

Я предполагаю, что длина данных в миллисекундах.

Другие вопросы по тегам