Use per-track artist in tag writer for compilations and DJ mixes
Tag preview and writer now use track_artist (per-track artist) for the Artist tag when available, falling back to artist_name (album artist) when NULL. Album Artist tag always uses artist_name. Fixes #277 — DJ mix albums no longer overwrite per-track artists (Technique, Gouryella) with the album artist (Tiësto).
This commit is contained in:
parent
f5ac7c9261
commit
7fb4cf6b0e
2 changed files with 7 additions and 2 deletions
|
|
@ -143,6 +143,10 @@ def build_tag_diff(file_tags: Dict[str, Any], db_data: Dict[str, Any]) -> List[D
|
|||
file_val = file_tags.get(file_key)
|
||||
db_val = db_data.get(db_key)
|
||||
|
||||
# Special: use per-track artist for Artist field when available (DJ mixes, compilations)
|
||||
if file_key == 'artist' and db_data.get('track_artist'):
|
||||
db_val = db_data['track_artist']
|
||||
|
||||
# Normalize for comparison
|
||||
file_str = _normalize_for_compare(file_val)
|
||||
db_str = _normalize_for_compare(db_val)
|
||||
|
|
@ -230,9 +234,9 @@ def write_tags_to_file(file_path: str, db_data: Dict[str, Any],
|
|||
|
||||
# Build metadata dict from DB data
|
||||
title = db_data.get('title')
|
||||
artist = db_data.get('artist_name')
|
||||
artist = db_data.get('track_artist') or db_data.get('artist_name') # Per-track artist for compilations/DJ mixes
|
||||
album = db_data.get('album_title')
|
||||
album_artist = db_data.get('artist_name') # Use artist name as album artist
|
||||
album_artist = db_data.get('artist_name') # Album artist stays as the album-level artist
|
||||
year = db_data.get('year')
|
||||
genres = db_data.get('genres')
|
||||
track_num = db_data.get('track_number')
|
||||
|
|
|
|||
|
|
@ -11944,6 +11944,7 @@ def get_track_tag_preview(track_id):
|
|||
db_data = {
|
||||
'title': track_data.get('title'),
|
||||
'artist_name': track_data.get('artist_name'),
|
||||
'track_artist': track_data.get('track_artist'),
|
||||
'album_title': track_data.get('album_title'),
|
||||
'year': track_data.get('year'),
|
||||
'genres': album_genres,
|
||||
|
|
|
|||
Loading…
Reference in a new issue