[music] Resolve artist identity before splitting (fd86a11a)

This commit is contained in:
2026-08-08 20:35:45 -04:00
parent 5f88d97c69
commit 5e3b0055dc
7 changed files with 453 additions and 54 deletions

View File

@ -612,7 +612,7 @@ favorited media objects.
*** Description
As an example https://comicbookroundup.com/comic-books/reviews/humanoids-publishing/the-history-of-science-fiction
** TODO [#A] Add an exception list of artists as a constant that are exempted from splitting :music:artists:metadata:
** DONE [#A] Add an exception list of artists as a constant that are exempted from splitting :music:artists:metadata:
:PROPERTIES:
:ID: fd86a11a-73ec-470d-b5e3-2d90ba9137c8
:END:
@ -623,6 +623,22 @@ Certain artists like "Simon & Garfunkel" are actually one artist. While we don't
tracks into featured artists, we should have a "LITERAL_ARTIST_TITLES" constant that can have exceptions like
this put into it and then we stop trying to pull the artist apart when we run into it.
*** Notes
Instead of a hardcoded exception list, we resolve artist identity before
splitting on " & ":
- `resolve_artist_names()` in music/utils.py keeps an artist string literal
when a MusicBrainz artist id is provided (webhooks), when the full string
already exists as an Artist, or when it matches a single MusicBrainz
artist (e.g. "Simon & Garfunkel" is a Group). Splitting on " & " is now a
last resort for genuine collaborations.
- `Track.find_or_create()` and `Track.fix_metadata()` use the resolved name
instead of always splitting.
- `reconcile_split_artists` management command repairs tracks already split
by the old logic, using the raw artist data stored in scrobble logs, and
deletes orphaned fragment artists.
** TODO [#A] Update how board game scrobbles work :boardgames:
*** Description