From 5da1855028b4519fd284fa55ae7b38390cbde62f Mon Sep 17 00:00:00 2001 From: Robert Honz Date: Fri, 17 Oct 2025 12:06:25 +0200 Subject: [PATCH] =?UTF-8?q?feat(metadata):=20=E2=9C=A8=20add=20customizabl?= =?UTF-8?q?e=20metadata=20delimiters=20for=20artists?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Introduced `metadata_delimiter_artist` and `metadata_delimiter_album_artist` settings. * Updated `name_builder_artist` and `name_builder_album_artist` functions to utilize the new delimiters. * This allows users to specify their preferred delimiter for artist names in metadata. --- tidal_dl_ng/download.py | 4 ++-- tidal_dl_ng/helper/tidal.py | 8 ++++---- tidal_dl_ng/model/cfg.py | 4 ++++ 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/tidal_dl_ng/download.py b/tidal_dl_ng/download.py index 8ca70c1..a4e4bfc 100644 --- a/tidal_dl_ng/download.py +++ b/tidal_dl_ng/download.py @@ -1208,12 +1208,12 @@ class Download: lyrics=lyrics, copy_right=copy_right, title=name_builder_title(track), - artists=name_builder_artist(track), + artists=name_builder_artist(track, delimiter=self.settings.data.metadata_delimiter_artist), album=track.album.name if track.album else "", tracknumber=track.track_num, date=release_date, isrc=isrc, - albumartist=name_builder_album_artist(track), + albumartist=name_builder_album_artist(track, delimiter=self.settings.data.metadata_delimiter_album_artist), 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 93999e0..22d8f00 100644 --- a/tidal_dl_ng/helper/tidal.py +++ b/tidal_dl_ng/helper/tidal.py @@ -10,11 +10,11 @@ from tidal_dl_ng.constants import FAVORITES, MediaType from tidal_dl_ng.helper.exceptions import MediaUnknown -def name_builder_artist(media: Track | Video | Album) -> str: - return "; ".join(artist.name for artist in media.artists) +def name_builder_artist(media: Track | Video | Album, delimiter: str = "; ") -> str: + return delimiter.join(artist.name for artist in media.artists) -def name_builder_album_artist(media: Track | Album, first_only: bool = False) -> str: +def name_builder_album_artist(media: Track | Album, first_only: bool = False, delimiter: str = "; ") -> str: artists_tmp: [str] = [] artists: [Artist] = media.album.artists if isinstance(media, Track) else media.artists @@ -25,7 +25,7 @@ def name_builder_album_artist(media: Track | Album, first_only: bool = False) -> if first_only: break - return "; ".join(artists_tmp) + return delimiter.join(artists_tmp) def name_builder_title(media: Track | Video | Mix | Playlist | Album | Video) -> str: diff --git a/tidal_dl_ng/model/cfg.py b/tidal_dl_ng/model/cfg.py index c283ee7..22e8aa8 100644 --- a/tidal_dl_ng/model/cfg.py +++ b/tidal_dl_ng/model/cfg.py @@ -50,6 +50,8 @@ class Settings: window_y: int = 50 window_w: int = 1200 window_h: int = 800 + metadata_delimiter_artist: str = "; " + metadata_delimiter_album_artist: str = "; " @dataclass_json @@ -109,6 +111,8 @@ class HelpSettings: window_y: str = "Y-Coordinate of saved window location." window_w: str = "Width of saved window size." window_h: str = "Height of saved window size." + metadata_delimiter_artist: str = "Metadata tag delimiter for multiple artists. Default: '; '" + metadata_delimiter_album_artist: str = "Metadata tag delimiter for multiple album artists. Default: '; '" @dataclass_json