feat: Added service key to summary callback object, it specifies the service used to download the item

This commit is contained in:
Xoconoch
2025-08-20 09:09:32 -05:00
parent b0f7e042c3
commit fb2e5d0800
5 changed files with 24 additions and 8 deletions

1
.gitignore vendored
View File

@@ -18,3 +18,4 @@ callback.log
deezspot_test.log
spotify_downloads
deezer_spo_downloads
__pycache__

View File

@@ -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

View File

@@ -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

View File

@@ -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
day: Optional[int] = None # null if unknown
class Service(str, Enum):
"""Supported source services for downloads."""
SPOTIFY = "spotify"
DEEZER = "deezer"

View File

@@ -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