-
-
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
Support using MusicBrainz IDs instead of other metadata #1363
base: master
Are you sure you want to change the base?
Conversation
I think it's a good idea in principle, just some remarks:
|
In this case, I'm of the mind to tell the user to strip the MusicBrainz tags from those files, retaining the current behaviour. By moving them into a "Loose Tracks" album, you're effectively creating a "new" album. If this "new" album isn't on MusicBrainz, it shouldn't have MusicBrainz tags. Also, isn't this what playlists are for? Another option would be to add a "navidrome_mbignore" tag, which if set would tell Navidrome to ignore any MusicBrainz tags it finds when scanning.
Indeed, I never considered this may need to be done with artists until after I'd pushed the commit. |
Pushed new version that should handle track/album/artist/albumartist IDs. |
One issue will be: what does Navidrome do with artists that have the same mbid but different tags in the Artist field, such as "DJ Tiesto" and "Tiesto"? It's not so easy, you might get some strange behaviour, consider this case:
Current behaviour: album 1 and 3 grouped under DJ Tiesto, album 2 and 4 grouped under Tiesto |
Regardless of my changes, albums 3 & 4 should be under different artists (or the artists fixed). |
Actually, thinking about it some more... What do we want the behaviour to be? All I intended was to make it not merge different releases of the same album. If the tags in the files are wrong (thus causing Navidrome to split the artists/albums), then they should be fixed. I'm fine with either option (it doesn't affect me as I run everything through Picard and beets), @deluan what do you think? |
The more I think of it, it's indeed a drastic change. Navidrome currently does all organization based on official tag fields: Moving to organization based on custom Musicbrainz ID tags is good if you consistently use those, but that puts the onus on users to have not only an immaculately tagged collection with 'regular' tags, but also consistently have the mbz tags correct, because you'll create splits between stuff with and without mbz id's. And this decreases transparency to the user why this happens, and we'll end up like Plex where the scanner feels like a black box where "anything can happen". For example:
|
As long as the scanning behaviour is explicitly-and-well-documented, I don't really see the problem.
How about this? Add a When set, if an album/artist has a mbid, Navidrome will use it (and only it). This provides a solution to #489, assuming everything's tagged correctly. If the mbid is NOT set, it'll fall back and create a new/duplicate artist/album. It is up to the user to tag the files correctly and trigger a rescan. Forgive me for being pushy on this, but I need a fix for the #489 - it's affecting large part of my library. |
Hey, sorry being late for the party :) After reading the thread, these are my two cents (mostly agreeing with latest @vs49688 comment):
On top of that, a migration plan is a MUST, or else users that enable this will break their playlists, stars, playcounts, etc... The migration should go over all tables with an |
How'd you prefer the migrations to be done?
|
Whichever is faster. I'd assume it is the later, but it is worth to test it out if you can. |
5298640
to
867aaf4
Compare
It's mostly finished, all that needs to be done now is some cleanups, and to trigger a full rescan. Also, where's the best place for this? I've just put it in the top-level |
Ping on this? Specific issues I'd like feedback on:
The current behaviour:
|
Sorry for the delay. Will take a look tonight |
Download the artifacts for this pull request: |
Still using the builds from this PR. If I'm not mistaken, if there's an artist with the same ID but multiple aliases, the name of the merged entity is set to whichever alias is scanned first (?) |
Good to know, I thought I was the only one.
The approach this PR takes has been rejected (apparently not everyone is as Musicbrainz-only as I am 🤷♂️), and as such is in maintenance mode. I'll keep updating it as necessary, but I'm only keeping it around until the equivalent functionality is implemented in Navidrome proper and hits a release. Then I'll probably write a migration tool, and this PR can finally be laid to rest. |
a5420f6
to
865841f
Compare
Download the artifacts for this pull request: |
Download the artifacts for this pull request: |
Download the artifacts for this pull request: |
Is there a chance of that happening sometime soon? Is the team planning on merging any of this code or implementing their own version? I see a lot of commits on your part to keep the PR in sync with the main releases but don't see any activity from the Navidrome team here for the last year or two. I know its foss and they have their hands full - more curious than anything as I think this would be an awesome feature since I have many albums with multiple versions. |
Download the artifacts for this pull request: |
Yes, this has been discused in #1976 (comment) and will be implemented in #2709 For now I want to thank @vs49688 for keeping this up-to-date, as it obviously has value for a lot of other users. |
Ah somehow I missed that when reading over the comments. I apologize for posting such a silly question (the answer was right in front of me) and thank you for you patience 😃.
Yes, thank you so much, this is invaluable! |
For those relying on this, sorry for the delay, I've not had much time recently - I'll try to rebase this by the weekend |
Not changing Delete() as to avoid changing rest.Persistable.
Not MD5'ing them because they're UUIDs and can be eyeball'd easily in the database.
Converts the library to use MusicBrainz IDs for albums, artists, albumartists, and tracks. All playlists, stars, etc. are kept. This is an irreversible transformation; the user is given a warning and may cancel within 10 seconds by pressing ^C. The mediafiles table is used as the sole source-of-truth to build an entirely new hierarchy, based off the MusicBrainz IDs. Existing entity metadata is applied to the new entities, except in the case where one entity may need to be split (e.g. different releases of the same album). These split entities are left blank. References are then updated for both play queues and playlists. The existing entities are then deleted, and a full-rescan is triggered to fill in any missing information.
Download the artifacts for this pull request: |
Converts the library to use MusicBrainz IDs for albums, artists,
albumartists, and tracks. All playlists, stars, etc. are kept.
This is an irreversible transformation; the user is given a warning
and may cancel within 10 seconds by pressing ^C.
The mediafiles table is used as the sole source-of-truth to build
an entirely new hierarchy, based off the MusicBrainz IDs.
Existing entity metadata is applied to the new entities, except in the
case where one entity may need to be split (e.g. different releases of
the same album). These split entities are left blank.
References are then updated for both play queues and playlists.
The existing entities are then deleted, and a full-rescan is triggered
to fill in any missing information.
Closes #489.