diff --git a/tidal_dl_ng/download.py b/tidal_dl_ng/download.py index 7a8b51a..a48a436 100644 --- a/tidal_dl_ng/download.py +++ b/tidal_dl_ng/download.py @@ -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, diff --git a/tidal_dl_ng/helper/tidal.py b/tidal_dl_ng/helper/tidal.py index c8b93bb..2a61bd6 100644 --- a/tidal_dl_ng/helper/tidal.py +++ b/tidal_dl_ng/helper/tidal.py @@ -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 diff --git a/tidal_dl_ng/metadata.py b/tidal_dl_ng/metadata.py index ce9bfa1..4506742 100644 --- a/tidal_dl_ng/metadata.py +++ b/tidal_dl_ng/metadata.py @@ -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]]