[API Request] Discussion and clarification for how track-only artists should be handled in legacy endpoints #61
Replies: 3 comments 32 replies
-
It does now that's the whole point of the issue .... Since it returns "artists" [] to songs they must have ids if they have ids they exist, if they exist they must be returned in getArtist / Search and be accessible via getArtistInfo. If he only want to returns albumArtists then he only return that field https://opensubsonic.netlify.app/docs/responses/child/ But now he is in violation of OpenSubsonic. I really don't understand why and how you both conclude that this is a breaking change and that hiding data that would break other servers and clients is not breaking. There's not only track artists, there's Composers, musicians, and all the possible roles. So again IMO, not returning all artists in the endpoints for artists is the breaking change. If an artist exist and have an ID it must be accessible via the endpoints. I don't even understand why there's a discussion here. If an artist does not have an ID and is only used as display value then it's something else, but unlike your first statement this is no more the case now. And this is what happens in Navidrome too, any artist that is returned with an ArtistID is accessible via the artist endpoints and the search3 and get the getArtistInfo as it should. |
Beta Was this translation helpful? Give feedback.
-
Ooohhh.. my apologies, I didn't realize that this was the change that Gonic made. I thought he was including track-only artists in the list but with a name only and no ID - which IMO is fine and good since clients could then treat them as non-navigable and display a plain label instead of a hyperlink. In other words they only exist as a display value in tracklist views. This is how Navidrome does it which of course hasn't implemented OpenSubsonic yet, but a (single-valued) track artist that has no albums will have its name set in the I see why Tolriq is upset @sentriz - I agree now that IF the artist has an ID (ie it exists as a meaningful entity in the DB) then it is something he will want to sync into the offline DB and it should be reteieved by the endpoints including Now for @epoupon's decision - I think it's also not optimal that the discography lists are cluttered with "appearance" albums for artists. If it were up to me, we would say that the album list returned in |
Beta Was this translation helpful? Give feedback.
-
I've encountered the same issue when adding track artist support to Navidrome (see this PR)
The only real difference is bandwidth efficiency - you send over tons of artists that the client immediately discards. |
Beta Was this translation helpful? Give feedback.
-
Type of change
API Clarification
Proposal description
We currently have a divergence between Gonic and LMS on how track-only artists are handled. Gonic does not assign IDs to track-only artists or return them in the
getArtists
response. This is also the behavior of Navidrome and Airsonic-Advanced (which have not implemented OpenSubsonic). This presents the problem that track-only artists are not navigable, but this is how original Subsonic handled it. LMS on the other hand assigns IDs to all artists and includes all the artists's album appearances as part of their discography. This has the problem of not distinguishing an artists's albums (that they are credited as an album artist on) from the albums that they just appear on.This can all be handled with additional APIs or API extensions, but that is a separate discussion. This is just to discuss what the behavior with the existing APIs should be - I'd suggest going with Gonic's approach as it's closest to original Subsonic and is thererfore not a breaking change for existing clients.
Backward compatibility impact
No response
Backward compatibility
API details
Only album artists by default should be included in the
getArtists
response, and only the albums that the artist has an Album Artist credit for should be included in the albums list from thegetArtist
API. We can discuss further extensions to these APIs in other discussions, eg including a new section in thegetArtist
response to list the appearances, and new arguments togetArtists
to include track-only artists or not.Security impacts
No response
Potential issues
No response
Alternative solutions
No response
Beta Was this translation helpful? Give feedback.
All reactions