Is a missing Release Status a data error?

Howdy!

It’s me again, the guy writing that tool to create NFO files for Kodi music videos.

So I decided to rewrite my MusidBrainz algorithm to find both a Single and the related Album if possible since generally anything that got a music video created was released as a single. My previous data walker required a release to have a status of “Official” to weed out promos and other unofficial releases. But then I hit a wall where status didn’t exist on a release. An example from Lionel Richie’s “Dancing on the Ceiling”:

This is the release I’m looking for, it matches up with other providers like Wikipedia:

As a big hit I guess I’m stumped why this isn’t marked “Official” as opposed to having no status whatsoever.

Should I change my code to check for “Official” or undefined? I assume this is the short-term solution, but what is the MusicBrainz policy regarding fixing this if it is indeed a data error?

Also the one that I want is grouped under a release called “Dancin’ on the Ceiling” which doesn’t match the title I’m looking for. However on the page that I linked the first column “Title” has the correct name, how do I include that in the initial API call rather than having to do an additional lookup for each recording?

EDIT: I found I can get the track name under the media[0].track[0].title but the necessary date from release-events is not returned in the standard call:

https://musicbrainz.org/ws/2/recording?query=%22dancing+on_the_ceiling%22%20AND%20artist:%22lionel+richie%22&limit=100&fmt=json

I tried adding &inc=event-rels but that still doesn’t return the date as seen on the linked recording:

Thanks,
Chris

Missing data can happen all the time, your code should be prepared for it. It just means the editor entering the release did not enter the status. Not always all information is available when entering a release. Or the editor was new and unsure about the exact meaning of the status. If you know that this is an official release you can update the status in the database.

Whether you consider unknown or unset status valid result in your application is up to you. Depends on how important it is to only get official releases.

5 Likes

if it’s important to your decision, 4.6% of releases (almost 189,000) don’t have a status set. that’s nearly double the number of Promotional releases

3 Likes

The release events are under the release-events node of a release.I see them listed on the API call you linked.

event-rels is for relationships to actual event entities, e.g. concerts and festivals.

Edit:Also the recording has the first-release-date, if that’s what you are looking for (1986 in your example)

2 Likes

Thanks so much for the additional info. The last sticking point is what I need clarification on. Are you saying I can assume the release I want, the one with no “date” included, inherits the recording “first-release-date”? This is why I’m asking:

{
	"id": "c8c017c8-85ff-4bd5-b67a-5bc2eedb0c11",
	"score": 67,
	"title": "Dancin’ on the Ceiling",
	"length": 262000,
	"video": null,
	"artist-credit": [...],
	"first-release-date": "1986",
	"releases": [
		{...},
		{
			"id": "3cb2f7af-1aa8-40fd-98a6-c09ea07256ba",
			"count": 1,
			"title": "Dancing on the Ceiling",
			"artist-credit": [
				{
					"name": "Lionel Richie",
					"artist": {
						"id": "3cb25fb2-5547-4b05-adec-1a5e37830d46",
						"name": "Lionel Richie",
						"sort-name": "Richie, Lionel"
					}
				}
			],
			"release-group": {
				"id": "3d79a50c-c480-4dff-8625-ce7164946e8b",
				"type-id": "d6038452-8ee0-3f68-affc-2de9a1ede0b9",
				"primary-type-id": "d6038452-8ee0-3f68-affc-2de9a1ede0b9",
				"title": "Dancing on the Ceiling",
				"primary-type": "Single"
			},
			"track-count": 2,
			"media": [
				{
					"position": 1,
					"format": "7\" Vinyl",
					"track": [
						{
							"id": "914b1970-ed6e-4244-8400-ec0d6ebfd56b",
							"number": "1",
							"title": "Dancing on the Ceiling",
							"length": 260000
						}
					],
					"track-count": 2,
					"track-offset": 0
				}
			]
		},
		{
			"id": "a8d62085-4c40-4b34-8f08-63f644e79d0d",
			"status-id": "4e304316-386d-3409-af2e-78857eec5cfe",
			"count": 1,
			"title": "Back to Front",
			"status": "Official",
			"artist-credit": [
				{
					"name": "Lionel Richie",
					"artist": {
						"id": "3cb25fb2-5547-4b05-adec-1a5e37830d46",
						"name": "Lionel Richie",
						"sort-name": "Richie, Lionel"
					}
				}
			],
			"release-group": {
				"id": "6e3be147-2bd7-342c-9c04-5ed7c32ddf1e",
				"type-id": "dd2a21e1-0c00-3729-a7a0-de60b84eb5d1",
				"primary-type-id": "f529b476-6e62-324f-b0aa-1f3e33d313fc",
				"title": "Back to Front",
				"primary-type": "Album",
				"secondary-types": [
					"Compilation"
				],
				"secondary-type-ids": [
					"dd2a21e1-0c00-3729-a7a0-de60b84eb5d1"
				]
			},
			"date": "1992",
			"country": "AU",
			"release-events": [
				{
					"date": "1992",
					"area": {
						"id": "106e0bec-b638-3b37-b731-f53d507dc00e",
						"name": "Australia",
						"sort-name": "Australia",
						"iso-3166-1-codes": [
							"AU"
						]
					}
				}
			],
			"track-count": 16,
			"media": [
				{
					"position": 1,
					"format": "CD",
					"track": [
						{
							"id": "af88b0d3-e6ca-47aa-bf33-f13e542e0c85",
							"number": "9",
							"title": "Dancin' on the Ceiling",
							"length": 262600
						}
					],
					"track-count": 16,
					"track-offset": 8
				}
			]
		},
		{}
	]
}

As you can see there is no “date” included with the release I want, yet every other release in the data set has one. However if you request the release on it’s own:

https://musicbrainz.org/ws/2/release/3cb2f7af-1aa8-40fd-98a6-c09ea07256ba?fmt=json

You get:

{
	"country": null,
	"cover-art-archive": {
		"count": 1,
		"front": false,
		"back": false,
		"darkened": false,
		"artwork": true
	},
	"text-representation": {
		"script": null,
		"language": null
	},
	"status": null,
	"release-events": [
		{
			"date": "1986",
			"area": null
		}
	],
	"barcode": null,
	"status-id": null,
	"id": "3cb2f7af-1aa8-40fd-98a6-c09ea07256ba",
	"quality": "normal",
	"asin": null,
	"disambiguation": "",
	"title": "Dancing on the Ceiling",
	"packaging": "Cardboard/Paper Sleeve",
	"packaging-id": "f7101ce3-0384-39ce-9fde-fbbd0044d35f",
	"date": "1986"
}

where I can pull the date from the “release-events” that aren’t included in the recordings call. And the release-group:

https://musicbrainz.org/ws/2/release-group/3d79a50c-c480-4dff-8625-ce7164946e8b?fmt=json

{
	"title": "Dancing on the Ceiling",
	"secondary-type-ids": [],
	"primary-type-id": "d6038452-8ee0-3f68-affc-2de9a1ede0b9",
	"first-release-date": "1986",
	"primary-type": "Single",
	"disambiguation": "",
	"secondary-types": [],
	"id": "3d79a50c-c480-4dff-8625-ce7164946e8b"
}

I’m trying to minimize my API calls. If I can assume the date that’s great though I will probably run some more tests :stuck_out_tongue: otherwise I’m looking for a way to return the date that is included with the release and release-group lookups in the initial recordings call.

That rather looks like a bug, if the release has dates they should be included here. I’d suggest to open a ticket about that.