From ac49089e255b4cfa7d85e40d9123c56f75b214b1 Mon Sep 17 00:00:00 2001 From: Xoconoch Date: Wed, 20 Aug 2025 10:42:21 -0500 Subject: [PATCH] feat: Added pad_number_width setting to the backend (deezspot 2.7.2 --- routes/utils/album.py | 5 +++++ routes/utils/celery_config.py | 2 ++ routes/utils/celery_tasks.py | 15 +++++++++++++++ routes/utils/playlist.py | 5 +++++ routes/utils/track.py | 5 +++++ 5 files changed, 32 insertions(+) diff --git a/routes/utils/album.py b/routes/utils/album.py index b81e0fa..be67078 100755 --- a/routes/utils/album.py +++ b/routes/utils/album.py @@ -32,6 +32,7 @@ def download_album( spotify_metadata=True, _is_celery_task_execution=False, # Added to skip duplicate check from Celery task real_time_multiplier=None, + pad_number_width=None, ): if not _is_celery_task_execution: existing_task = get_existing_task_id( @@ -117,6 +118,7 @@ def download_album( bitrate=bitrate, artist_separator=artist_separator, spotify_metadata=spotify_metadata, + pad_number_width=pad_number_width, ) print( f"DEBUG: album.py - Album download via Deezer (account: {fallback}) successful for Spotify URL." @@ -175,6 +177,7 @@ def download_album( bitrate=bitrate, artist_separator=artist_separator, real_time_multiplier=real_time_multiplier, + pad_number_width=pad_number_width, ) print( f"DEBUG: album.py - Spotify direct download (account: {main} for blob) successful." @@ -231,6 +234,7 @@ def download_album( bitrate=bitrate, artist_separator=artist_separator, real_time_multiplier=real_time_multiplier, + pad_number_width=pad_number_width, ) print( f"DEBUG: album.py - Direct Spotify download (account: {main} for blob) successful." @@ -271,6 +275,7 @@ def download_album( convert_to=convert_to, bitrate=bitrate, artist_separator=artist_separator, + pad_number_width=pad_number_width, ) print( f"DEBUG: album.py - Direct Deezer download (account: {main}) successful." diff --git a/routes/utils/celery_config.py b/routes/utils/celery_config.py index f95812e..70fd3a3 100644 --- a/routes/utils/celery_config.py +++ b/routes/utils/celery_config.py @@ -50,6 +50,7 @@ DEFAULT_MAIN_CONFIG = { "separateTracksByUser": False, "watch": {}, "realTimeMultiplier": 0, + "padNumberWidth": 3, } @@ -65,6 +66,7 @@ def _migrate_legacy_keys(cfg: dict) -> tuple[dict, bool]: "recursive_quality": "recursiveQuality", "spotify_metadata": "spotifyMetadata", "real_time_multiplier": "realTimeMultiplier", + "pad_number_width": "padNumberWidth", } for legacy, camel in legacy_map.items(): if legacy in out and camel not in out: diff --git a/routes/utils/celery_tasks.py b/routes/utils/celery_tasks.py index f1a384d..52853f5 100644 --- a/routes/utils/celery_tasks.py +++ b/routes/utils/celery_tasks.py @@ -550,6 +550,9 @@ def retry_task(task_id): task_info["pad_tracks"] = task_info.get( "pad_tracks", config_params.get("tracknum_padding", True) ) + task_info["pad_number_width"] = task_info.get( + "pad_number_width", config_params.get("padNumberWidth", 3) + ) # Store the updated task info store_task_info(new_task_id, task_info) @@ -1629,6 +1632,9 @@ def download_track(self, **task_data): real_time_multiplier = task_data.get( "real_time_multiplier", config_params.get("realTimeMultiplier", 0) ) + pad_number_width = task_data.get( + "pad_number_width", config_params.get("padNumberWidth", 3) + ) # Execute the download - service is now determined from URL download_track_func( @@ -1650,6 +1656,7 @@ def download_track(self, **task_data): spotify_metadata=spotify_metadata, _is_celery_task_execution=True, # Skip duplicate check inside Celery task (consistency) real_time_multiplier=real_time_multiplier, + pad_number_width=pad_number_width, ) return {"status": "success", "message": "Track download completed"} @@ -1732,6 +1739,9 @@ def download_album(self, **task_data): real_time_multiplier = task_data.get( "real_time_multiplier", config_params.get("realTimeMultiplier", 0) ) + pad_number_width = task_data.get( + "pad_number_width", config_params.get("padNumberWidth", 3) + ) # Execute the download - service is now determined from URL download_album_func( @@ -1753,6 +1763,7 @@ def download_album(self, **task_data): spotify_metadata=spotify_metadata, _is_celery_task_execution=True, # Skip duplicate check inside Celery task real_time_multiplier=real_time_multiplier, + pad_number_width=pad_number_width, ) return {"status": "success", "message": "Album download completed"} @@ -1844,6 +1855,9 @@ def download_playlist(self, **task_data): real_time_multiplier = task_data.get( "real_time_multiplier", config_params.get("realTimeMultiplier", 0) ) + pad_number_width = task_data.get( + "pad_number_width", config_params.get("padNumberWidth", 3) + ) # Execute the download - service is now determined from URL download_playlist_func( @@ -1868,6 +1882,7 @@ def download_playlist(self, **task_data): spotify_metadata=spotify_metadata, _is_celery_task_execution=True, # Skip duplicate check inside Celery task real_time_multiplier=real_time_multiplier, + pad_number_width=pad_number_width, ) return {"status": "success", "message": "Playlist download completed"} diff --git a/routes/utils/playlist.py b/routes/utils/playlist.py index ffd47ed..efdec27 100755 --- a/routes/utils/playlist.py +++ b/routes/utils/playlist.py @@ -29,6 +29,7 @@ def download_playlist( spotify_metadata=True, _is_celery_task_execution=False, # Added to skip duplicate check from Celery task real_time_multiplier=None, + pad_number_width=None, ): if not _is_celery_task_execution: existing_task = get_existing_task_id( @@ -114,6 +115,7 @@ def download_playlist( bitrate=bitrate, artist_separator=artist_separator, spotify_metadata=spotify_metadata, + pad_number_width=pad_number_width, ) print( f"DEBUG: playlist.py - Playlist download via Deezer (account: {fallback}) successful for Spotify URL." @@ -177,6 +179,7 @@ def download_playlist( bitrate=bitrate, artist_separator=artist_separator, real_time_multiplier=real_time_multiplier, + pad_number_width=pad_number_width, ) print( f"DEBUG: playlist.py - Spotify direct download (account: {main} for blob) successful." @@ -239,6 +242,7 @@ def download_playlist( bitrate=bitrate, artist_separator=artist_separator, real_time_multiplier=real_time_multiplier, + pad_number_width=pad_number_width, ) print( f"DEBUG: playlist.py - Direct Spotify download (account: {main} for blob) successful." @@ -279,6 +283,7 @@ def download_playlist( convert_to=convert_to, bitrate=bitrate, artist_separator=artist_separator, + pad_number_width=pad_number_width, ) print( f"DEBUG: playlist.py - Direct Deezer download (account: {main}) successful." diff --git a/routes/utils/track.py b/routes/utils/track.py index 6af3c7d..e1f8b4a 100755 --- a/routes/utils/track.py +++ b/routes/utils/track.py @@ -30,6 +30,7 @@ def download_track( spotify_metadata=True, _is_celery_task_execution=False, # Added for consistency, not currently used for duplicate check real_time_multiplier=None, + pad_number_width=None, ): try: # Detect URL source (Spotify or Deezer) from URL @@ -108,6 +109,7 @@ def download_track( bitrate=bitrate, artist_separator=artist_separator, spotify_metadata=spotify_metadata, + pad_number_width=pad_number_width, ) print( f"DEBUG: track.py - Track download via Deezer (account: {fallback}) successful for Spotify URL." @@ -168,6 +170,7 @@ def download_track( bitrate=bitrate, artist_separator=artist_separator, real_time_multiplier=real_time_multiplier, + pad_number_width=pad_number_width, ) print( f"DEBUG: track.py - Spotify direct download (account: {main} for blob) successful." @@ -225,6 +228,7 @@ def download_track( bitrate=bitrate, artist_separator=artist_separator, real_time_multiplier=real_time_multiplier, + pad_number_width=pad_number_width, ) print( f"DEBUG: track.py - Direct Spotify download (account: {main} for blob) successful." @@ -264,6 +268,7 @@ def download_track( convert_to=convert_to, bitrate=bitrate, artist_separator=artist_separator, + pad_number_width=pad_number_width, ) print( f"DEBUG: track.py - Direct Deezer download (account: {main}) successful."