🛠 Album Artist ID3 tag only shows the main album artists. Fixes #51

This commit is contained in:
Robert Honz
2024-03-19 07:23:35 +01:00
parent ce639659b4
commit bc88b6fcac
3 changed files with 25 additions and 7 deletions
+10 -3
View File
@@ -30,7 +30,14 @@ from tidal_dl_ng.constants import (
from tidal_dl_ng.helper.decryption import decrypt_file, decrypt_security_token
from tidal_dl_ng.helper.exceptions import MediaMissing, UnknownManifestFormat
from tidal_dl_ng.helper.path import check_file_exists, format_path_media, path_file_sanitize
from tidal_dl_ng.helper.tidal import instantiate_media, items_results_all, name_builder_item, name_builder_title
from tidal_dl_ng.helper.tidal import (
instantiate_media,
items_results_all,
name_builder_album_artist,
name_builder_artist,
name_builder_item,
name_builder_title,
)
from tidal_dl_ng.metadata import Metadata
from tidal_dl_ng.model.gui_data import ProgressBars
from tidal_dl_ng.model.tidal import StreamManifest
@@ -306,12 +313,12 @@ class Download:
lyrics=lyrics,
copy_right=copy_right,
title=name_builder_title(track),
artists=[artist.name for artist in track.artists],
artists=name_builder_artist(track),
album=track.album.name if track.album else "",
tracknumber=track.track_num,
date=release_date,
isrc=isrc,
albumartist=name_builder_item(track),
albumartist=name_builder_album_artist(track),
totaltrack=track.album.num_tracks if track.album and track.album.num_tracks else 1,
totaldisc=track.album.num_volumes if track.album and track.album.num_volumes else 1,
discnumber=track.volume_num if track.volume_num else 1,
+11
View File
@@ -1,4 +1,5 @@
from tidalapi import Album, Mix, Playlist, Session, Track, UserPlaylist, Video
from tidalapi.artist import Role
from tidalapi.session import SearchTypes
from tidal_dl_ng.constants import MediaType
@@ -9,6 +10,16 @@ def name_builder_artist(media: Track | Video | Album) -> str:
return ", ".join(artist.name for artist in media.artists)
def name_builder_album_artist(media: Track | Album) -> str:
artists_tmp: [str] = []
for artist in media.album.artists:
if Role.main in artist.roles:
artists_tmp.append(artist.name)
return ", ".join(artists_tmp)
def name_builder_title(media: Track | Video) -> str:
result: str = media.full_name if hasattr(media, "full_name") else media.name
+4 -4
View File
@@ -30,7 +30,7 @@ class Metadata:
path_file: str,
album: str = "",
title: str = "",
artists: list[str] | None = None,
artists: str = "",
copy_right: str = "",
tracknumber: int = 0,
discnumber: int = 0,
@@ -105,7 +105,7 @@ class Metadata:
self.m.tags["title"] = self.title
self.m.tags["album"] = self.album
self.m.tags["albumartist"] = self.albumartist
self.m.tags["artist"] = ", ".join(self.artists) if self.artists else ""
self.m.tags["artist"] = self.artists
self.m.tags["copyright"] = self.copy_right
self.m.tags["tracknumber"] = str(self.tracknumber)
self.m.tags["tracktotal"] = str(self.totaltrack)
@@ -120,7 +120,7 @@ class Metadata:
self.m.tags.add(TIT2(encoding=3, text=self.title))
self.m.tags.add(TALB(encoding=3, text=self.album))
self.m.tags.add(TOPE(encoding=3, text=self.albumartist))
self.m.tags.add(TPE1(encoding=3, text=", ".join(self.artists) if self.artists else ""))
self.m.tags.add(TPE1(encoding=3, text=self.artists))
self.m.tags.add(TCOP(encoding=3, text=self.copy_right))
self.m.tags.add(TRCK(encoding=3, text=str(self.tracknumber)))
self.m.tags.add(TRCK(encoding=3, text=self.discnumber))
@@ -133,7 +133,7 @@ class Metadata:
self.m.tags["\xa9nam"] = self.title
self.m.tags["\xa9alb"] = self.album
self.m.tags["aART"] = self.albumartist
self.m.tags["\xa9ART"] = ", ".join(self.artists) if self.artists else ""
self.m.tags["\xa9ART"] = self.artists
self.m.tags["cprt"] = self.copy_right
self.m.tags["trkn"] = [[self.tracknumber, self.totaltrack]]
self.m.tags["disk"] = [[self.discnumber, self.totaldisc]]