feat(metadata): ✨ add customizable metadata delimiters for artists
* 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.
This commit is contained in:
@@ -1208,12 +1208,12 @@ class Download:
|
|||||||
lyrics=lyrics,
|
lyrics=lyrics,
|
||||||
copy_right=copy_right,
|
copy_right=copy_right,
|
||||||
title=name_builder_title(track),
|
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 "",
|
album=track.album.name if track.album else "",
|
||||||
tracknumber=track.track_num,
|
tracknumber=track.track_num,
|
||||||
date=release_date,
|
date=release_date,
|
||||||
isrc=isrc,
|
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,
|
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,
|
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,
|
discnumber=track.volume_num if track.volume_num else 1,
|
||||||
|
|||||||
@@ -10,11 +10,11 @@ from tidal_dl_ng.constants import FAVORITES, MediaType
|
|||||||
from tidal_dl_ng.helper.exceptions import MediaUnknown
|
from tidal_dl_ng.helper.exceptions import MediaUnknown
|
||||||
|
|
||||||
|
|
||||||
def name_builder_artist(media: Track | Video | Album) -> str:
|
def name_builder_artist(media: Track | Video | Album, delimiter: str = "; ") -> str:
|
||||||
return "; ".join(artist.name for artist in media.artists)
|
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_tmp: [str] = []
|
||||||
artists: [Artist] = media.album.artists if isinstance(media, Track) else media.artists
|
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:
|
if first_only:
|
||||||
break
|
break
|
||||||
|
|
||||||
return "; ".join(artists_tmp)
|
return delimiter.join(artists_tmp)
|
||||||
|
|
||||||
|
|
||||||
def name_builder_title(media: Track | Video | Mix | Playlist | Album | Video) -> str:
|
def name_builder_title(media: Track | Video | Mix | Playlist | Album | Video) -> str:
|
||||||
|
|||||||
@@ -50,6 +50,8 @@ class Settings:
|
|||||||
window_y: int = 50
|
window_y: int = 50
|
||||||
window_w: int = 1200
|
window_w: int = 1200
|
||||||
window_h: int = 800
|
window_h: int = 800
|
||||||
|
metadata_delimiter_artist: str = "; "
|
||||||
|
metadata_delimiter_album_artist: str = "; "
|
||||||
|
|
||||||
|
|
||||||
@dataclass_json
|
@dataclass_json
|
||||||
@@ -109,6 +111,8 @@ class HelpSettings:
|
|||||||
window_y: str = "Y-Coordinate of saved window location."
|
window_y: str = "Y-Coordinate of saved window location."
|
||||||
window_w: str = "Width of saved window size."
|
window_w: str = "Width of saved window size."
|
||||||
window_h: str = "Height 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
|
@dataclass_json
|
||||||
|
|||||||
Reference in New Issue
Block a user