From 67f81cfa7c1c5dbe2cf96d37d786db8108aaeebe Mon Sep 17 00:00:00 2001 From: Broque Thomas Date: Fri, 25 Jul 2025 08:01:19 -0700 Subject: [PATCH] good --- .spotify_cache | 2 +- logs/app.log | 612 ++++++++++++++++++++++ ui/pages/__pycache__/sync.cpython-312.pyc | Bin 197501 -> 199186 bytes ui/pages/sync.py | 63 ++- 4 files changed, 665 insertions(+), 12 deletions(-) diff --git a/.spotify_cache b/.spotify_cache index 4ff32777..15edef04 100644 --- a/.spotify_cache +++ b/.spotify_cache @@ -1 +1 @@ -{"access_token": "BQDJtYVYoZ4IzCUUNDbKSclHQ4h-LgT7pSr4_ymT3fReR1v6o5L2fBHwcmwJR6wiRknpOjKr9RB2R8iTAPrI3Tzlj6K07Zfp5Er2702v3IRVqGozafrghlyJAVqsXD58OYFzceQAH6bU9R30ji4kLlAYOs8yRO5_IZDEs8B-DPauEtGdWpPD9e_oYc3-VKr-j9Xw15aYlImQxtBmEv40nde4ZZScgWx2GjSbQ35nvVMd4eXGDUCbcgCfkvWCO5Ai", "token_type": "Bearer", "expires_in": 3600, "scope": "user-library-read user-read-private playlist-read-private playlist-read-collaborative user-read-email", "expires_at": 1753432958, "refresh_token": "AQDmfQkPCGObfJeTUIbW1hAAwhSqkuHRA3Qh2dqVYMRh0eCkFMQgPNJDDzF8y-BiaVbj80zePkK_XSfYH1aJutMtNbnsqRKWuxP31BTrMc7pdUdbE7Fma4oH8wpDUKdG3MM"} \ No newline at end of file +{"access_token": "BQDUg0cc7kwTub-qY1g6esi2lcHiuSUyhQtO83vQdapwxf1rBRwIfzP9TU52BRgoWNh3xm9Cg2gpcBS6Eu4yfJcOORnvkzNg1D6gzzwXuTYgHrVyBom2x2YTi3UqvGhtv646AKLZ-xiXmQ_iZKbr16seeY6dG9yrPhnc8DXTUSzEl-GPTq1hzjsWGAgZNZDrncc3fKtJkfWXTWgZyPEMEfZnfqrKXaK8QQbeySEM-lLNx7gFvbsmbi4oNPtFXzlY", "token_type": "Bearer", "expires_in": 3600, "scope": "user-library-read user-read-private playlist-read-private playlist-read-collaborative user-read-email", "expires_at": 1753458834, "refresh_token": "AQDmfQkPCGObfJeTUIbW1hAAwhSqkuHRA3Qh2dqVYMRh0eCkFMQgPNJDDzF8y-BiaVbj80zePkK_XSfYH1aJutMtNbnsqRKWuxP31BTrMc7pdUdbE7Fma4oH8wpDUKdG3MM"} \ No newline at end of file diff --git a/logs/app.log b/logs/app.log index 1f87f1dc..cde21796 100644 --- a/logs/app.log +++ b/logs/app.log @@ -14247,3 +14247,615 @@ 2025-07-25 01:23:24 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for '6am beach walk' 2025-07-25 01:23:24 - newmusic.sync_service - DEBUG - _find_track_in_plex:251 - Sync cancelled after search for '6am Beach Walk' 2025-07-25 01:23:26 - newmusic.spotify_client - INFO - get_user_playlists_metadata_only:256 - Retrieved 8 playlist metadata (first batch) +2025-07-25 01:23:42 - newmusic.main - INFO - change_page:163 - Changed to page: dashboard +2025-07-25 01:23:42 - newmusic.main - INFO - change_page:163 - Changed to page: sync +2025-07-25 01:24:02 - newmusic.main - INFO - closeEvent:176 - Closing application... +2025-07-25 01:24:02 - newmusic.main - INFO - closeEvent:181 - Cleaning up Downloads page threads... +2025-07-25 01:24:02 - newmusic.main - INFO - closeEvent:186 - Stopping status monitoring thread... +2025-07-25 01:24:05 - newmusic.main - INFO - closeEvent:191 - Closing Soulseek client... +2025-07-25 01:24:05 - newmusic.main - INFO - closeEvent:197 - Application closed successfully +2025-07-25 07:53:51 - newmusic - INFO - setup_logging:57 - Logging initialized with level: DEBUG +2025-07-25 07:53:51 - newmusic.main - INFO - main:211 - Starting NewMusic application +2025-07-25 07:53:51 - newmusic.spotify_client - INFO - _setup_client:179 - Spotify client initialized (user info will be fetched when needed) +2025-07-25 07:53:51 - newmusic.soulseek_client - INFO - _setup_client:220 - Soulseek client configured with slskd at http://localhost:5030 +2025-07-25 07:53:51 - newmusic.spotify_client - INFO - _setup_client:179 - Spotify client initialized (user info will be fetched when needed) +2025-07-25 07:53:53 - newmusic.main - INFO - change_page:163 - Changed to page: dashboard +2025-07-25 07:53:53 - newmusic.main - INFO - setup_media_player_connections:150 - Media player connections established between sidebar and downloads page +2025-07-25 07:53:53 - newmusic.plex_client - INFO - _find_music_library:127 - Found music library: Music +2025-07-25 07:53:53 - newmusic.plex_client - INFO - _setup_client:113 - Successfully connected to Plex server: PLEX-MACHINE +2025-07-25 07:53:54 - newmusic.main - INFO - change_page:163 - Changed to page: sync +2025-07-25 07:53:54 - newmusic.spotify_client - INFO - _ensure_user_id:195 - Successfully authenticated with Spotify as broquethomas +2025-07-25 07:53:54 - newmusic.spotify_client - INFO - get_user_playlists_metadata_only:256 - Retrieved 8 playlist metadata (first batch) +2025-07-25 07:53:58 - newmusic.sync_service - INFO - sync_playlist:94 - Starting sync for playlist: Aether +2025-07-25 07:53:58 - newmusic.plex_client - DEBUG - search_tracks:332 - Stage 1: Searching for artist 'virtual mage' +2025-07-25 07:53:58 - newmusic.plex_client - DEBUG - search_tracks:340 - Stage 1 found 2 candidates. +2025-07-25 07:53:58 - newmusic.plex_client - INFO - search_tracks:344 - Found 2 candidates in Stage 1. Exiting early. +2025-07-25 07:53:58 - newmusic.plex_client - DEBUG - search_tracks:350 - Stored original track reference for 'Aether' (ratingKey: 155554) +2025-07-25 07:53:58 - newmusic.plex_client - DEBUG - search_tracks:350 - Stored original track reference for 'Aether (Slowed & Reverbed)' (ratingKey: 155575) +2025-07-25 07:53:58 - newmusic.sync_service - DEBUG - _find_track_in_plex:263 - Early confident match found for 'Aether' +2025-07-25 07:53:58 - newmusic.plex_client - DEBUG - search_tracks:332 - Stage 1: Searching for artist 'virtual mage' +2025-07-25 07:53:58 - newmusic.plex_client - DEBUG - search_tracks:340 - Stage 1 found 0 candidates. +2025-07-25 07:53:58 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'virtual mage astralchill' +2025-07-25 07:53:59 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'astralchill' +2025-07-25 07:54:00 - newmusic.plex_client - DEBUG - search_tracks:332 - Stage 1: Searching for artist 'virtual mage' +2025-07-25 07:54:00 - newmusic.plex_client - DEBUG - search_tracks:340 - Stage 1 found 2 candidates. +2025-07-25 07:54:00 - newmusic.plex_client - INFO - search_tracks:344 - Found 2 candidates in Stage 1. Exiting early. +2025-07-25 07:54:00 - newmusic.plex_client - DEBUG - search_tracks:350 - Stored original track reference for 'Astral Chill' (ratingKey: 155552) +2025-07-25 07:54:00 - newmusic.plex_client - DEBUG - search_tracks:350 - Stored original track reference for 'Astral Chill (The Present Sound Remix)' (ratingKey: 155577) +2025-07-25 07:54:00 - newmusic.sync_service - DEBUG - _find_track_in_plex:263 - Early confident match found for 'Astral Chill' +2025-07-25 07:54:00 - newmusic.plex_client - DEBUG - search_tracks:332 - Stage 1: Searching for artist 'virtual mage' +2025-07-25 07:54:00 - newmusic.plex_client - DEBUG - search_tracks:340 - Stage 1 found 0 candidates. +2025-07-25 07:54:00 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'virtual mage orbitlove' +2025-07-25 07:54:00 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'orbitlove' +2025-07-25 07:54:01 - newmusic.plex_client - DEBUG - search_tracks:332 - Stage 1: Searching for artist 'virtual mage' +2025-07-25 07:54:01 - newmusic.plex_client - DEBUG - search_tracks:340 - Stage 1 found 2 candidates. +2025-07-25 07:54:01 - newmusic.plex_client - INFO - search_tracks:344 - Found 2 candidates in Stage 1. Exiting early. +2025-07-25 07:54:01 - newmusic.plex_client - DEBUG - search_tracks:350 - Stored original track reference for 'Orbit Love' (ratingKey: 155537) +2025-07-25 07:54:01 - newmusic.plex_client - DEBUG - search_tracks:350 - Stored original track reference for 'Orbit Love (Lofi Edit)' (ratingKey: 155535) +2025-07-25 07:54:01 - newmusic.sync_service - DEBUG - _find_track_in_plex:263 - Early confident match found for 'Orbit Love' +2025-07-25 07:54:01 - newmusic.sync_service - INFO - sync_playlist:141 - Found 3 matches out of 3 tracks +2025-07-25 07:54:01 - newmusic.sync_service - INFO - sync_playlist:173 - Creating playlist with 3 matched tracks +2025-07-25 07:54:01 - newmusic.plex_client - INFO - update_playlist:277 - Playlist 'Aether' not found, creating new one +2025-07-25 07:54:01 - newmusic.plex_client - DEBUG - create_playlist:198 - Using stored track reference for: Aether by Virtual Mage (ratingKey: 155554) +2025-07-25 07:54:01 - newmusic.plex_client - DEBUG - create_playlist:198 - Using stored track reference for: Astral Chill (The Present Sound Remix) by Virtual Mage (ratingKey: 155577) +2025-07-25 07:54:01 - newmusic.plex_client - DEBUG - create_playlist:198 - Using stored track reference for: Orbit Love by Virtual Mage (ratingKey: 155537) +2025-07-25 07:54:01 - newmusic.plex_client - INFO - create_playlist:209 - Processed 3 input tracks, resulting in 3 valid Plex tracks for playlist 'Aether' +2025-07-25 07:54:01 - newmusic.plex_client - INFO - create_playlist:214 - Final validation: 3 valid tracks with ratingKeys +2025-07-25 07:54:01 - newmusic.plex_client - DEBUG - create_playlist:218 - About to create playlist with tracks: +2025-07-25 07:54:01 - newmusic.plex_client - DEBUG - create_playlist:220 - Track 1: Aether (type: , ratingKey: 155554) +2025-07-25 07:54:01 - newmusic.plex_client - DEBUG - create_playlist:220 - Track 2: Astral Chill (The Present Sound Remix) (type: , ratingKey: 155577) +2025-07-25 07:54:01 - newmusic.plex_client - DEBUG - create_playlist:220 - Track 3: Orbit Love (type: , ratingKey: 155537) +2025-07-25 07:54:01 - newmusic.plex_client - ERROR - create_playlist:227 - CreatePlaylist failed: Must include items to add when creating new playlist. +2025-07-25 07:54:01 - newmusic.plex_client - INFO - create_playlist:231 - Created playlist 'Aether' with 3 tracks (using items parameter) +2025-07-25 07:54:01 - newmusic.sync_service - INFO - sync_playlist:196 - Sync completed: 100.0% success rate +2025-07-25 07:54:16 - newmusic.sync_service - INFO - sync_playlist:94 - Starting sync for playlist: Extra Music +2025-07-25 07:54:16 - newmusic.plex_client - DEBUG - search_tracks:332 - Stage 1: Searching for artist 'cephas azariah' +2025-07-25 07:54:16 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'cephas azariah contours' +2025-07-25 07:54:17 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'contours' +2025-07-25 07:54:18 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Contours' (ratingKey: 476024) +2025-07-25 07:54:18 - newmusic.plex_client - INFO - search_tracks:390 - Found 1 total potential matches for 'contours' by 'cephas azariah' after all stages. +2025-07-25 07:54:18 - newmusic.sync_service - DEBUG - _find_track_in_plex:263 - Early confident match found for 'Contours' +2025-07-25 07:54:18 - newmusic.plex_client - DEBUG - search_tracks:332 - Stage 1: Searching for artist 'jack allenson' +2025-07-25 07:54:18 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'jack allenson hikingwithfriends' +2025-07-25 07:54:18 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'hikingwithfriends' +2025-07-25 07:54:19 - newmusic.plex_client - DEBUG - search_tracks:332 - Stage 1: Searching for artist 'jack allenson' +2025-07-25 07:54:19 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'jack allenson hiking with friends' +2025-07-25 07:54:20 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'hiking with friends' +2025-07-25 07:54:20 - newmusic.sync_service - DEBUG - _find_track_in_plex:272 - No artist-based matches found. Using title-only fallback for 'Hiking With Friends' +2025-07-25 07:54:20 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'hikingwithfriends' +2025-07-25 07:54:21 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'hikingwithfriends' +2025-07-25 07:54:22 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'hiking with friends' +2025-07-25 07:54:23 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'hiking with friends' +2025-07-25 07:54:23 - newmusic.sync_service - DEBUG - _find_track_in_plex:290 - No Plex candidates found for 'Hiking With Friends' +2025-07-25 07:54:23 - newmusic.plex_client - DEBUG - search_tracks:332 - Stage 1: Searching for artist 'jonsi' +2025-07-25 07:54:23 - newmusic.plex_client - DEBUG - search_tracks:340 - Stage 1 found 0 candidates. +2025-07-25 07:54:23 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'jonsi foresttrill' +2025-07-25 07:54:24 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'foresttrill' +2025-07-25 07:54:25 - newmusic.plex_client - DEBUG - search_tracks:332 - Stage 1: Searching for artist 'jonsi' +2025-07-25 07:54:25 - newmusic.plex_client - DEBUG - search_tracks:340 - Stage 1 found 0 candidates. +2025-07-25 07:54:25 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'jonsi forest trill' +2025-07-25 07:54:25 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'forest trill' +2025-07-25 07:54:26 - newmusic.sync_service - DEBUG - _find_track_in_plex:272 - No artist-based matches found. Using title-only fallback for 'Forest Trill' +2025-07-25 07:54:26 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'foresttrill' +2025-07-25 07:54:27 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'foresttrill' +2025-07-25 07:54:28 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'forest trill' +2025-07-25 07:54:28 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'forest trill' +2025-07-25 07:54:29 - newmusic.sync_service - DEBUG - _find_track_in_plex:290 - No Plex candidates found for 'Forest Trill' +2025-07-25 07:54:29 - newmusic.plex_client - DEBUG - search_tracks:332 - Stage 1: Searching for artist 'alaskan tapes' +2025-07-25 07:54:29 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'alaskan tapes lightdivides' +2025-07-25 07:54:30 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'lightdivides' +2025-07-25 07:54:30 - newmusic.plex_client - DEBUG - search_tracks:332 - Stage 1: Searching for artist 'alaskan tapes' +2025-07-25 07:54:30 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'alaskan tapes light divides' +2025-07-25 07:54:31 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'light divides' +2025-07-25 07:54:32 - newmusic.sync_service - DEBUG - _find_track_in_plex:272 - No artist-based matches found. Using title-only fallback for 'Light Divides' +2025-07-25 07:54:32 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'lightdivides' +2025-07-25 07:54:32 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'lightdivides' +2025-07-25 07:54:33 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'light divides' +2025-07-25 07:54:34 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'light divides' +2025-07-25 07:54:34 - newmusic.sync_service - DEBUG - _find_track_in_plex:290 - No Plex candidates found for 'Light Divides' +2025-07-25 07:54:34 - newmusic.plex_client - DEBUG - search_tracks:332 - Stage 1: Searching for artist 'center of attention' +2025-07-25 07:54:34 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'center of attention meetmebytheocean' +2025-07-25 07:54:35 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'meetmebytheocean' +2025-07-25 07:54:36 - newmusic.plex_client - DEBUG - search_tracks:332 - Stage 1: Searching for artist 'center of attention' +2025-07-25 07:54:36 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'center of attention meet me by the ocean' +2025-07-25 07:54:36 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'meet me by the ocean' +2025-07-25 07:54:37 - newmusic.plex_client - DEBUG - search_tracks:332 - Stage 1: Searching for artist 'naturel' +2025-07-25 07:54:37 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'naturel meetmebytheocean' +2025-07-25 07:54:38 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'meetmebytheocean' +2025-07-25 07:54:39 - newmusic.plex_client - DEBUG - search_tracks:332 - Stage 1: Searching for artist 'naturel' +2025-07-25 07:54:39 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'naturel meet me by the ocean' +2025-07-25 07:54:39 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'meet me by the ocean' +2025-07-25 07:54:40 - newmusic.sync_service - DEBUG - _find_track_in_plex:272 - No artist-based matches found. Using title-only fallback for 'Meet Me By The Ocean' +2025-07-25 07:54:40 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'meetmebytheocean' +2025-07-25 07:54:41 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'meetmebytheocean' +2025-07-25 07:54:41 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'meet me by the ocean' +2025-07-25 07:54:42 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'meet me by the ocean' +2025-07-25 07:54:43 - newmusic.sync_service - DEBUG - _find_track_in_plex:290 - No Plex candidates found for 'Meet Me By The Ocean' +2025-07-25 07:54:43 - newmusic.plex_client - DEBUG - search_tracks:332 - Stage 1: Searching for artist 'little symphony' +2025-07-25 07:54:43 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'little symphony gaia' +2025-07-25 07:54:43 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'gaia' +2025-07-25 07:54:45 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Gaia' (ratingKey: 400009) +2025-07-25 07:54:45 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Gaia' (ratingKey: 400040) +2025-07-25 07:54:45 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'All Sleeping (Desert Dwellers Remix)' (ratingKey: 426333) +2025-07-25 07:54:45 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Shiva Nataraj (Banco de Gaia Remix)' (ratingKey: 426337) +2025-07-25 07:54:45 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Gaia' (ratingKey: 366182) +2025-07-25 07:54:45 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Gaia' (ratingKey: 452016) +2025-07-25 07:54:45 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Gaia's Soul' (ratingKey: 385789) +2025-07-25 07:54:45 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Gaia' (ratingKey: 341556) +2025-07-25 07:54:45 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Gaia' (ratingKey: 392205) +2025-07-25 07:54:45 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Gaïa' (ratingKey: 146341) +2025-07-25 07:54:45 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Gaia' (ratingKey: 322797) +2025-07-25 07:54:45 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Gaïa' (ratingKey: 498005) +2025-07-25 07:54:45 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'GAIA!' (ratingKey: 445768) +2025-07-25 07:54:45 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Gaia' (ratingKey: 200033) +2025-07-25 07:54:45 - newmusic.plex_client - INFO - search_tracks:390 - Found 14 total potential matches for 'gaia' by 'little symphony' after all stages. +2025-07-25 07:54:45 - newmusic.sync_service - DEBUG - _find_track_in_plex:263 - Early confident match found for 'Gaia' +2025-07-25 07:54:45 - newmusic.plex_client - DEBUG - search_tracks:332 - Stage 1: Searching for artist 'neighborhood libraries' +2025-07-25 07:54:45 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'neighborhood libraries hetwed' +2025-07-25 07:54:46 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'hetwed' +2025-07-25 07:54:47 - newmusic.plex_client - DEBUG - search_tracks:332 - Stage 1: Searching for artist 'neighborhood libraries' +2025-07-25 07:54:47 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'neighborhood libraries het wed' +2025-07-25 07:54:47 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'het wed' +2025-07-25 07:54:48 - newmusic.sync_service - DEBUG - _find_track_in_plex:272 - No artist-based matches found. Using title-only fallback for 'Het Wed' +2025-07-25 07:54:48 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'hetwed' +2025-07-25 07:54:49 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'hetwed' +2025-07-25 07:54:49 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'het wed' +2025-07-25 07:54:50 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'het wed' +2025-07-25 07:54:51 - newmusic.sync_service - DEBUG - _find_track_in_plex:290 - No Plex candidates found for 'Het Wed' +2025-07-25 07:54:51 - newmusic.plex_client - DEBUG - search_tracks:332 - Stage 1: Searching for artist 'long lake' +2025-07-25 07:54:51 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'long lake rebirth' +2025-07-25 07:54:52 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'rebirth' +2025-07-25 07:54:53 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Rite of Rebirth' (ratingKey: 290179) +2025-07-25 07:54:53 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Rebirth' (ratingKey: 288164) +2025-07-25 07:54:53 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'rebirth' (ratingKey: 287081) +2025-07-25 07:54:53 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Rebirth (Gaudium Remix)' (ratingKey: 286274) +2025-07-25 07:54:53 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Rebirth' (ratingKey: 373435) +2025-07-25 07:54:53 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Rebirth' (ratingKey: 316596) +2025-07-25 07:54:53 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Rebirth' (ratingKey: 270090) +2025-07-25 07:54:53 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Rebirth' (ratingKey: 199405) +2025-07-25 07:54:53 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Rebirth' (ratingKey: 389342) +2025-07-25 07:54:53 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Rebirth' (ratingKey: 338225) +2025-07-25 07:54:53 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Rebirth' (ratingKey: 424474) +2025-07-25 07:54:53 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'United in Dance (Phoenix Lord Rebirth)' (ratingKey: 190049) +2025-07-25 07:54:53 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Hanami' (ratingKey: 200592) +2025-07-25 07:54:53 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Kodama' (ratingKey: 200598) +2025-07-25 07:54:53 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Lotus Eater' (ratingKey: 200589) +2025-07-25 07:54:53 - newmusic.plex_client - INFO - search_tracks:390 - Found 15 total potential matches for 'rebirth' by 'long lake' after all stages. +2025-07-25 07:54:53 - newmusic.sync_service - DEBUG - _find_track_in_plex:263 - Early confident match found for 'Rebirth' +2025-07-25 07:54:53 - newmusic.plex_client - DEBUG - search_tracks:332 - Stage 1: Searching for artist 'nairuz' +2025-07-25 07:54:53 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'nairuz intentions' +2025-07-25 07:54:54 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'intentions' +2025-07-25 07:54:56 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Good Intentions' (ratingKey: 290602) +2025-07-25 07:54:56 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Good Intentions' (ratingKey: 290655) +2025-07-25 07:54:56 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Good Intentions' (ratingKey: 272089) +2025-07-25 07:54:56 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Good Intentions' (ratingKey: 272095) +2025-07-25 07:54:56 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Intentions' (ratingKey: 270360) +2025-07-25 07:54:56 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'intentions' (ratingKey: 421771) +2025-07-25 07:54:56 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Good Intentions' (ratingKey: 350916) +2025-07-25 07:54:56 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Clear Intentions (Extended Mix)' (ratingKey: 255971) +2025-07-25 07:54:56 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Clear Intentions (Radio Mix)' (ratingKey: 255972) +2025-07-25 07:54:56 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Anytime Is House (feat. Rowetta) (Mixed)' (ratingKey: 480106) +2025-07-25 07:54:56 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Good Intentions' (ratingKey: 434979) +2025-07-25 07:54:56 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Intentions' (ratingKey: 235912) +2025-07-25 07:54:56 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Intentions' (ratingKey: 349023) +2025-07-25 07:54:56 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Intentions' (ratingKey: 348861) +2025-07-25 07:54:56 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Intentions (Acoustic)' (ratingKey: 348855) +2025-07-25 07:54:56 - newmusic.plex_client - INFO - search_tracks:390 - Found 15 total potential matches for 'intentions' by 'nairuz' after all stages. +2025-07-25 07:54:56 - newmusic.sync_service - DEBUG - _find_track_in_plex:263 - Early confident match found for 'Intentions' +2025-07-25 07:54:56 - newmusic.plex_client - DEBUG - search_tracks:332 - Stage 1: Searching for artist 'imaginary softwoods' +2025-07-25 07:54:56 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'imaginary softwoods enkojiloop' +2025-07-25 07:54:56 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'enkojiloop' +2025-07-25 07:54:57 - newmusic.plex_client - DEBUG - search_tracks:332 - Stage 1: Searching for artist 'imaginary softwoods' +2025-07-25 07:54:57 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'imaginary softwoods enko-ji loop' +2025-07-25 07:54:58 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'enko-ji loop' +2025-07-25 07:54:59 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'enkojiloop' +2025-07-25 07:54:59 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'enkojiloop' +2025-07-25 07:55:00 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'enko-ji loop' +2025-07-25 07:55:01 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'enko-ji loop' +2025-07-25 07:55:01 - newmusic.plex_client - DEBUG - search_tracks:332 - Stage 1: Searching for artist 'alyas' +2025-07-25 07:55:01 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'alyas idyll' +2025-07-25 07:55:02 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'idyll' +2025-07-25 07:55:04 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Idyll' (ratingKey: 287455) +2025-07-25 07:55:04 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Pièces Pittoresques : Idylle' (ratingKey: 275900) +2025-07-25 07:55:04 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Chabrier: 10 Pièces pittoresques: No. 6, Idylle' (ratingKey: 276705) +2025-07-25 07:55:04 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Avant-dernières Pensées : I. Idylle' (ratingKey: 276293) +2025-07-25 07:55:04 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Avant-dernières Pensées: I. Idylle' (ratingKey: 276450) +2025-07-25 07:55:04 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Siegfried Idyll' (ratingKey: 390463) +2025-07-25 07:55:04 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'nymph’s spell' (ratingKey: 351596) +2025-07-25 07:55:04 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'then and now' (ratingKey: 351597) +2025-07-25 07:55:04 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'We All Feel Darkness' (ratingKey: 273234) +2025-07-25 07:55:04 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Idylle' (ratingKey: 455618) +2025-07-25 07:55:04 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Idyll' (ratingKey: 484814) +2025-07-25 07:55:04 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Idyll' (ratingKey: 484786) +2025-07-25 07:55:04 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Almost Idyllic' (ratingKey: 239437) +2025-07-25 07:55:04 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Pulse' (ratingKey: 264672) +2025-07-25 07:55:04 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Fading' (ratingKey: 264676) +2025-07-25 07:55:04 - newmusic.plex_client - INFO - search_tracks:390 - Found 15 total potential matches for 'idyll' by 'alyas' after all stages. +2025-07-25 07:55:04 - newmusic.sync_service - DEBUG - _find_track_in_plex:263 - Early confident match found for 'Idyll' +2025-07-25 07:55:04 - newmusic.plex_client - DEBUG - search_tracks:332 - Stage 1: Searching for artist 'v e n n' +2025-07-25 07:55:04 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'v e n n viridian' +2025-07-25 07:55:05 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'viridian' +2025-07-25 07:55:05 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Viridian Genesis' (ratingKey: 269653) +2025-07-25 07:55:05 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'The Viridian Wave' (ratingKey: 261853) +2025-07-25 07:55:05 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Viridian Dream' (ratingKey: 161907) +2025-07-25 07:55:05 - newmusic.plex_client - INFO - search_tracks:390 - Found 3 total potential matches for 'viridian' by 'v e n n' after all stages. +2025-07-25 07:55:05 - newmusic.plex_client - DEBUG - search_tracks:332 - Stage 1: Searching for artist 'sound therapist' +2025-07-25 07:55:06 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'sound therapist viridian' +2025-07-25 07:55:06 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'viridian' +2025-07-25 07:55:07 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Viridian Genesis' (ratingKey: 269653) +2025-07-25 07:55:07 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'The Viridian Wave' (ratingKey: 261853) +2025-07-25 07:55:07 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Viridian Dream' (ratingKey: 161907) +2025-07-25 07:55:07 - newmusic.plex_client - INFO - search_tracks:390 - Found 3 total potential matches for 'viridian' by 'sound therapist' after all stages. +2025-07-25 07:55:07 - newmusic.sync_service - DEBUG - _find_track_in_plex:299 - No confident match for 'Viridian' (best score: 0.58) +2025-07-25 07:55:07 - newmusic.plex_client - DEBUG - search_tracks:332 - Stage 1: Searching for artist 'le code' +2025-07-25 07:55:07 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'le code wavesarespeaking' +2025-07-25 07:55:08 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'wavesarespeaking' +2025-07-25 07:55:08 - newmusic.plex_client - DEBUG - search_tracks:332 - Stage 1: Searching for artist 'le code' +2025-07-25 07:55:08 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'le code waves are speaking' +2025-07-25 07:55:09 - newmusic.sync_service - INFO - cancel_sync:57 - PlaylistSyncService.cancel_sync() called - setting cancellation flag +2025-07-25 07:55:09 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'waves are speaking' +2025-07-25 07:55:10 - newmusic.sync_service - DEBUG - _find_track_in_plex:251 - Sync cancelled after search for 'Waves Are Speaking' +2025-07-25 07:55:15 - newmusic.main - INFO - closeEvent:176 - Closing application... +2025-07-25 07:55:15 - newmusic.main - INFO - closeEvent:181 - Cleaning up Downloads page threads... +2025-07-25 07:55:15 - newmusic.main - INFO - closeEvent:186 - Stopping status monitoring thread... +2025-07-25 07:55:17 - newmusic.main - INFO - closeEvent:191 - Closing Soulseek client... +2025-07-25 07:55:17 - newmusic.main - INFO - closeEvent:197 - Application closed successfully +2025-07-25 07:55:20 - newmusic - INFO - setup_logging:57 - Logging initialized with level: DEBUG +2025-07-25 07:55:20 - newmusic.main - INFO - main:211 - Starting NewMusic application +2025-07-25 07:55:20 - newmusic.spotify_client - INFO - _setup_client:179 - Spotify client initialized (user info will be fetched when needed) +2025-07-25 07:55:20 - newmusic.soulseek_client - INFO - _setup_client:220 - Soulseek client configured with slskd at http://localhost:5030 +2025-07-25 07:55:20 - newmusic.spotify_client - INFO - _setup_client:179 - Spotify client initialized (user info will be fetched when needed) +2025-07-25 07:55:21 - newmusic.main - INFO - change_page:163 - Changed to page: dashboard +2025-07-25 07:55:21 - newmusic.main - INFO - setup_media_player_connections:150 - Media player connections established between sidebar and downloads page +2025-07-25 07:55:21 - newmusic.plex_client - INFO - _find_music_library:127 - Found music library: Music +2025-07-25 07:55:21 - newmusic.plex_client - INFO - _setup_client:113 - Successfully connected to Plex server: PLEX-MACHINE +2025-07-25 07:55:23 - newmusic.main - INFO - change_page:163 - Changed to page: sync +2025-07-25 07:55:23 - newmusic.spotify_client - INFO - _ensure_user_id:195 - Successfully authenticated with Spotify as broquethomas +2025-07-25 07:55:23 - newmusic.spotify_client - INFO - get_user_playlists_metadata_only:256 - Retrieved 8 playlist metadata (first batch) +2025-07-25 07:55:26 - newmusic.sync_service - INFO - sync_playlist:94 - Starting sync for playlist: Extra Music +2025-07-25 07:55:26 - newmusic.plex_client - DEBUG - search_tracks:332 - Stage 1: Searching for artist 'cephas azariah' +2025-07-25 07:55:26 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'cephas azariah contours' +2025-07-25 07:55:26 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'contours' +2025-07-25 07:55:27 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Contours' (ratingKey: 476024) +2025-07-25 07:55:27 - newmusic.plex_client - INFO - search_tracks:390 - Found 1 total potential matches for 'contours' by 'cephas azariah' after all stages. +2025-07-25 07:55:27 - newmusic.sync_service - DEBUG - _find_track_in_plex:263 - Early confident match found for 'Contours' +2025-07-25 07:55:27 - newmusic.plex_client - DEBUG - search_tracks:332 - Stage 1: Searching for artist 'jack allenson' +2025-07-25 07:55:27 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'jack allenson hikingwithfriends' +2025-07-25 07:55:28 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'hikingwithfriends' +2025-07-25 07:55:28 - newmusic.plex_client - DEBUG - search_tracks:332 - Stage 1: Searching for artist 'jack allenson' +2025-07-25 07:55:28 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'jack allenson hiking with friends' +2025-07-25 07:55:29 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'hiking with friends' +2025-07-25 07:55:30 - newmusic.sync_service - DEBUG - _find_track_in_plex:272 - No artist-based matches found. Using title-only fallback for 'Hiking With Friends' +2025-07-25 07:55:30 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'hikingwithfriends' +2025-07-25 07:55:30 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'hikingwithfriends' +2025-07-25 07:55:31 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'hiking with friends' +2025-07-25 07:55:32 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'hiking with friends' +2025-07-25 07:55:32 - newmusic.sync_service - DEBUG - _find_track_in_plex:290 - No Plex candidates found for 'Hiking With Friends' +2025-07-25 07:55:32 - newmusic.plex_client - DEBUG - search_tracks:332 - Stage 1: Searching for artist 'jonsi' +2025-07-25 07:55:32 - newmusic.plex_client - DEBUG - search_tracks:340 - Stage 1 found 0 candidates. +2025-07-25 07:55:32 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'jonsi foresttrill' +2025-07-25 07:55:33 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'foresttrill' +2025-07-25 07:55:34 - newmusic.plex_client - DEBUG - search_tracks:332 - Stage 1: Searching for artist 'jonsi' +2025-07-25 07:55:34 - newmusic.plex_client - DEBUG - search_tracks:340 - Stage 1 found 0 candidates. +2025-07-25 07:55:34 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'jonsi forest trill' +2025-07-25 07:55:35 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'forest trill' +2025-07-25 07:55:35 - newmusic.sync_service - DEBUG - _find_track_in_plex:272 - No artist-based matches found. Using title-only fallback for 'Forest Trill' +2025-07-25 07:55:35 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'foresttrill' +2025-07-25 07:55:36 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'foresttrill' +2025-07-25 07:55:37 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'forest trill' +2025-07-25 07:55:37 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'forest trill' +2025-07-25 07:55:38 - newmusic.sync_service - DEBUG - _find_track_in_plex:290 - No Plex candidates found for 'Forest Trill' +2025-07-25 07:55:38 - newmusic.plex_client - DEBUG - search_tracks:332 - Stage 1: Searching for artist 'alaskan tapes' +2025-07-25 07:55:38 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'alaskan tapes lightdivides' +2025-07-25 07:55:39 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'lightdivides' +2025-07-25 07:55:39 - newmusic.plex_client - DEBUG - search_tracks:332 - Stage 1: Searching for artist 'alaskan tapes' +2025-07-25 07:55:39 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'alaskan tapes light divides' +2025-07-25 07:55:40 - newmusic.sync_service - INFO - cancel_sync:57 - PlaylistSyncService.cancel_sync() called - setting cancellation flag +2025-07-25 07:55:40 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'light divides' +2025-07-25 07:55:41 - newmusic.sync_service - DEBUG - _find_track_in_plex:251 - Sync cancelled after search for 'Light Divides' +2025-07-25 07:55:41 - newmusic.sync_service - INFO - sync_playlist:94 - Starting sync for playlist: Extra Music +2025-07-25 07:55:41 - newmusic.plex_client - DEBUG - search_tracks:332 - Stage 1: Searching for artist 'cephas azariah' +2025-07-25 07:55:41 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'cephas azariah contours' +2025-07-25 07:55:42 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'contours' +2025-07-25 07:55:43 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Contours' (ratingKey: 476024) +2025-07-25 07:55:43 - newmusic.plex_client - INFO - search_tracks:390 - Found 1 total potential matches for 'contours' by 'cephas azariah' after all stages. +2025-07-25 07:55:43 - newmusic.sync_service - DEBUG - _find_track_in_plex:263 - Early confident match found for 'Contours' +2025-07-25 07:55:43 - newmusic.plex_client - DEBUG - search_tracks:332 - Stage 1: Searching for artist 'jack allenson' +2025-07-25 07:55:43 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'jack allenson hikingwithfriends' +2025-07-25 07:55:43 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'hikingwithfriends' +2025-07-25 07:55:43 - newmusic.sync_service - INFO - cancel_sync:57 - PlaylistSyncService.cancel_sync() called - setting cancellation flag +2025-07-25 07:55:44 - newmusic.sync_service - DEBUG - _find_track_in_plex:251 - Sync cancelled after search for 'Hiking With Friends' +2025-07-25 07:57:14 - newmusic.main - INFO - closeEvent:176 - Closing application... +2025-07-25 07:57:14 - newmusic.main - INFO - closeEvent:181 - Cleaning up Downloads page threads... +2025-07-25 07:57:14 - newmusic.main - INFO - closeEvent:186 - Stopping status monitoring thread... +2025-07-25 07:57:16 - newmusic.main - INFO - closeEvent:191 - Closing Soulseek client... +2025-07-25 07:57:16 - newmusic.main - INFO - closeEvent:197 - Application closed successfully +2025-07-25 07:57:18 - newmusic - INFO - setup_logging:57 - Logging initialized with level: DEBUG +2025-07-25 07:57:18 - newmusic.main - INFO - main:211 - Starting NewMusic application +2025-07-25 07:57:18 - newmusic.spotify_client - INFO - _setup_client:179 - Spotify client initialized (user info will be fetched when needed) +2025-07-25 07:57:18 - newmusic.soulseek_client - INFO - _setup_client:220 - Soulseek client configured with slskd at http://localhost:5030 +2025-07-25 07:57:18 - newmusic.spotify_client - INFO - _setup_client:179 - Spotify client initialized (user info will be fetched when needed) +2025-07-25 07:57:20 - newmusic.main - INFO - change_page:163 - Changed to page: dashboard +2025-07-25 07:57:20 - newmusic.main - INFO - setup_media_player_connections:150 - Media player connections established between sidebar and downloads page +2025-07-25 07:57:20 - newmusic.plex_client - INFO - _find_music_library:127 - Found music library: Music +2025-07-25 07:57:20 - newmusic.plex_client - INFO - _setup_client:113 - Successfully connected to Plex server: PLEX-MACHINE +2025-07-25 07:57:21 - newmusic.main - INFO - change_page:163 - Changed to page: sync +2025-07-25 07:57:21 - newmusic.spotify_client - INFO - _ensure_user_id:195 - Successfully authenticated with Spotify as broquethomas +2025-07-25 07:57:22 - newmusic.spotify_client - INFO - get_user_playlists_metadata_only:256 - Retrieved 8 playlist metadata (first batch) +2025-07-25 07:57:24 - newmusic.sync_service - INFO - sync_playlist:94 - Starting sync for playlist: Extra Music +2025-07-25 07:57:24 - newmusic.plex_client - DEBUG - search_tracks:332 - Stage 1: Searching for artist 'cephas azariah' +2025-07-25 07:57:24 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'cephas azariah contours' +2025-07-25 07:57:25 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'contours' +2025-07-25 07:57:25 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Contours' (ratingKey: 476024) +2025-07-25 07:57:25 - newmusic.plex_client - INFO - search_tracks:390 - Found 1 total potential matches for 'contours' by 'cephas azariah' after all stages. +2025-07-25 07:57:25 - newmusic.sync_service - DEBUG - _find_track_in_plex:263 - Early confident match found for 'Contours' +2025-07-25 07:57:25 - newmusic.plex_client - DEBUG - search_tracks:332 - Stage 1: Searching for artist 'jack allenson' +2025-07-25 07:57:25 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'jack allenson hikingwithfriends' +2025-07-25 07:57:26 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'hikingwithfriends' +2025-07-25 07:57:27 - newmusic.plex_client - DEBUG - search_tracks:332 - Stage 1: Searching for artist 'jack allenson' +2025-07-25 07:57:27 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'jack allenson hiking with friends' +2025-07-25 07:57:27 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'hiking with friends' +2025-07-25 07:57:28 - newmusic.sync_service - DEBUG - _find_track_in_plex:272 - No artist-based matches found. Using title-only fallback for 'Hiking With Friends' +2025-07-25 07:57:28 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'hikingwithfriends' +2025-07-25 07:57:29 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'hikingwithfriends' +2025-07-25 07:57:29 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'hiking with friends' +2025-07-25 07:57:30 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'hiking with friends' +2025-07-25 07:57:31 - newmusic.sync_service - DEBUG - _find_track_in_plex:290 - No Plex candidates found for 'Hiking With Friends' +2025-07-25 07:57:31 - newmusic.plex_client - DEBUG - search_tracks:332 - Stage 1: Searching for artist 'jonsi' +2025-07-25 07:57:31 - newmusic.plex_client - DEBUG - search_tracks:340 - Stage 1 found 0 candidates. +2025-07-25 07:57:31 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'jonsi foresttrill' +2025-07-25 07:57:31 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'foresttrill' +2025-07-25 07:57:32 - newmusic.plex_client - DEBUG - search_tracks:332 - Stage 1: Searching for artist 'jonsi' +2025-07-25 07:57:32 - newmusic.plex_client - DEBUG - search_tracks:340 - Stage 1 found 0 candidates. +2025-07-25 07:57:32 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'jonsi forest trill' +2025-07-25 07:57:33 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'forest trill' +2025-07-25 07:57:34 - newmusic.sync_service - DEBUG - _find_track_in_plex:272 - No artist-based matches found. Using title-only fallback for 'Forest Trill' +2025-07-25 07:57:34 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'foresttrill' +2025-07-25 07:57:34 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'foresttrill' +2025-07-25 07:57:35 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'forest trill' +2025-07-25 07:57:36 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'forest trill' +2025-07-25 07:57:36 - newmusic.sync_service - DEBUG - _find_track_in_plex:290 - No Plex candidates found for 'Forest Trill' +2025-07-25 07:57:36 - newmusic.plex_client - DEBUG - search_tracks:332 - Stage 1: Searching for artist 'alaskan tapes' +2025-07-25 07:57:36 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'alaskan tapes lightdivides' +2025-07-25 07:57:37 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'lightdivides' +2025-07-25 07:57:38 - newmusic.plex_client - DEBUG - search_tracks:332 - Stage 1: Searching for artist 'alaskan tapes' +2025-07-25 07:57:38 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'alaskan tapes light divides' +2025-07-25 07:57:38 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'light divides' +2025-07-25 07:57:39 - newmusic.sync_service - DEBUG - _find_track_in_plex:272 - No artist-based matches found. Using title-only fallback for 'Light Divides' +2025-07-25 07:57:39 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'lightdivides' +2025-07-25 07:57:40 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'lightdivides' +2025-07-25 07:57:40 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'light divides' +2025-07-25 07:57:41 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'light divides' +2025-07-25 07:57:42 - newmusic.sync_service - DEBUG - _find_track_in_plex:290 - No Plex candidates found for 'Light Divides' +2025-07-25 07:57:42 - newmusic.plex_client - DEBUG - search_tracks:332 - Stage 1: Searching for artist 'center of attention' +2025-07-25 07:57:42 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'center of attention meetmebytheocean' +2025-07-25 07:57:42 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'meetmebytheocean' +2025-07-25 07:57:43 - newmusic.plex_client - DEBUG - search_tracks:332 - Stage 1: Searching for artist 'center of attention' +2025-07-25 07:57:43 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'center of attention meet me by the ocean' +2025-07-25 07:57:44 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'meet me by the ocean' +2025-07-25 07:57:44 - newmusic.plex_client - DEBUG - search_tracks:332 - Stage 1: Searching for artist 'naturel' +2025-07-25 07:57:45 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'naturel meetmebytheocean' +2025-07-25 07:57:45 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'meetmebytheocean' +2025-07-25 07:57:46 - newmusic.plex_client - DEBUG - search_tracks:332 - Stage 1: Searching for artist 'naturel' +2025-07-25 07:57:46 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'naturel meet me by the ocean' +2025-07-25 07:57:47 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'meet me by the ocean' +2025-07-25 07:57:47 - newmusic.sync_service - DEBUG - _find_track_in_plex:272 - No artist-based matches found. Using title-only fallback for 'Meet Me By The Ocean' +2025-07-25 07:57:47 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'meetmebytheocean' +2025-07-25 07:57:48 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'meetmebytheocean' +2025-07-25 07:57:49 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'meet me by the ocean' +2025-07-25 07:57:49 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'meet me by the ocean' +2025-07-25 07:57:50 - newmusic.sync_service - DEBUG - _find_track_in_plex:290 - No Plex candidates found for 'Meet Me By The Ocean' +2025-07-25 07:57:50 - newmusic.plex_client - DEBUG - search_tracks:332 - Stage 1: Searching for artist 'little symphony' +2025-07-25 07:57:50 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'little symphony gaia' +2025-07-25 07:57:51 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'gaia' +2025-07-25 07:57:51 - newmusic.sync_service - INFO - cancel_sync:57 - PlaylistSyncService.cancel_sync() called - setting cancellation flag +2025-07-25 07:57:52 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Gaia' (ratingKey: 400009) +2025-07-25 07:57:52 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Gaia' (ratingKey: 400040) +2025-07-25 07:57:52 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'All Sleeping (Desert Dwellers Remix)' (ratingKey: 426333) +2025-07-25 07:57:52 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Shiva Nataraj (Banco de Gaia Remix)' (ratingKey: 426337) +2025-07-25 07:57:52 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Gaia' (ratingKey: 366182) +2025-07-25 07:57:52 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Gaia' (ratingKey: 452016) +2025-07-25 07:57:52 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Gaia's Soul' (ratingKey: 385789) +2025-07-25 07:57:52 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Gaia' (ratingKey: 341556) +2025-07-25 07:57:52 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Gaia' (ratingKey: 392205) +2025-07-25 07:57:52 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Gaïa' (ratingKey: 146341) +2025-07-25 07:57:52 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Gaia' (ratingKey: 322797) +2025-07-25 07:57:52 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Gaïa' (ratingKey: 498005) +2025-07-25 07:57:52 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'GAIA!' (ratingKey: 445768) +2025-07-25 07:57:52 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Gaia' (ratingKey: 200033) +2025-07-25 07:57:52 - newmusic.plex_client - INFO - search_tracks:390 - Found 14 total potential matches for 'gaia' by 'little symphony' after all stages. +2025-07-25 07:57:52 - newmusic.sync_service - DEBUG - _find_track_in_plex:251 - Sync cancelled after search for 'Gaia' +2025-07-25 07:59:29 - newmusic.main - INFO - closeEvent:176 - Closing application... +2025-07-25 07:59:29 - newmusic.main - INFO - closeEvent:181 - Cleaning up Downloads page threads... +2025-07-25 07:59:29 - newmusic.main - INFO - closeEvent:186 - Stopping status monitoring thread... +2025-07-25 07:59:32 - newmusic.main - INFO - closeEvent:191 - Closing Soulseek client... +2025-07-25 07:59:32 - newmusic.main - INFO - closeEvent:197 - Application closed successfully +2025-07-25 07:59:34 - newmusic - INFO - setup_logging:57 - Logging initialized with level: DEBUG +2025-07-25 07:59:34 - newmusic.main - INFO - main:211 - Starting NewMusic application +2025-07-25 07:59:35 - newmusic.spotify_client - INFO - _setup_client:179 - Spotify client initialized (user info will be fetched when needed) +2025-07-25 07:59:35 - newmusic.soulseek_client - INFO - _setup_client:220 - Soulseek client configured with slskd at http://localhost:5030 +2025-07-25 07:59:35 - newmusic.spotify_client - INFO - _setup_client:179 - Spotify client initialized (user info will be fetched when needed) +2025-07-25 07:59:35 - newmusic.main - INFO - change_page:163 - Changed to page: dashboard +2025-07-25 07:59:35 - newmusic.main - INFO - setup_media_player_connections:150 - Media player connections established between sidebar and downloads page +2025-07-25 07:59:36 - newmusic.plex_client - INFO - _find_music_library:127 - Found music library: Music +2025-07-25 07:59:36 - newmusic.plex_client - INFO - _setup_client:113 - Successfully connected to Plex server: PLEX-MACHINE +2025-07-25 07:59:37 - newmusic.main - INFO - change_page:163 - Changed to page: sync +2025-07-25 07:59:37 - newmusic.spotify_client - INFO - _ensure_user_id:195 - Successfully authenticated with Spotify as broquethomas +2025-07-25 07:59:37 - newmusic.spotify_client - INFO - get_user_playlists_metadata_only:256 - Retrieved 8 playlist metadata (first batch) +2025-07-25 07:59:43 - newmusic.sync_service - INFO - sync_playlist:94 - Starting sync for playlist: Extra Music +2025-07-25 07:59:43 - newmusic.plex_client - DEBUG - search_tracks:332 - Stage 1: Searching for artist 'cephas azariah' +2025-07-25 07:59:43 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'cephas azariah contours' +2025-07-25 07:59:43 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'contours' +2025-07-25 07:59:44 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Contours' (ratingKey: 476024) +2025-07-25 07:59:44 - newmusic.plex_client - INFO - search_tracks:390 - Found 1 total potential matches for 'contours' by 'cephas azariah' after all stages. +2025-07-25 07:59:44 - newmusic.sync_service - DEBUG - _find_track_in_plex:263 - Early confident match found for 'Contours' +2025-07-25 07:59:44 - newmusic.plex_client - DEBUG - search_tracks:332 - Stage 1: Searching for artist 'jack allenson' +2025-07-25 07:59:44 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'jack allenson hikingwithfriends' +2025-07-25 07:59:45 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'hikingwithfriends' +2025-07-25 07:59:45 - newmusic.plex_client - DEBUG - search_tracks:332 - Stage 1: Searching for artist 'jack allenson' +2025-07-25 07:59:45 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'jack allenson hiking with friends' +2025-07-25 07:59:46 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'hiking with friends' +2025-07-25 07:59:47 - newmusic.sync_service - DEBUG - _find_track_in_plex:272 - No artist-based matches found. Using title-only fallback for 'Hiking With Friends' +2025-07-25 07:59:47 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'hikingwithfriends' +2025-07-25 07:59:47 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'hikingwithfriends' +2025-07-25 07:59:48 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'hiking with friends' +2025-07-25 07:59:49 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'hiking with friends' +2025-07-25 07:59:49 - newmusic.sync_service - DEBUG - _find_track_in_plex:290 - No Plex candidates found for 'Hiking With Friends' +2025-07-25 07:59:49 - newmusic.plex_client - DEBUG - search_tracks:332 - Stage 1: Searching for artist 'jonsi' +2025-07-25 07:59:49 - newmusic.plex_client - DEBUG - search_tracks:340 - Stage 1 found 0 candidates. +2025-07-25 07:59:49 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'jonsi foresttrill' +2025-07-25 07:59:50 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'foresttrill' +2025-07-25 07:59:51 - newmusic.plex_client - DEBUG - search_tracks:332 - Stage 1: Searching for artist 'jonsi' +2025-07-25 07:59:51 - newmusic.plex_client - DEBUG - search_tracks:340 - Stage 1 found 0 candidates. +2025-07-25 07:59:51 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'jonsi forest trill' +2025-07-25 07:59:52 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'forest trill' +2025-07-25 07:59:52 - newmusic.sync_service - DEBUG - _find_track_in_plex:272 - No artist-based matches found. Using title-only fallback for 'Forest Trill' +2025-07-25 07:59:52 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'foresttrill' +2025-07-25 07:59:53 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'foresttrill' +2025-07-25 07:59:54 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'forest trill' +2025-07-25 07:59:54 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'forest trill' +2025-07-25 07:59:55 - newmusic.sync_service - DEBUG - _find_track_in_plex:290 - No Plex candidates found for 'Forest Trill' +2025-07-25 07:59:55 - newmusic.plex_client - DEBUG - search_tracks:332 - Stage 1: Searching for artist 'alaskan tapes' +2025-07-25 07:59:55 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'alaskan tapes lightdivides' +2025-07-25 07:59:56 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'lightdivides' +2025-07-25 07:59:56 - newmusic.plex_client - DEBUG - search_tracks:332 - Stage 1: Searching for artist 'alaskan tapes' +2025-07-25 07:59:56 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'alaskan tapes light divides' +2025-07-25 07:59:57 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'light divides' +2025-07-25 07:59:58 - newmusic.sync_service - DEBUG - _find_track_in_plex:272 - No artist-based matches found. Using title-only fallback for 'Light Divides' +2025-07-25 07:59:58 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'lightdivides' +2025-07-25 07:59:58 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'lightdivides' +2025-07-25 07:59:59 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'light divides' +2025-07-25 08:00:00 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'light divides' +2025-07-25 08:00:00 - newmusic.sync_service - DEBUG - _find_track_in_plex:290 - No Plex candidates found for 'Light Divides' +2025-07-25 08:00:00 - newmusic.plex_client - DEBUG - search_tracks:332 - Stage 1: Searching for artist 'center of attention' +2025-07-25 08:00:00 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'center of attention meetmebytheocean' +2025-07-25 08:00:01 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'meetmebytheocean' +2025-07-25 08:00:02 - newmusic.plex_client - DEBUG - search_tracks:332 - Stage 1: Searching for artist 'center of attention' +2025-07-25 08:00:02 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'center of attention meet me by the ocean' +2025-07-25 08:00:03 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'meet me by the ocean' +2025-07-25 08:00:03 - newmusic.plex_client - DEBUG - search_tracks:332 - Stage 1: Searching for artist 'naturel' +2025-07-25 08:00:03 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'naturel meetmebytheocean' +2025-07-25 08:00:04 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'meetmebytheocean' +2025-07-25 08:00:05 - newmusic.plex_client - DEBUG - search_tracks:332 - Stage 1: Searching for artist 'naturel' +2025-07-25 08:00:05 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'naturel meet me by the ocean' +2025-07-25 08:00:05 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'meet me by the ocean' +2025-07-25 08:00:06 - newmusic.sync_service - DEBUG - _find_track_in_plex:272 - No artist-based matches found. Using title-only fallback for 'Meet Me By The Ocean' +2025-07-25 08:00:06 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'meetmebytheocean' +2025-07-25 08:00:07 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'meetmebytheocean' +2025-07-25 08:00:07 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'meet me by the ocean' +2025-07-25 08:00:08 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'meet me by the ocean' +2025-07-25 08:00:09 - newmusic.sync_service - DEBUG - _find_track_in_plex:290 - No Plex candidates found for 'Meet Me By The Ocean' +2025-07-25 08:00:09 - newmusic.plex_client - DEBUG - search_tracks:332 - Stage 1: Searching for artist 'little symphony' +2025-07-25 08:00:09 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'little symphony gaia' +2025-07-25 08:00:09 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'gaia' +2025-07-25 08:00:11 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Gaia' (ratingKey: 400009) +2025-07-25 08:00:11 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Gaia' (ratingKey: 400040) +2025-07-25 08:00:11 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'All Sleeping (Desert Dwellers Remix)' (ratingKey: 426333) +2025-07-25 08:00:11 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Shiva Nataraj (Banco de Gaia Remix)' (ratingKey: 426337) +2025-07-25 08:00:11 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Gaia' (ratingKey: 366182) +2025-07-25 08:00:11 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Gaia' (ratingKey: 452016) +2025-07-25 08:00:11 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Gaia's Soul' (ratingKey: 385789) +2025-07-25 08:00:11 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Gaia' (ratingKey: 341556) +2025-07-25 08:00:11 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Gaia' (ratingKey: 392205) +2025-07-25 08:00:11 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Gaïa' (ratingKey: 146341) +2025-07-25 08:00:11 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Gaia' (ratingKey: 322797) +2025-07-25 08:00:11 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Gaïa' (ratingKey: 498005) +2025-07-25 08:00:11 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'GAIA!' (ratingKey: 445768) +2025-07-25 08:00:11 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Gaia' (ratingKey: 200033) +2025-07-25 08:00:11 - newmusic.plex_client - INFO - search_tracks:390 - Found 14 total potential matches for 'gaia' by 'little symphony' after all stages. +2025-07-25 08:00:11 - newmusic.sync_service - DEBUG - _find_track_in_plex:263 - Early confident match found for 'Gaia' +2025-07-25 08:00:11 - newmusic.plex_client - DEBUG - search_tracks:332 - Stage 1: Searching for artist 'neighborhood libraries' +2025-07-25 08:00:11 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'neighborhood libraries hetwed' +2025-07-25 08:00:12 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'hetwed' +2025-07-25 08:00:12 - newmusic.plex_client - DEBUG - search_tracks:332 - Stage 1: Searching for artist 'neighborhood libraries' +2025-07-25 08:00:12 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'neighborhood libraries het wed' +2025-07-25 08:00:13 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'het wed' +2025-07-25 08:00:14 - newmusic.sync_service - DEBUG - _find_track_in_plex:272 - No artist-based matches found. Using title-only fallback for 'Het Wed' +2025-07-25 08:00:14 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'hetwed' +2025-07-25 08:00:14 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'hetwed' +2025-07-25 08:00:15 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'het wed' +2025-07-25 08:00:16 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'het wed' +2025-07-25 08:00:16 - newmusic.sync_service - DEBUG - _find_track_in_plex:290 - No Plex candidates found for 'Het Wed' +2025-07-25 08:00:16 - newmusic.plex_client - DEBUG - search_tracks:332 - Stage 1: Searching for artist 'long lake' +2025-07-25 08:00:16 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'long lake rebirth' +2025-07-25 08:00:17 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'rebirth' +2025-07-25 08:00:18 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Rite of Rebirth' (ratingKey: 290179) +2025-07-25 08:00:18 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Rebirth' (ratingKey: 288164) +2025-07-25 08:00:18 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'rebirth' (ratingKey: 287081) +2025-07-25 08:00:18 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Rebirth (Gaudium Remix)' (ratingKey: 286274) +2025-07-25 08:00:18 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Rebirth' (ratingKey: 373435) +2025-07-25 08:00:18 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Rebirth' (ratingKey: 316596) +2025-07-25 08:00:18 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Rebirth' (ratingKey: 270090) +2025-07-25 08:00:18 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Rebirth' (ratingKey: 199405) +2025-07-25 08:00:18 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Rebirth' (ratingKey: 389342) +2025-07-25 08:00:18 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Rebirth' (ratingKey: 338225) +2025-07-25 08:00:18 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Rebirth' (ratingKey: 424474) +2025-07-25 08:00:18 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'United in Dance (Phoenix Lord Rebirth)' (ratingKey: 190049) +2025-07-25 08:00:18 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Hanami' (ratingKey: 200592) +2025-07-25 08:00:18 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Kodama' (ratingKey: 200598) +2025-07-25 08:00:18 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Lotus Eater' (ratingKey: 200589) +2025-07-25 08:00:18 - newmusic.plex_client - INFO - search_tracks:390 - Found 15 total potential matches for 'rebirth' by 'long lake' after all stages. +2025-07-25 08:00:18 - newmusic.sync_service - DEBUG - _find_track_in_plex:263 - Early confident match found for 'Rebirth' +2025-07-25 08:00:18 - newmusic.plex_client - DEBUG - search_tracks:332 - Stage 1: Searching for artist 'nairuz' +2025-07-25 08:00:18 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'nairuz intentions' +2025-07-25 08:00:18 - newmusic.sync_service - INFO - cancel_sync:57 - PlaylistSyncService.cancel_sync() called - setting cancellation flag +2025-07-25 08:00:19 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'intentions' +2025-07-25 08:00:20 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Good Intentions' (ratingKey: 290602) +2025-07-25 08:00:20 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Good Intentions' (ratingKey: 290655) +2025-07-25 08:00:20 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Good Intentions' (ratingKey: 272089) +2025-07-25 08:00:20 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Good Intentions' (ratingKey: 272095) +2025-07-25 08:00:20 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Intentions' (ratingKey: 270360) +2025-07-25 08:00:20 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'intentions' (ratingKey: 421771) +2025-07-25 08:00:20 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Good Intentions' (ratingKey: 350916) +2025-07-25 08:00:20 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Clear Intentions (Extended Mix)' (ratingKey: 255971) +2025-07-25 08:00:20 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Clear Intentions (Radio Mix)' (ratingKey: 255972) +2025-07-25 08:00:20 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Anytime Is House (feat. Rowetta) (Mixed)' (ratingKey: 480106) +2025-07-25 08:00:20 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Good Intentions' (ratingKey: 434979) +2025-07-25 08:00:20 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Intentions' (ratingKey: 235912) +2025-07-25 08:00:20 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Intentions' (ratingKey: 349023) +2025-07-25 08:00:20 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Intentions' (ratingKey: 348861) +2025-07-25 08:00:20 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'Intentions (Acoustic)' (ratingKey: 348855) +2025-07-25 08:00:20 - newmusic.plex_client - INFO - search_tracks:390 - Found 15 total potential matches for 'intentions' by 'nairuz' after all stages. +2025-07-25 08:00:20 - newmusic.sync_service - DEBUG - _find_track_in_plex:251 - Sync cancelled after search for 'Intentions' +2025-07-25 08:00:31 - newmusic.sync_service - INFO - sync_playlist:94 - Starting sync for playlist: Aether +2025-07-25 08:00:31 - newmusic.plex_client - DEBUG - search_tracks:332 - Stage 1: Searching for artist 'virtual mage' +2025-07-25 08:00:31 - newmusic.plex_client - DEBUG - search_tracks:340 - Stage 1 found 2 candidates. +2025-07-25 08:00:31 - newmusic.plex_client - INFO - search_tracks:344 - Found 2 candidates in Stage 1. Exiting early. +2025-07-25 08:00:31 - newmusic.plex_client - DEBUG - search_tracks:350 - Stored original track reference for 'Aether' (ratingKey: 155554) +2025-07-25 08:00:31 - newmusic.plex_client - DEBUG - search_tracks:350 - Stored original track reference for 'Aether (Slowed & Reverbed)' (ratingKey: 155575) +2025-07-25 08:00:31 - newmusic.sync_service - DEBUG - _find_track_in_plex:263 - Early confident match found for 'Aether' +2025-07-25 08:00:31 - newmusic.plex_client - DEBUG - search_tracks:332 - Stage 1: Searching for artist 'virtual mage' +2025-07-25 08:00:31 - newmusic.plex_client - DEBUG - search_tracks:340 - Stage 1 found 0 candidates. +2025-07-25 08:00:31 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'virtual mage astralchill' +2025-07-25 08:00:32 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'astralchill' +2025-07-25 08:00:33 - newmusic.plex_client - DEBUG - search_tracks:332 - Stage 1: Searching for artist 'virtual mage' +2025-07-25 08:00:33 - newmusic.plex_client - DEBUG - search_tracks:340 - Stage 1 found 2 candidates. +2025-07-25 08:00:33 - newmusic.plex_client - INFO - search_tracks:344 - Found 2 candidates in Stage 1. Exiting early. +2025-07-25 08:00:33 - newmusic.plex_client - DEBUG - search_tracks:350 - Stored original track reference for 'Astral Chill' (ratingKey: 155552) +2025-07-25 08:00:33 - newmusic.plex_client - DEBUG - search_tracks:350 - Stored original track reference for 'Astral Chill (The Present Sound Remix)' (ratingKey: 155577) +2025-07-25 08:00:33 - newmusic.sync_service - DEBUG - _find_track_in_plex:263 - Early confident match found for 'Astral Chill' +2025-07-25 08:00:33 - newmusic.plex_client - DEBUG - search_tracks:332 - Stage 1: Searching for artist 'virtual mage' +2025-07-25 08:00:33 - newmusic.plex_client - DEBUG - search_tracks:340 - Stage 1 found 0 candidates. +2025-07-25 08:00:33 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'virtual mage orbitlove' +2025-07-25 08:00:34 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'orbitlove' +2025-07-25 08:00:34 - newmusic.plex_client - DEBUG - search_tracks:332 - Stage 1: Searching for artist 'virtual mage' +2025-07-25 08:00:34 - newmusic.plex_client - DEBUG - search_tracks:340 - Stage 1 found 2 candidates. +2025-07-25 08:00:34 - newmusic.plex_client - INFO - search_tracks:344 - Found 2 candidates in Stage 1. Exiting early. +2025-07-25 08:00:34 - newmusic.plex_client - DEBUG - search_tracks:350 - Stored original track reference for 'Orbit Love' (ratingKey: 155537) +2025-07-25 08:00:34 - newmusic.plex_client - DEBUG - search_tracks:350 - Stored original track reference for 'Orbit Love (Lofi Edit)' (ratingKey: 155535) +2025-07-25 08:00:34 - newmusic.sync_service - DEBUG - _find_track_in_plex:263 - Early confident match found for 'Orbit Love' +2025-07-25 08:00:34 - newmusic.sync_service - INFO - sync_playlist:141 - Found 3 matches out of 3 tracks +2025-07-25 08:00:34 - newmusic.sync_service - INFO - sync_playlist:173 - Creating playlist with 3 matched tracks +2025-07-25 08:00:34 - newmusic.plex_client - INFO - update_playlist:277 - Playlist 'Aether' not found, creating new one +2025-07-25 08:00:34 - newmusic.plex_client - DEBUG - create_playlist:198 - Using stored track reference for: Aether by Virtual Mage (ratingKey: 155554) +2025-07-25 08:00:34 - newmusic.plex_client - DEBUG - create_playlist:198 - Using stored track reference for: Astral Chill (The Present Sound Remix) by Virtual Mage (ratingKey: 155577) +2025-07-25 08:00:34 - newmusic.plex_client - DEBUG - create_playlist:198 - Using stored track reference for: Orbit Love by Virtual Mage (ratingKey: 155537) +2025-07-25 08:00:34 - newmusic.plex_client - INFO - create_playlist:209 - Processed 3 input tracks, resulting in 3 valid Plex tracks for playlist 'Aether' +2025-07-25 08:00:34 - newmusic.plex_client - INFO - create_playlist:214 - Final validation: 3 valid tracks with ratingKeys +2025-07-25 08:00:34 - newmusic.plex_client - DEBUG - create_playlist:218 - About to create playlist with tracks: +2025-07-25 08:00:34 - newmusic.plex_client - DEBUG - create_playlist:220 - Track 1: Aether (type: , ratingKey: 155554) +2025-07-25 08:00:34 - newmusic.plex_client - DEBUG - create_playlist:220 - Track 2: Astral Chill (The Present Sound Remix) (type: , ratingKey: 155577) +2025-07-25 08:00:34 - newmusic.plex_client - DEBUG - create_playlist:220 - Track 3: Orbit Love (type: , ratingKey: 155537) +2025-07-25 08:00:34 - newmusic.plex_client - ERROR - create_playlist:227 - CreatePlaylist failed: Must include items to add when creating new playlist. +2025-07-25 08:00:34 - newmusic.plex_client - INFO - create_playlist:231 - Created playlist 'Aether' with 3 tracks (using items parameter) +2025-07-25 08:00:34 - newmusic.sync_service - INFO - sync_playlist:196 - Sync completed: 100.0% success rate diff --git a/ui/pages/__pycache__/sync.cpython-312.pyc b/ui/pages/__pycache__/sync.cpython-312.pyc index c4d6a44901879a9147106c2bf240dcf3ba92b5c5..4b266210f04961a6b5bdf92ec3bc477b92be0be9 100644 GIT binary patch delta 11481 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 Z{9YOzIouQM%Q7x`$nT{x>TEJ~`5*AO8omGk delta 11053 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 MZw{v8o`x>}3nN#KegFUf diff --git a/ui/pages/sync.py b/ui/pages/sync.py index 62fff880..6747b3bf 100644 --- a/ui/pages/sync.py +++ b/ui/pages/sync.py @@ -729,9 +729,9 @@ class PlaylistDetailsModal(QDialog): layout.setSpacing(12) # Total tracks - self.total_tracks_label = QLabel("🎵 0") + self.total_tracks_label = QLabel("♪ 0") self.total_tracks_label.setFont(QFont("SF Pro Text", 12, QFont.Weight.Medium)) - self.total_tracks_label.setStyleSheet("color: #ffffff; background: transparent; border: none;") + self.total_tracks_label.setStyleSheet("color: #ffa500; background: transparent; border: none;") # Matched tracks self.matched_tracks_label = QLabel("✓ 0") @@ -749,8 +749,29 @@ class PlaylistDetailsModal(QDialog): self.percentage_label.setStyleSheet("color: #1db954; background: transparent; border: none;") layout.addWidget(self.total_tracks_label) + + # Separator 1 + sep1 = QLabel("/") + sep1.setFont(QFont("SF Pro Text", 12, QFont.Weight.Medium)) + sep1.setStyleSheet("color: #666666; background: transparent; border: none;") + layout.addWidget(sep1) + layout.addWidget(self.matched_tracks_label) + + # Separator 2 + sep2 = QLabel("/") + sep2.setFont(QFont("SF Pro Text", 12, QFont.Weight.Medium)) + sep2.setStyleSheet("color: #666666; background: transparent; border: none;") + layout.addWidget(sep2) + layout.addWidget(self.failed_tracks_label) + + # Separator 3 + sep3 = QLabel("/") + sep3.setFont(QFont("SF Pro Text", 12, QFont.Weight.Medium)) + sep3.setStyleSheet("color: #666666; background: transparent; border: none;") + layout.addWidget(sep3) + layout.addWidget(self.percentage_label) return sync_status @@ -758,7 +779,7 @@ class PlaylistDetailsModal(QDialog): def update_sync_status(self, total_tracks=0, matched_tracks=0, failed_tracks=0): """Update sync status display""" if self.sync_status_widget: - self.total_tracks_label.setText(f"🎵 {total_tracks}") + self.total_tracks_label.setText(f"♪ {total_tracks}") self.matched_tracks_label.setText(f"✓ {matched_tracks}") self.failed_tracks_label.setText(f"✗ {failed_tracks}") @@ -1529,25 +1550,24 @@ class PlaylistItem(QFrame): def create_compact_sync_status(self): """Create compact sync status display for playlist item""" sync_status = QFrame() - sync_status.setFixedHeight(30) + sync_status.setFixedHeight(36) # Increased from 30 to 36 sync_status.setStyleSheet(""" QFrame { background: rgba(29, 185, 84, 0.1); border: 1px solid rgba(29, 185, 84, 0.3); border-radius: 15px; - padding: 4px 8px; } """) sync_status.hide() # Hidden by default layout = QHBoxLayout(sync_status) - layout.setContentsMargins(6, 2, 6, 2) + layout.setContentsMargins(8, 6, 8, 6) # Increased margins for better text visibility layout.setSpacing(6) # Total tracks - self.item_total_tracks_label = QLabel("🎵 0") + self.item_total_tracks_label = QLabel("♪ 0") self.item_total_tracks_label.setFont(QFont("SF Pro Text", 9, QFont.Weight.Medium)) - self.item_total_tracks_label.setStyleSheet("color: #ffffff; background: transparent; border: none;") + self.item_total_tracks_label.setStyleSheet("color: #ffa500; background: transparent; border: none;") # Matched tracks self.item_matched_tracks_label = QLabel("✓ 0") @@ -1565,8 +1585,29 @@ class PlaylistItem(QFrame): self.item_percentage_label.setStyleSheet("color: #1db954; background: transparent; border: none;") layout.addWidget(self.item_total_tracks_label) + + # Separator 1 + item_sep1 = QLabel("/") + item_sep1.setFont(QFont("SF Pro Text", 9, QFont.Weight.Medium)) + item_sep1.setStyleSheet("color: #666666; background: transparent; border: none;") + layout.addWidget(item_sep1) + layout.addWidget(self.item_matched_tracks_label) + + # Separator 2 + item_sep2 = QLabel("/") + item_sep2.setFont(QFont("SF Pro Text", 9, QFont.Weight.Medium)) + item_sep2.setStyleSheet("color: #666666; background: transparent; border: none;") + layout.addWidget(item_sep2) + layout.addWidget(self.item_failed_tracks_label) + + # Separator 3 + item_sep3 = QLabel("/") + item_sep3.setFont(QFont("SF Pro Text", 9, QFont.Weight.Medium)) + item_sep3.setStyleSheet("color: #666666; background: transparent; border: none;") + layout.addWidget(item_sep3) + layout.addWidget(self.item_percentage_label) return sync_status @@ -1578,9 +1619,9 @@ class PlaylistItem(QFrame): self.sync_failed_tracks = failed_tracks if self.sync_status_widget and hasattr(self, 'item_total_tracks_label'): - self.item_total_tracks_label.setText(f"📀 {total_tracks}") - self.item_matched_tracks_label.setText(f"✅ {matched_tracks}") - self.item_failed_tracks_label.setText(f"⌠{failed_tracks}") + self.item_total_tracks_label.setText(f"♪ {total_tracks}") + self.item_matched_tracks_label.setText(f"✓ {matched_tracks}") + self.item_failed_tracks_label.setText(f"✗ {failed_tracks}") if total_tracks > 0: percentage = int((matched_tracks / total_tracks) * 100)