[API Discussion] Existing single-valued fields that should be multi-valued #8
Replies: 9 comments 59 replies
-
I had not yet the time to port the rest of the proposals but there's a lot to see about extending the metadata with new fields and everything. Since we should differentiate album artists from song artists it should be all talked at the same time as it's connected to the multi values. Same for artist roles like composer and everything. |
Beta Was this translation helpful? Give feedback.
-
How about only supporting this in an extension? It would be a little confusing for client authors, but this is only something that needs to be understood once, by the programmer of the client. |
Beta Was this translation helpful? Give feedback.
-
The way I'll be doing this in Ampache is to add the plural element for each field. Keeping the original single values as the main/primary. e.g. a song/album has a primary artist and then additional artists attached to the object so the response returns
This will let me keep things back compatible and can be ignored by clients. |
Beta Was this translation helpful? Give feedback.
-
since beets.io has nearly added support for this stuff it has peeked my interest @dweymouth @lachlan-00 you both mentioned how to tackle backwards compatibility and i like the idea, just thought i would make sure we're on the same page: problemconsider this musicbrainz release group, the tags of a track on this album may look like
with the current state of subsonic clients and servers we just have a single album artist named getArtists
getAlbums2
here have no connection to ar-2 or ar-3, which is not so nice for the user 👎 proposalconsidering the same release, we only store those individual artists getArtists
getAlbums2
so just an xml/json array like thing as already suggested now the user sees a much cleaner view of their album artists, and from a single album page, can click on either of the 2 albums artists to check them out 👍 does this line up with what was suggested already? and how about for clients that don't support the extension? from their perspective the album artist is just "Marc Hurtado" and there's no mention of Alan Vega anywhere. maybe that's fine if was the Marc Hurtado was the primary artist, and he was the first in the list in the audio metadata. but maybe that's not always the case. is there a better way to do backwards compatibility? |
Beta Was this translation helpful? Give feedback.
-
taking the subsonic "album" as an example it has the fields "artist", and "artistId". extending this, the natual thing seems to add 2 extra. giving us a total of "artist", "artistId", "artists", "artistIds" for example
though it feels a bit clunky, we assume that artistIds and artists are the same length, and sorted the same way. but it leaves room for mistakes there's also the option of a single array with a more complex object like
though i don't know how that would translate to XML, or if we have anything like that elsewhere in the spec thoughts on these options? |
Beta Was this translation helpful? Give feedback.
-
Naïve question: in some of your examples in this whole discussion, we sometimes can read "albumartists", and sometimes "artists". |
Beta Was this translation helpful? Give feedback.
-
Not sure if this has been mentioned, but many releases use specific order and words for multiple artists. Examples: Any ideas how this can be visually preserved by clients? I think the spec should say something about order at least (such as the server should return them as they appears) |
Beta Was this translation helpful? Give feedback.
-
following the decision made on getAlbum's for example: JSON: XML: |
Beta Was this translation helpful? Give feedback.
-
See proposal #52 |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Type of change
API extension
Proposal description
I think it makes sense to cover all of these as a single discussion, since the way we'd handle it should be the same for all the fields, and different from handling new metadata fields like artist roles, etc.
The following are existing Subsonic API metadata fields that should be multi-valued:
Backward compatibility impact
We need to discuss if there's a way to do this without backward compatibility impact. A potential way could be to just add Artists and Genres as new fields to the album and song payloads, but this is a little awkward as the Artist and Genre fields would still exist and only have one of the potentially multiple entries from the Artists and Genres.
Backward compatibility
API details
Context above. We need to discuss what this would actually look like, API-wise.
Security impacts
No response
Potential issues
No response
Alternative solutions
No response
Beta Was this translation helpful? Give feedback.
All reactions