summaryrefslogtreecommitdiff
path: root/tidal_dl_ng/helper/path.py
diff options
context:
space:
mode:
authorRobert Honz <exislow+github@gmail.com>2024-12-15 20:37:06 +0100
committerRobert Honz <exislow+github@gmail.com>2024-12-15 20:37:06 +0100
commitb8091e233b666b9920e333918e465a25db64de7b (patch)
treec21ef40900e9c596147f93bf3da3881557fdf3c3 /tidal_dl_ng/helper/path.py
parent94e7ef0e95f696f11fb1ad7062cd3c1973cd3876 (diff)
downloadtidal-dl-ng-b8091e233b666b9920e333918e465a25db64de7b.tar.gz
✨ Album track number padding can be set. Fixes #142
Diffstat (limited to 'tidal_dl_ng/helper/path.py')
-rw-r--r--tidal_dl_ng/helper/path.py19
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)