From 667809600a5054394b6f064ede4aaf64f0c137d7 Mon Sep 17 00:00:00 2001 From: Broque Thomas Date: Thu, 24 Jul 2025 10:58:36 -0700 Subject: [PATCH] good --- .spotify_cache | 2 +- logs/app.log | 24 ++++++++++++++++++++++ ui/pages/__pycache__/sync.cpython-312.pyc | Bin 171711 -> 172133 bytes ui/pages/sync.py | 13 +++++++++--- 4 files changed, 35 insertions(+), 4 deletions(-) diff --git a/.spotify_cache b/.spotify_cache index 383f97a1..574d8c8c 100644 --- a/.spotify_cache +++ b/.spotify_cache @@ -1 +1 @@ -{"access_token": "BQCLT_slOYLk3v2BHMORcGETcy_0zWC43NqlAHsNvKZg6YnGZwlW3U98evnFP_mlm-PRC5LjSZc39mtX9Z5ikNILw13_nCpCLAYD5Qh0ZP4tUtCwlbmkCyDrhnzFXRgv7BaiFhCmxz4QV63j1YMhgk_NM95Bg8cMy8_K7jcdgNP5ApVC6LXbhNK4ytYFhuicULb-fTbJna2DAmp37QduR9dc1LHazfFYGb7Um_fAYfo7CjipUhyFI54NH3zy32aQ", "token_type": "Bearer", "expires_in": 3600, "scope": "user-library-read user-read-private playlist-read-private playlist-read-collaborative user-read-email", "expires_at": 1753341652, "refresh_token": "AQDmfQkPCGObfJeTUIbW1hAAwhSqkuHRA3Qh2dqVYMRh0eCkFMQgPNJDDzF8y-BiaVbj80zePkK_XSfYH1aJutMtNbnsqRKWuxP31BTrMc7pdUdbE7Fma4oH8wpDUKdG3MM"} \ No newline at end of file +{"access_token": "BQDGsK2fscXEAxvJIN_UV90EdxRj6Ryw8Hd7V4UcU3WL_Xzu3zxajhXoq14ayJHNeWJd7-d8IlmhTbbrsQyQLePnxkLbd4EO9f7WSwVeena7ySVb5c67L9c4kjtXdZ_ZLWyI_SqjwRJSB_SH8Pg02mvEysnZOIdbtNmefpI0zQHmdhM431l7sffCtwEKr59-E4G_qaWfQCHX9L0OsLTZ-dXry6_mOKdE3PZEmEX51xNhpKhXMHZYGGua6jCUO2xq", "token_type": "Bearer", "expires_in": 3600, "scope": "user-library-read user-read-private playlist-read-private playlist-read-collaborative user-read-email", "expires_at": 1753383290, "refresh_token": "AQDmfQkPCGObfJeTUIbW1hAAwhSqkuHRA3Qh2dqVYMRh0eCkFMQgPNJDDzF8y-BiaVbj80zePkK_XSfYH1aJutMtNbnsqRKWuxP31BTrMc7pdUdbE7Fma4oH8wpDUKdG3MM"} \ No newline at end of file diff --git a/logs/app.log b/logs/app.log index 58eb02f1..72732832 100644 --- a/logs/app.log +++ b/logs/app.log @@ -446634,3 +446634,27 @@ 2025-07-23 23:20:52 - newmusic.main - INFO - change_page:163 - Changed to page: sync 2025-07-23 23:20:52 - newmusic.spotify_client - INFO - _ensure_user_id:195 - Successfully authenticated with Spotify as broquethomas 2025-07-23 23:20:52 - newmusic.spotify_client - INFO - get_user_playlists_metadata_only:256 - Retrieved 7 playlist metadata (first batch) +2025-07-24 10:54:48 - newmusic - INFO - setup_logging:57 - Logging initialized with level: DEBUG +2025-07-24 10:54:48 - newmusic.main - INFO - main:211 - Starting NewMusic application +2025-07-24 10:54:48 - newmusic.spotify_client - INFO - _setup_client:179 - Spotify client initialized (user info will be fetched when needed) +2025-07-24 10:54:48 - newmusic.soulseek_client - INFO - _setup_client:220 - Soulseek client configured with slskd at http://localhost:5030 +2025-07-24 10:54:48 - newmusic.spotify_client - INFO - _setup_client:179 - Spotify client initialized (user info will be fetched when needed) +2025-07-24 10:54:49 - newmusic.main - INFO - change_page:163 - Changed to page: dashboard +2025-07-24 10:54:49 - newmusic.main - INFO - setup_media_player_connections:150 - Media player connections established between sidebar and downloads page +2025-07-24 10:54:49 - newmusic.plex_client - INFO - _find_music_library:116 - Found music library: Music +2025-07-24 10:54:49 - newmusic.plex_client - INFO - _setup_client:102 - Successfully connected to Plex server: PLEX-MACHINE +2025-07-24 10:54:50 - newmusic.main - INFO - change_page:163 - Changed to page: sync +2025-07-24 10:54:50 - newmusic.spotify_client - INFO - _ensure_user_id:195 - Successfully authenticated with Spotify as broquethomas +2025-07-24 10:54:51 - newmusic.spotify_client - INFO - get_user_playlists_metadata_only:256 - Retrieved 7 playlist metadata (first batch) +2025-07-24 10:58:05 - newmusic - INFO - setup_logging:57 - Logging initialized with level: DEBUG +2025-07-24 10:58:05 - newmusic.main - INFO - main:211 - Starting NewMusic application +2025-07-24 10:58:05 - newmusic.spotify_client - INFO - _setup_client:179 - Spotify client initialized (user info will be fetched when needed) +2025-07-24 10:58:05 - newmusic.soulseek_client - INFO - _setup_client:220 - Soulseek client configured with slskd at http://localhost:5030 +2025-07-24 10:58:05 - newmusic.spotify_client - INFO - _setup_client:179 - Spotify client initialized (user info will be fetched when needed) +2025-07-24 10:58:06 - newmusic.main - INFO - change_page:163 - Changed to page: dashboard +2025-07-24 10:58:06 - newmusic.main - INFO - setup_media_player_connections:150 - Media player connections established between sidebar and downloads page +2025-07-24 10:58:06 - newmusic.plex_client - INFO - _find_music_library:116 - Found music library: Music +2025-07-24 10:58:06 - newmusic.plex_client - INFO - _setup_client:102 - Successfully connected to Plex server: PLEX-MACHINE +2025-07-24 10:58:07 - newmusic.main - INFO - change_page:163 - Changed to page: sync +2025-07-24 10:58:07 - newmusic.spotify_client - INFO - _ensure_user_id:195 - Successfully authenticated with Spotify as broquethomas +2025-07-24 10:58:07 - newmusic.spotify_client - INFO - get_user_playlists_metadata_only:256 - Retrieved 7 playlist metadata (first batch) diff --git a/ui/pages/__pycache__/sync.cpython-312.pyc b/ui/pages/__pycache__/sync.cpython-312.pyc index e222ab7dc371103c5a2890b64ffd2570e51f573e..55459e2c323bb7a4a4819dd236b9103ab56e8cb1 100644 GIT binary patch delta 8743 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 c-!$;=%>h`lRPXlkt9`#{p7x5C>SwW7 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 D=kVpD diff --git a/ui/pages/sync.py b/ui/pages/sync.py index 74b6c5d9..c77c712c 100644 --- a/ui/pages/sync.py +++ b/ui/pages/sync.py @@ -811,9 +811,12 @@ class PlaylistDetailsModal(QDialog): playlist_item_widget.download_modal = modal - # --- FIX --- - # The call to on_download_process_started has been removed from here - # and moved to the modal's "Begin Search" button. + # --- FIX: Connect the cleanup signal immediately upon creation. --- + # This ensures that when the modal closes for any reason, the SyncPage + # is notified and can run its cleanup logic. + modal.process_finished.connect( + lambda: self.parent_page.on_download_process_finished(self.playlist.id) + ) self.accept() modal.show() @@ -2456,7 +2459,11 @@ class DownloadMissingTracksModal(QDialog): self.tracks_to_download_count = 0 self.downloaded_tracks_count = 0 self.analysis_complete = False + + # --- FIX: Initialize attributes to prevent crash on close --- self.download_in_progress = False + self.cancel_requested = False + self.permanently_failed_tracks = [] print(f"📊 Total tracks: {self.total_tracks}")