-
-
Notifications
You must be signed in to change notification settings - Fork 799
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
add Release Type field #369
Comments
I've been thinking about this. I think it is a great addition, my only concern is what to do with albums that do not have this field, or whole libraries from users that don't care about this. Display a filter with empty fields is not a great UX.... Also, this field is multi-valued, usually a comma-separated list, but is basically a free form field. What would be the best way to normalize it? |
"my only concern is what to do with albums that do not have this field, or whole libraries from users that don't care about this" I would say, like it is currently used: every release is deemed an Album. So if you don't use this field, nothing changes. The DB just stores "Album". "Also, this field is multi-valued, usually a comma-separated list" Is it indeed a comma separated list, or a 'proper' multi value tag (i.e., multiple single-value RELEASETYPE Vorbis tags, null-separated id3v2.4 tag)? |
Navidrome doesn't read the tags directly, it uses Example from a FLAC file:
Example from a Ogg/Opus file:
Example from a MP3 file:
|
Also note how MusicBrainz and Discogs diverge when adding things like "Deluxe Edition". One example of each: From Discogs:
From MusicBrainz:
Should we merge the comma-separated list from Also, seems that the docs you pointed out are not strictly followed by MusicBrainz. Below is a compilation album, based on the docs it should have the release type as
|
@certuna Any more thoughts on this? Should we simply import the field and use a configurable field separator to break multi-valued values? |
I think so yes. Things like "Deluxe Edition", "Remastered" or "Limited Edition" are not really very useful (or from the user pov, expected) categories so maybe there needs to be a whitelist of accepted release types (I'm thinking Album, Compilation, Single, EP, Live, etc - basically the RYM/Discogs categories), and ignore the rest, either on import or in query when they're pulled out of the DB. Basically, every choice you make is slightly arbitrary and messy, which is to be expected - as with all these things, if it was easy and straightforward to implement, everyone else (library managers/music players) would have already done it. |
Edition details aren't usually added to that field ( |
I think we should join the terms from both fields, and have a configurable whitelist (default to the one provided by MusicBrainz). As this will be a relation between the album and the release_type tables, we could keep the original, untouched values in the media_file table and store the processed and filtered values in the relation table. Thoughts? |
Yeah, that seems fine to me. |
Regarding the storing of a large number of true/false flags, may I recommend bit fields ? |
Yeah I thought about bit fields too but since DB are more or less 1:1 mapped into the native API, this would mean bringing the bit field also into the API, and that means the Web UI code would have to parse the bit field, which maybe isn't so nice for debugging/readability. @deluan from our discussion on Discord, you still prefer a full M2M implementation with join tables etc for this? |
This issue has been automatically marked as stale because it has not had recent activity. The resources of the Navidrome team are limited, and so we are asking for your help. |
Still valid, probably has to be done after the move to React Admin v4. |
Since OpenSubsonic now supports ReleaseTypes, this could be implemented for OpenSubsonic ahead of the UI redesign, if desired. (I am going to display the release type (normalized) in Supersonic on the album views soon, defaulting to "Album" if none available) |
Every online metadata resource (discogs, RYM, musicbrainz, allmusic) has some form of Release Type field: Album, Single/EP, Live, Compilation, DJ Mix, Audiobook, etc. Sooner or later people are going to ask for this to be implemented (pretty much every forum/reddit for every music server/player has threads on this), so it's probably at least a good idea to prepare for it. Implement it well, and navidrome is ahead of pretty much everyone out there.
So we'd be looking at adding a Release Type field in:
For info: here's how Musicbrainz implements it in their DB: https://musicbrainz.org/doc/Release_Group/Type . MZB Picard writes these tags:
RELEASETYPE
(Vorbis/FLAC) andTXXX:MusicBrainz Album Type
(custom tag in id3v2.4).Update Jan 2023:
I am experimenting with an implementation of this now, I see a few ways to do Release Type:
typeAlbum
= true/false,typeSingle
= true/false,typeSoundtrack
= true/false,typeAudiobook
= true/false. Advantage: allows for multiple types. Disadvantage: 20+ new fields in the DB, and we would need to create a new Type column each time that MusicBrainz adds a new Type too (although, that doesn't seem happen too often)The text was updated successfully, but these errors were encountered: