diff options
| author | Robert Honz <exislow+github@gmail.com> | 2024-12-15 20:37:06 +0100 |
|---|---|---|
| committer | Robert Honz <exislow+github@gmail.com> | 2024-12-15 20:37:06 +0100 |
| commit | b8091e233b666b9920e333918e465a25db64de7b (patch) | |
| tree | c21ef40900e9c596147f93bf3da3881557fdf3c3 /tidal_dl_ng/helper | |
| parent | 94e7ef0e95f696f11fb1ad7062cd3c1973cd3876 (diff) | |
| download | tidal-dl-ng-b8091e233b666b9920e333918e465a25db64de7b.tar.gz | |
✨ Album track number padding can be set. Fixes #142
Diffstat (limited to 'tidal_dl_ng/helper')
| -rw-r--r-- | tidal_dl_ng/helper/path.py | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/tidal_dl_ng/helper/path.py b/tidal_dl_ng/helper/path.py index d9ff35c..a275cca 100644 --- a/tidal_dl_ng/helper/path.py +++ b/tidal_dl_ng/helper/path.py @@ -49,7 +49,9 @@ def path_file_settings() -> str: return os.path.join(path_config_base(), "settings.json") -def format_path_media(fmt_template: str, media: Track | Album | Playlist | UserPlaylist | Video | Mix) -> str: +def format_path_media( + fmt_template: str, media: Track | Album | Playlist | UserPlaylist | Video | Mix, album_track_num_pad_min: int = 0 +) -> str: result = fmt_template # Search track format template for placeholder. @@ -58,7 +60,7 @@ def format_path_media(fmt_template: str, media: Track | Album | Playlist | UserP for _matchNum, match in enumerate(matches, start=1): template_str = match.group() - result_fmt = format_str_media(match.group(1), media) + result_fmt = format_str_media(match.group(1), media, album_track_num_pad_min) if result_fmt != match.group(1): value = sanitize_filename(result_fmt) @@ -67,7 +69,9 @@ def format_path_media(fmt_template: str, media: Track | Album | Playlist | UserP return result -def format_str_media(name: str, media: Track | Album | Playlist | UserPlaylist | Video | Mix) -> str: # noqa: C901 +def format_str_media( + name: str, media: Track | Album | Playlist | UserPlaylist | Video | Mix, album_track_num_pad_min: int = 0 +) -> str: result: str = name try: @@ -98,7 +102,10 @@ def format_str_media(name: str, media: Track | Album | Playlist | UserPlaylist | if isinstance(media, Track | Video): num_tracks: int = media.album.num_tracks if hasattr(media, "album") else 1 count_digits: int = int(math.log10(num_tracks)) + 1 - result = str(media.track_num).zfill(count_digits) + count_digits_computed: int = ( + count_digits if count_digits > album_track_num_pad_min else album_track_num_pad_min + ) + result = str(media.track_num).zfill(count_digits_computed) case "album_num_tracks": if isinstance(media, Track | Video): result = str(media.album.num_tracks if hasattr(media, "album") else 1) @@ -160,11 +167,11 @@ def format_str_media(name: str, media: Track | Album | Playlist | UserPlaylist | case "track_volume_num_optional": if isinstance(media, Track | Video): num_volumes: int = media.album.num_volumes if hasattr(media, "album") else 1 - result = "" if num_volumes is 1 else str(media.volume_num) + result = "" if num_volumes == 1 else str(media.volume_num) case "track_volume_num_optional_CD": if isinstance(media, Track | Video): num_volumes: int = media.album.num_volumes if hasattr(media, "album") else 1 - result = "" if num_volumes is 1 else f"CD{media.volume_num!s}" + result = "" if num_volumes == 1 else f"CD{media.volume_num!s}" except Exception as e: # TODO: Implement better exception logging. print(e) |
