diff --git a/core/wishlist/payloads.py b/core/wishlist/payloads.py index 76f74a9a..98d1fdbf 100644 --- a/core/wishlist/payloads.py +++ b/core/wishlist/payloads.py @@ -8,7 +8,7 @@ from typing import Any, Dict, Optional from utils.logging_config import get_logger -logger = get_logger("wishlist_service") +logger = get_logger("wishlist.payloads") def sanitize_track_data_for_processing(track_data): diff --git a/core/wishlist/processing.py b/core/wishlist/processing.py index db5744df..3856a3da 100644 --- a/core/wishlist/processing.py +++ b/core/wishlist/processing.py @@ -12,6 +12,11 @@ from typing import Any, Callable, Dict from core.wishlist.payloads import build_failed_track_wishlist_context from core.wishlist.selection import filter_wishlist_tracks_by_category, sanitize_and_dedupe_wishlist_tracks from core.wishlist.state import get_wishlist_cycle, set_wishlist_cycle +from utils.logging_config import get_logger + + +module_logger = get_logger("wishlist.processing") +logger = module_logger @dataclass @@ -32,9 +37,9 @@ class WishlistAutoProcessingRuntime: run_full_missing_tracks_process: Callable[[str, str, list[dict[str, Any]]], Any] get_batch_max_concurrent: Callable[[], int] get_active_server: Callable[[], str] - logger: Any current_time_fn: Callable[[], float] profile_id: int = 1 + logger: Any = module_logger def remove_completed_tracks_from_wishlist( @@ -42,7 +47,7 @@ def remove_completed_tracks_from_wishlist( download_tasks: Dict[str, Dict[str, Any]], remove_from_wishlist: Callable[[Dict[str, Any]], Any], *, - logger, + logger=logger, ) -> int: """Remove completed batch tasks from the wishlist.""" removed_count = 0 @@ -65,7 +70,7 @@ def add_cancelled_tracks_to_failed_tracks( download_tasks: Dict[str, Dict[str, Any]], permanently_failed_tracks: list[Dict[str, Any]], *, - logger, + logger=logger, max_process: int = 100, ) -> int: """Promote cancelled-but-missing tasks into the failed-track list.""" @@ -111,7 +116,7 @@ def recover_uncaptured_failed_tracks( download_tasks: Dict[str, Dict[str, Any]], permanently_failed_tracks: list[Dict[str, Any]], *, - logger, + logger=logger, ) -> int: """Recover tasks force-marked failed/not_found so wishlist processing does not skip them.""" recovered_count = 0 @@ -164,7 +169,7 @@ def finalize_auto_wishlist_completion( add_activity_item: Callable[[Any, Any, Any, Any], Any], automation_engine, db_factory: Callable[[], Any], - logger, + logger=logger, ) -> Dict[str, Any]: """Finalize auto wishlist processing after a batch finishes.""" tracks_added = completion_summary.get('tracks_added', 0) @@ -222,7 +227,7 @@ def remove_tracks_already_in_library( music_database, active_server: str, *, - logger, + logger=logger, skip_track_fn: Callable[[dict[str, Any]], bool] | None = None, log_prefix: str = "[Auto-Wishlist]", ) -> int: @@ -296,8 +301,8 @@ class WishlistManualDownloadRuntime: get_batch_max_concurrent: Callable[[], int] add_activity_item: Callable[[Any, Any, Any, Any], Any] active_server: str - logger: Any profile_id: int + logger: Any = module_logger def start_manual_wishlist_download_batch( @@ -411,7 +416,7 @@ def cleanup_wishlist_against_library( profile_id: int, active_server: str, *, - logger, + logger=logger, ) -> tuple[Dict[str, Any], int]: """Remove wishlist tracks that already exist in the library for one profile.""" try: @@ -617,7 +622,7 @@ def automatic_wishlist_cleanup_after_db_update( profiles_database=None, music_database=None, active_server: str | None = None, - logger, + logger=logger, ) -> int: """Remove wishlist entries that already exist in the library after a DB update.""" try: diff --git a/core/wishlist/resolution.py b/core/wishlist/resolution.py index 398c00f8..314aa3a4 100644 --- a/core/wishlist/resolution.py +++ b/core/wishlist/resolution.py @@ -16,7 +16,7 @@ from database.music_database import get_database from utils.logging_config import get_logger -logger = get_logger("imports.side_effects") +logger = get_logger("wishlist.resolution") def _primary_track_artist_name(track_info: Dict[str, Any]) -> str: diff --git a/core/wishlist/routes.py b/core/wishlist/routes.py index 01b169c4..b7e78886 100644 --- a/core/wishlist/routes.py +++ b/core/wishlist/routes.py @@ -12,6 +12,11 @@ from core.wishlist.reporting import build_wishlist_stats_payload from core.wishlist.selection import prepare_wishlist_tracks_for_display from core.wishlist.state import get_wishlist_cycle as _get_wishlist_cycle from core.wishlist.state import set_wishlist_cycle as _set_wishlist_cycle +from utils.logging_config import get_logger + + +module_logger = get_logger("wishlist.routes") +logger = module_logger @dataclass @@ -28,8 +33,8 @@ class WishlistRouteRuntime: is_wishlist_actually_processing: Callable[[], bool] reset_wishlist_processing_state: Callable[[], None] add_activity_item: Callable[[Any, Any, Any, Any], Any] - logger: Any active_server: str + logger: Any = module_logger get_next_run_seconds: Callable[[str], int] | None = None thread_factory: Callable[..., Any] = threading.Thread diff --git a/core/wishlist/service.py b/core/wishlist/service.py index 73bb6a36..8ec76a92 100644 --- a/core/wishlist/service.py +++ b/core/wishlist/service.py @@ -11,7 +11,7 @@ from database.music_database import get_database from utils.logging_config import get_logger -logger = get_logger("wishlist_service") +logger = get_logger("wishlist.service") class WishlistService: diff --git a/web_server.py b/web_server.py index 277c1bab..66803978 100644 --- a/web_server.py +++ b/web_server.py @@ -17442,7 +17442,6 @@ def check_and_recover_stuck_flags(): timeout_seconds=stuck_timeout, now=current_time, label="Wishlist auto-processing", - logger=logger, reset_callback=_reset_wishlist_processing_state, ): return True @@ -17476,7 +17475,6 @@ def is_wishlist_actually_processing(): timeout_seconds=900, now=current_time, on_stuck=check_and_recover_stuck_flags, - logger=logger, ) def is_watchlist_actually_scanning(): @@ -17542,7 +17540,6 @@ def _process_wishlist_automatically(automation_id=None): run_full_missing_tracks_process=_run_full_missing_tracks_process, get_batch_max_concurrent=_get_batch_max_concurrent, get_active_server=config_manager.get_active_media_server, - logger=logger, current_time_fn=time.time, profile_id=1, ) @@ -18366,7 +18363,6 @@ def _build_wishlist_route_runtime( is_wishlist_actually_processing=is_actually_processing_fn or is_wishlist_actually_processing, reset_wishlist_processing_state=reset_wishlist_processing_state or (lambda: None), add_activity_item=add_activity_item, - logger=logger, active_server=config_manager.get_active_media_server(), get_next_run_seconds=get_next_run_seconds, ) @@ -18405,7 +18401,6 @@ def start_wishlist_missing_downloads(): get_batch_max_concurrent=_get_batch_max_concurrent, add_activity_item=add_activity_item, active_server=config_manager.get_active_media_server(), - logger=logger, profile_id=manual_profile_id, ) @@ -18456,7 +18451,6 @@ def cleanup_wishlist(): db, get_current_profile_id(), active_server, - logger=logger, ) return jsonify(payload), status_code @@ -20353,7 +20347,6 @@ def _process_failed_tracks_to_wishlist_exact(batch_id): batch, download_tasks, _check_and_remove_from_wishlist, - logger=logger, ) # STEP 1: Add cancelled tracks that were missing to permanently_failed_tracks (replicating sync.py) @@ -20364,7 +20357,6 @@ def _process_failed_tracks_to_wishlist_exact(batch_id): batch, download_tasks, permanently_failed_tracks, - logger=logger, ) logger.warning(f"[Wishlist Processing] Processed {processed_count} cancelled tracks") @@ -20376,7 +20368,6 @@ def _process_failed_tracks_to_wishlist_exact(batch_id): batch, download_tasks, permanently_failed_tracks, - logger=logger, ) if recovered_count: logger.warning(f"[Wishlist Processing] Recovered {recovered_count} uncaptured failed tracks for wishlist") @@ -20535,7 +20526,6 @@ def _process_failed_tracks_to_wishlist_exact_with_auto_completion(batch_id): add_activity_item=add_activity_item, automation_engine=automation_engine, db_factory=MusicDatabase, - logger=logger, ) except Exception as e: