diff --git a/.gitignore b/.gitignore index 1813ee2..651e34a 100644 --- a/.gitignore +++ b/.gitignore @@ -18,3 +18,4 @@ callback.log deezspot_test.log spotify_downloads deezer_spo_downloads +__pycache__ diff --git a/deezspot/deezloader/__download__.py b/deezspot/deezloader/__download__.py index 7d777ee..a978e2e 100644 --- a/deezspot/deezloader/__download__.py +++ b/deezspot/deezloader/__download__.py @@ -71,7 +71,7 @@ from deezspot.models.callback.callbacks import ( from deezspot.models.callback.track import trackObject as trackCbObject, albumTrackObject, artistTrackObject, playlistTrackObject from deezspot.models.callback.album import albumObject as albumCbObject from deezspot.models.callback.playlist import playlistObject as playlistCbObject -from deezspot.models.callback.common import IDs +from deezspot.models.callback.common import IDs, Service from deezspot.models.callback.user import userObject # Use unified metadata converter @@ -548,6 +548,7 @@ class EASY_DW: summary = summaryObject( successful_tracks=[self.__track_obj], total_successful=1, + service=Service.DEEZER, ) summary.final_path = final_path_val summary.download_quality = download_quality_val @@ -1325,7 +1326,8 @@ class DW_ALBUM: failed_tracks=failed_tracks_cb, total_successful=len(successful_tracks_cb), total_skipped=len(skipped_tracks_cb), - total_failed=len(failed_tracks_cb) + total_failed=len(failed_tracks_cb), + service=Service.DEEZER ) # Report album completion status @@ -1447,7 +1449,8 @@ class DW_PLAYLIST: failed_tracks=failed_tracks_cb, total_successful=len(successful_tracks_cb), total_skipped=len(skipped_tracks_cb), - total_failed=len(failed_tracks_cb) + total_failed=len(failed_tracks_cb), + service=Service.DEEZER ) # Attach m3u path to summary diff --git a/deezspot/models/callback/callbacks.py b/deezspot/models/callback/callbacks.py index 3014d44..d67e8a3 100644 --- a/deezspot/models/callback/callbacks.py +++ b/deezspot/models/callback/callbacks.py @@ -3,7 +3,7 @@ from dataclasses import dataclass, field from typing import List, Optional, Dict, Any, Union -from .common import IDs +from .common import IDs, Service from .track import trackObject, albumTrackObject, playlistTrackObject from .album import albumObject from .playlist import playlistObject @@ -70,6 +70,7 @@ class summaryObject: total_successful: int = 0 total_skipped: int = 0 total_failed: int = 0 + service: Optional[Service] = None # Extended info m3u_path: Optional[str] = None final_path: Optional[str] = None diff --git a/deezspot/models/callback/common.py b/deezspot/models/callback/common.py index d390c11..2e11023 100644 --- a/deezspot/models/callback/common.py +++ b/deezspot/models/callback/common.py @@ -2,6 +2,7 @@ from dataclasses import dataclass from typing import Optional +from enum import Enum @dataclass @@ -18,4 +19,10 @@ class ReleaseDate: """Mandatory release date structure.""" year: int month: Optional[int] = None # null if unknown - day: Optional[int] = None # null if unknown \ No newline at end of file + day: Optional[int] = None # null if unknown + + +class Service(str, Enum): + """Supported source services for downloads.""" + SPOTIFY = "spotify" + DEEZER = "deezer" \ No newline at end of file diff --git a/deezspot/spotloader/__download__.py b/deezspot/spotloader/__download__.py index beb4f87..4c800a9 100644 --- a/deezspot/spotloader/__download__.py +++ b/deezspot/spotloader/__download__.py @@ -60,6 +60,7 @@ from deezspot.models.callback import ( IDs ) from deezspot.spotloader.__spo_api__ import tracking, json_to_track_playlist_object +from deezspot.models.callback.common import Service # --- Global retry counter variables --- GLOBAL_RETRY_COUNT = 0 @@ -701,7 +702,8 @@ class EASY_DW: failed_tracks=[], total_successful=len(successful_track_list), total_skipped=len(skipped_track_list), - total_failed=0 + total_failed=0, + service=Service.SPOTIFY ) # Enrich summary with final path and quality try: @@ -1118,7 +1120,8 @@ class DW_ALBUM: failed_tracks=failed_tracks, total_successful=len(successful_tracks), total_skipped=len(skipped_tracks), - total_failed=len(failed_tracks) + total_failed=len(failed_tracks), + service=Service.SPOTIFY ) report_album_done(album_obj, summary_obj) @@ -1250,7 +1253,8 @@ class DW_PLAYLIST: failed_tracks=failed_tracks_cb, total_successful=len(successful_tracks_cb), total_skipped=len(skipped_tracks_cb), - total_failed=len(failed_tracks_cb) + total_failed=len(failed_tracks_cb), + service=Service.SPOTIFY ) # Include m3u path in summary and callback