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 deezspot_test.log
spotify_downloads spotify_downloads
deezer_spo_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.track import trackObject as trackCbObject, albumTrackObject, artistTrackObject, playlistTrackObject
from deezspot.models.callback.album import albumObject as albumCbObject from deezspot.models.callback.album import albumObject as albumCbObject
from deezspot.models.callback.playlist import playlistObject as playlistCbObject 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 from deezspot.models.callback.user import userObject
# Use unified metadata converter # Use unified metadata converter
@@ -548,6 +548,7 @@ class EASY_DW:
summary = summaryObject( summary = summaryObject(
successful_tracks=[self.__track_obj], successful_tracks=[self.__track_obj],
total_successful=1, total_successful=1,
service=Service.DEEZER,
) )
summary.final_path = final_path_val summary.final_path = final_path_val
summary.download_quality = download_quality_val summary.download_quality = download_quality_val
@@ -1325,7 +1326,8 @@ class DW_ALBUM:
failed_tracks=failed_tracks_cb, failed_tracks=failed_tracks_cb,
total_successful=len(successful_tracks_cb), total_successful=len(successful_tracks_cb),
total_skipped=len(skipped_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 # Report album completion status
@@ -1447,7 +1449,8 @@ class DW_PLAYLIST:
failed_tracks=failed_tracks_cb, failed_tracks=failed_tracks_cb,
total_successful=len(successful_tracks_cb), total_successful=len(successful_tracks_cb),
total_skipped=len(skipped_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 # Attach m3u path to summary

View File

@@ -3,7 +3,7 @@
from dataclasses import dataclass, field from dataclasses import dataclass, field
from typing import List, Optional, Dict, Any, Union from typing import List, Optional, Dict, Any, Union
from .common import IDs from .common import IDs, Service
from .track import trackObject, albumTrackObject, playlistTrackObject from .track import trackObject, albumTrackObject, playlistTrackObject
from .album import albumObject from .album import albumObject
from .playlist import playlistObject from .playlist import playlistObject
@@ -70,6 +70,7 @@ class summaryObject:
total_successful: int = 0 total_successful: int = 0
total_skipped: int = 0 total_skipped: int = 0
total_failed: int = 0 total_failed: int = 0
service: Optional[Service] = None
# Extended info # Extended info
m3u_path: Optional[str] = None m3u_path: Optional[str] = None
final_path: Optional[str] = None final_path: Optional[str] = None

View File

@@ -2,6 +2,7 @@
from dataclasses import dataclass from dataclasses import dataclass
from typing import Optional from typing import Optional
from enum import Enum
@dataclass @dataclass
@@ -18,4 +19,10 @@ class ReleaseDate:
"""Mandatory release date structure.""" """Mandatory release date structure."""
year: int year: int
month: Optional[int] = None # null if unknown 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 IDs
) )
from deezspot.spotloader.__spo_api__ import tracking, json_to_track_playlist_object 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 counter variables ---
GLOBAL_RETRY_COUNT = 0 GLOBAL_RETRY_COUNT = 0
@@ -701,7 +702,8 @@ class EASY_DW:
failed_tracks=[], failed_tracks=[],
total_successful=len(successful_track_list), total_successful=len(successful_track_list),
total_skipped=len(skipped_track_list), total_skipped=len(skipped_track_list),
total_failed=0 total_failed=0,
service=Service.SPOTIFY
) )
# Enrich summary with final path and quality # Enrich summary with final path and quality
try: try:
@@ -1118,7 +1120,8 @@ class DW_ALBUM:
failed_tracks=failed_tracks, failed_tracks=failed_tracks,
total_successful=len(successful_tracks), total_successful=len(successful_tracks),
total_skipped=len(skipped_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) report_album_done(album_obj, summary_obj)
@@ -1250,7 +1253,8 @@ class DW_PLAYLIST:
failed_tracks=failed_tracks_cb, failed_tracks=failed_tracks_cb,
total_successful=len(successful_tracks_cb), total_successful=len(successful_tracks_cb),
total_skipped=len(skipped_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 # Include m3u path in summary and callback