-
-
Notifications
You must be signed in to change notification settings - Fork 1.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Better handling of albums with multiple CDs #1671
Comments
Thanks for providing examples and describing this in detail. Here's an example of what musicbrainz returns when we're looking up this album. So for every release group there's an array under the key "media" (pasted below). Each element of this array is a separate disc, so it's possible to keep this information in Nuclear and display it appropriately, we just need to change the internal release schema. Other metadata providers, like Discogs and Spotify also return this information. [
{
"track-offset": 0,
"position": 1,
"title": "Viscera Cleanup Detail: The Soundtrack",
"track-count": 15,
"format-id": "907a28d9-b3b2-3ef6-89a8-7b18d91d4794",
"tracks": [
{
"title": "Bongo in the Congo",
"number": "1",
"recording": {
"title": "Bongo in the Congo",
"id": "272d4382-3245-4973-bf28-b15733a3bb1b",
"genres": [],
"video": false,
"length": 137000,
"disambiguation": "",
"first-release-date": "2015-07-17"
},
"id": "68b219c3-bbbe-485d-875e-83ff24cb9415",
"length": 137000,
"position": 1
},
{
"position": 2,
"length": 139000,
"id": "03d05dff-9759-467c-a32d-376c2ce3a43d",
"recording": {
"disambiguation": "",
"genres": [],
"video": false,
"length": 139000,
"first-release-date": "2015-07-17",
"id": "2779a924-d901-430d-b353-bf951a0c99ff",
"title": "Squeaky Clean"
},
"title": "Squeaky Clean",
"number": "2"
},
{
"length": 125000,
"position": 3,
"title": "Goo",
"number": "3",
"id": "ded0055f-dba1-4498-a5a1-f07224e790e7",
"recording": {
"first-release-date": "2015-07-17",
"length": 125000,
"genres": [],
"video": false,
"disambiguation": "",
"title": "Goo",
"id": "c4fecb5e-e133-4de2-81af-0acd85eb94ca"
}
},
{
"position": 4,
"length": 124000,
"recording": {
"disambiguation": "",
"video": false,
"genres": [],
"length": 124000,
"first-release-date": "2015-07-17",
"id": "daf619b7-cd81-4882-bba6-b1906571ca9d",
"title": "Monkeyfire"
},
"id": "462d8c3c-431a-4fc0-bcbb-6bbf13b91ecf",
"number": "4",
"title": "Monkeyfire"
},
{
"recording": {
"id": "dcdbc181-3483-4391-9a4c-6475c6a1b587",
"title": "Shrieker",
"disambiguation": "",
"genres": [],
"video": false,
"length": 127000,
"first-release-date": "2015-07-17"
},
"id": "34437ee6-dcca-4280-a6cc-6c9c21b99a00",
"title": "Shrieker",
"number": "5",
"position": 5,
"length": 127000
},
{
"length": 137000,
"position": 6,
"number": "6",
"title": "Spaced Out",
"id": "7fbb0798-b9c6-4ab9-9207-8dc27b90eb03",
"recording": {
"title": "Spaced Out",
"id": "0b496a40-80aa-4181-8650-4b39e6e3be4e",
"length": 137000,
"genres": [],
"video": false,
"disambiguation": "",
"first-release-date": "2015-07-17"
}
},
{
"recording": {
"title": "Polka 2180",
"id": "8520d0e5-d8fb-473e-98df-728d0770f02b",
"first-release-date": "2015-07-17",
"length": 141000,
"genres": [],
"video": false,
"disambiguation": ""
},
"id": "22071ee7-97a6-485c-a59e-c0fc4feb00e5",
"number": "7",
"title": "Polka 2180",
"position": 7,
"length": 141000
},
{
"length": 130000,
"position": 8,
"title": "The Ballad of Rick Rodney; Space-Pirate",
"number": "8",
"recording": {
"title": "The Ballad of Rick Rodney; Space-Pirate",
"id": "00ee4fa7-f90f-4c21-bad3-b749b386e1b0",
"first-release-date": "2015-07-17",
"genres": [],
"video": false,
"length": 130000,
"disambiguation": ""
},
"id": "b557a3e8-3e8a-4f06-9b4a-e853929da359"
},
{
"id": "65c248b5-6924-4cd6-9acf-443bd4cfa986",
"recording": {
"disambiguation": "",
"genres": [],
"video": false,
"length": 137000,
"first-release-date": "2015-07-17",
"id": "82075e0b-2fb4-4f20-a401-ac12b843387a",
"title": "Chemical Roach"
},
"title": "Chemical Roach",
"number": "9",
"position": 9,
"length": 137000
},
{
"title": "Karoshi Ghost",
"number": "10",
"id": "fcd1c83d-166b-44eb-add6-658df54a3190",
"recording": {
"length": 133000,
"genres": [],
"video": false,
"disambiguation": "",
"first-release-date": "2015-07-17",
"title": "Karoshi Ghost",
"id": "46031554-3cc5-4644-8f15-0051ba1d1823"
},
"length": 133000,
"position": 10
},
{
"title": "Cleanup Menu",
"number": "11",
"recording": {
"disambiguation": "",
"length": 189000,
"genres": [],
"video": false,
"first-release-date": "2015-07-17",
"id": "c0b685d5-ba94-42ba-9cc1-b5609e75592e",
"title": "Cleanup Menu"
},
"id": "fd012f50-dd50-4695-b8d8-9963183b9ff1",
"length": 189000,
"position": 11
},
{
"length": 161000,
"position": 12,
"title": "Darkwash",
"number": "12",
"recording": {
"disambiguation": "",
"genres": [],
"video": false,
"length": 161000,
"first-release-date": "2015-07-17",
"id": "f73ed66c-e25b-42b7-aab1-f54e79866873",
"title": "Darkwash"
},
"id": "5b008897-122c-410d-9162-5fd62d4e60ab"
},
{
"length": 136000,
"position": 13,
"number": "13",
"title": "Booom!",
"id": "55ab2099-e466-4aca-b780-02997305c75c",
"recording": {
"title": "Booom!",
"id": "3ea9a270-530c-411a-a91d-7622647ca32b",
"first-release-date": "2015-07-17",
"video": false,
"genres": [],
"length": 136000,
"disambiguation": ""
}
},
{
"position": 14,
"length": 140000,
"id": "98bdf531-77d4-4c19-b482-ac2147e32ded",
"recording": {
"id": "278cb277-cb9f-40a4-914d-89f5f6ac35fa",
"title": "PowahPlant",
"disambiguation": "",
"video": false,
"genres": [],
"length": 140000,
"first-release-date": "2015-07-17"
},
"title": "PowahPlant",
"number": "14"
},
{
"position": 15,
"length": 139000,
"recording": {
"video": false,
"genres": [],
"length": 139000,
"disambiguation": "",
"first-release-date": "2015-07-17",
"title": "Neutronium Sandwich",
"id": "4fbe45d7-025f-40ad-a7ae-4cf6750c48c7"
},
"id": "f6c294a3-4370-45fd-8ac6-82d28406aa87",
"number": "15",
"title": "Neutronium Sandwich"
}
],
"format": "Digital Media"
},
{
"track-count": 5,
"format-id": "907a28d9-b3b2-3ef6-89a8-7b18d91d4794",
"tracks": [
{
"position": 1,
"length": 79000,
"recording": {
"first-release-date": "2015-07-17",
"disambiguation": "",
"length": 79000,
"genres": [],
"video": false,
"id": "361859c1-85a8-4933-97ec-6782979d3bda",
"title": "Workshop Cleanup"
},
"id": "8ec41900-68a1-43ed-92eb-1c99d726a45b",
"title": "Workshop Cleanup",
"number": "1"
},
{
"length": 98000,
"position": 2,
"number": "2",
"title": "March of the Elves",
"id": "0f3e75c5-5c48-4b78-a323-fde562e7e872",
"recording": {
"title": "March of the Elves",
"id": "79191f8e-f815-4181-bde2-a09416d2fef7",
"first-release-date": "2015-07-17",
"length": 98000,
"genres": [],
"video": false,
"disambiguation": ""
}
},
{
"length": 102000,
"position": 3,
"title": "Whiskey and a Shotgun",
"number": "3",
"recording": {
"id": "e714c6d1-bdf4-4e2e-902f-04776534394e",
"title": "Whiskey and a Shotgun",
"disambiguation": "",
"length": 102000,
"genres": [],
"video": false,
"first-release-date": "2015-07-17"
},
"id": "ce5902e0-6f6a-4ef8-990e-1f4373a5bd17"
},
{
"position": 4,
"length": 119000,
"id": "b78f63ed-bb0b-436e-b8cb-2852c1b8c959",
"recording": {
"title": "Red Snow",
"id": "6fff9c27-be19-4196-b1db-3274e0a667ba",
"length": 119000,
"genres": [],
"video": false,
"disambiguation": "",
"first-release-date": "2015-07-17"
},
"number": "4",
"title": "Red Snow"
},
{
"number": "5",
"title": "Ghost of Christmas SLASHED!",
"recording": {
"title": "Ghost of Christmas SLASHED!",
"id": "49667117-e30d-448d-8a6f-e0ecacc0e800",
"first-release-date": "2015-07-17",
"length": 118000,
"video": false,
"genres": [],
"disambiguation": ""
},
"id": "b52683c6-452f-43cc-a4ec-2307f824f6c8",
"length": 118000,
"position": 5
}
],
"format": "Digital Media",
"track-offset": 0,
"position": 2,
"title": "Viscera Cleanup Detail: Santa’s Rampage"
},
{
"format-id": "907a28d9-b3b2-3ef6-89a8-7b18d91d4794",
"track-count": 6,
"tracks": [
{
"number": "1",
"title": "Grave of Maggots",
"recording": {
"video": false,
"genres": [],
"length": 156000,
"disambiguation": "",
"first-release-date": "2015-07-17",
"title": "Grave of Maggots",
"id": "09e4aa6e-4471-4e0c-a060-3961006d3f60"
},
"id": "b101f77a-fb6b-428d-9f76-5a2636507048",
"length": 156000,
"position": 1
},
{
"title": "Zombie Horde",
"number": "2",
"id": "1ba0dfcf-8d7f-41b9-aacd-c484388d5308",
"recording": {
"first-release-date": "2015-07-17",
"disambiguation": "",
"video": false,
"genres": [],
"length": 147000,
"id": "aa53e395-f89c-40d0-a215-f696e82c380a",
"title": "Zombie Horde"
},
"length": 147000,
"position": 2
},
{
"position": 3,
"length": 136000,
"id": "b95a88f5-2fa7-472a-83ff-0586dc4c0b5c",
"recording": {
"first-release-date": "2015-07-17",
"video": false,
"genres": [],
"length": 136000,
"disambiguation": "",
"title": "Bonesong",
"id": "7aaee690-34d5-4fe4-8388-7da550054cad"
},
"number": "3",
"title": "Bonesong"
},
{
"position": 4,
"length": 127000,
"recording": {
"title": "The Final Destination",
"id": "b8caab4f-3503-4327-ba4b-c902b47467ef",
"video": false,
"genres": [],
"length": 127000,
"disambiguation": "",
"first-release-date": "2015-07-17"
},
"id": "72b1ee81-7dd6-4bd1-9860-618f57010593",
"title": "The Final Destination",
"number": "4"
},
{
"length": 141000,
"position": 5,
"title": "It Came From the Pumpkin Patch",
"number": "5",
"recording": {
"disambiguation": "",
"length": 141000,
"video": false,
"genres": [],
"first-release-date": "2015-07-17",
"id": "85458eb5-df7c-4804-9edf-d8aa32eab43d",
"title": "It Came From the Pumpkin Patch"
},
"id": "74254745-10ce-45b3-bd7a-35e428ec5015"
},
{
"length": 161000,
"position": 6,
"title": "Hell’s Bell’s",
"number": "6",
"recording": {
"title": "Hell’s Bell’s",
"id": "e64347c2-a87b-41b8-89e8-2fde4f75bbf4",
"genres": [],
"video": false,
"length": 161000,
"disambiguation": "",
"first-release-date": "2015-07-17"
},
"id": "aa7dc4f1-6213-42ba-af7b-5d7ffc3bd0d5"
}
],
"format": "Digital Media",
"position": 3,
"track-offset": 0,
"title": "Viscera Cleanup Detail Presents: House of Horror"
},
{
"title": "Viscera Cleanup Detail Presents: The Vulcan Affair",
"track-offset": 0,
"position": 4,
"format": "Digital Media",
"format-id": "907a28d9-b3b2-3ef6-89a8-7b18d91d4794",
"track-count": 8,
"tracks": [
{
"length": 162000,
"position": 1,
"number": "1",
"title": "The D# is for Danger",
"id": "2a3821c3-6f93-4cfd-9a52-e5fdc7f53d32",
"recording": {
"id": "dbe4485f-e3e4-4c21-b224-dd89df176f8d",
"title": "The D# is for Danger",
"disambiguation": "",
"length": 162000,
"genres": [],
"video": false,
"first-release-date": "2015-07-17"
}
},
{
"position": 2,
"length": 153000,
"id": "2e0cc9d2-c3e9-473a-8c5c-63227e6d2482",
"recording": {
"first-release-date": "2015-07-17",
"length": 153000,
"genres": [],
"video": false,
"disambiguation": "",
"title": "Oil Drums",
"id": "7de33d72-9139-4109-9fc4-7192866ed9dd"
},
"title": "Oil Drums",
"number": "2"
},
{
"length": 166000,
"position": 3,
"title": "Water Re-Tension",
"number": "3",
"id": "216d600d-8d70-4a38-a263-f6c657505745",
"recording": {
"title": "Water Re-Tension",
"id": "da735097-a2f9-488b-aa6f-f90b361299e7",
"first-release-date": "2015-07-17",
"length": 166000,
"video": false,
"genres": [],
"disambiguation": ""
}
},
{
"position": 4,
"length": 148000,
"id": "d44972eb-e896-46bc-8778-a09e2ac4a95f",
"recording": {
"title": "Running Man",
"id": "77b6fc1f-186a-4867-8116-abf5c1fd26ac",
"length": 148000,
"video": false,
"genres": [],
"disambiguation": "",
"first-release-date": "2015-07-17"
},
"number": "4",
"title": "Running Man"
},
{
"number": "5",
"title": "Shaken. Stirred. Blended. Consumed.",
"recording": {
"id": "65157209-4016-4072-9913-169654117251",
"title": "Shaken. Stirred. Blended. Consumed.",
"disambiguation": "",
"genres": [],
"video": false,
"length": 138000,
"first-release-date": "2015-07-17"
},
"id": "6d6878c6-6536-4054-b71c-b3277a6834a3",
"length": 138000,
"position": 5
},
{
"length": 149000,
"position": 6,
"number": "6",
"title": "Spy in the Ointment",
"id": "7738ad0b-825a-4bbf-9be6-70929e40e487",
"recording": {
"title": "Spy in the Ointment",
"id": "ba11a56a-6056-49f6-85c6-7affb72d3b71",
"first-release-date": "2015-07-17",
"length": 149000,
"genres": [],
"video": false,
"disambiguation": ""
}
},
{
"position": 7,
"length": 147000,
"id": "5aafabf0-16c8-4fcd-b1d3-9e3e1b893d6c",
"recording": {
"first-release-date": "2015-07-17",
"disambiguation": "",
"length": 147000,
"video": false,
"genres": [],
"id": "5266a1d3-e7b0-4605-a803-785d38539c99",
"title": "String Theory"
},
"title": "String Theory",
"number": "7"
},
{
"id": "87baed9d-181f-4c0f-9cce-6cbd25340133",
"recording": {
"id": "7f7313a9-eed7-4e90-b0e2-ab2d03e04259",
"title": "Master of the Rodents",
"disambiguation": "",
"length": 160000,
"genres": [],
"video": false,
"first-release-date": "2015-07-17"
},
"title": "Master of the Rodents",
"number": "8",
"position": 8,
"length": 160000
}
]
}
] |
Looking at the structure, it looks like an "album" is just "a collection of playlists". Maybe there's some possibility to recycle existing |
May I work on this? |
What's your idea for this? |
@rishiral and I see two methods:
The disc number is provided directly in the Spotify API response. For MusicBrainz and other APIs, however, we may need to implement a workaround, as they don’t provide it directly. |
When an album has multiple CDs the current display of them is a bit visually unpleasing.
All tracks are displayed in a list where multiple tracks have the same number:
Screenshot
Possible improvements I can imagine:
1#01
Lollypop example using multiple lists
The text was updated successfully, but these errors were encountered: