diff --git a/.spotify_cache b/.spotify_cache index ee123871..6c4ead55 100644 --- a/.spotify_cache +++ b/.spotify_cache @@ -1 +1 @@ -{"access_token": "BQAiDhM1iLqw1onEzSJqVdB5e8l-eC1ZJVbtearOX4HzIcmKNnAvn1jfBFGGa3xe-WFRxciZw-1J6g060evv9p-y8W7qxIRnHQFXEdqlvGcXfH-kY9h5s-N7-QyqREheNvuQAnzL-aU1qCr58PJEq__cQiEXPWGJnps-jdmvE0JzRqrII5wvCAYWDzRJE-Nah22Sv97r08OUD43QT5YCbNgKJJEeymk10bhWyMJZuG6lIEL0WW3KqAZpwjbkXZ8y", "token_type": "Bearer", "expires_in": 3600, "scope": "user-library-read user-read-private playlist-read-private playlist-read-collaborative user-read-email", "expires_at": 1752209145, "refresh_token": "AQDmfQkPCGObfJeTUIbW1hAAwhSqkuHRA3Qh2dqVYMRh0eCkFMQgPNJDDzF8y-BiaVbj80zePkK_XSfYH1aJutMtNbnsqRKWuxP31BTrMc7pdUdbE7Fma4oH8wpDUKdG3MM"} \ No newline at end of file +{"access_token": "BQBuO8G7Zi2ozu-4ZMR441GCJmrgfy9SmoheIlLDkUGPuWcHSqeRBYZs6dPee4275FqgaIW8-k10ZOaT8feILNtI9m6ci5ltrC_rxWWzhFevvsqAfDOlmt7fIxW34L1w_K10ZDrw1lD-iq_8EkhrgQmuuaDg43bfBbd_c_G9F_yIHfZPKHqIZtk9sX6nFfobXSPmEQ4OEXVB6RVloM8pR013it_Y8bf4V21ADi5LbxGrBV1OSUh4a-c64SqRo48E", "token_type": "Bearer", "expires_in": 3600, "scope": "user-library-read user-read-private playlist-read-private playlist-read-collaborative user-read-email", "expires_at": 1752214548, "refresh_token": "AQDmfQkPCGObfJeTUIbW1hAAwhSqkuHRA3Qh2dqVYMRh0eCkFMQgPNJDDzF8y-BiaVbj80zePkK_XSfYH1aJutMtNbnsqRKWuxP31BTrMc7pdUdbE7Fma4oH8wpDUKdG3MM"} \ No newline at end of file diff --git a/logs/app.log b/logs/app.log index 283f78b3..e169f386 100644 --- a/logs/app.log +++ b/logs/app.log @@ -14201,3 +14201,617 @@ 2025-07-10 21:05:34 - newmusic.main - INFO - closeEvent:162 - Stopping status monitoring thread... 2025-07-10 21:05:36 - newmusic.main - INFO - closeEvent:167 - Closing Soulseek client... 2025-07-10 21:05:36 - newmusic.main - INFO - closeEvent:173 - Application closed successfully +2025-07-10 22:15:48 - newmusic - INFO - setup_logging:57 - Logging initialized with level: DEBUG +2025-07-10 22:15:48 - newmusic.main - INFO - main:207 - Starting NewMusic application +2025-07-10 22:15:48 - newmusic.spotify_client - INFO - _setup_client:84 - Successfully authenticated with Spotify as broquethomas +2025-07-10 22:15:48 - newmusic.plex_client - INFO - _find_music_library:98 - Found music library: Music +2025-07-10 22:15:48 - newmusic.plex_client - INFO - _setup_client:84 - Successfully connected to Plex server: PLEX-MACHINE +2025-07-10 22:15:48 - newmusic.soulseek_client - INFO - _setup_client:220 - Soulseek client configured with slskd at http://localhost:5030 +2025-07-10 22:15:49 - newmusic.main - INFO - change_page:159 - Changed to page: dashboard +2025-07-10 22:15:49 - newmusic.main - INFO - setup_media_player_connections:146 - Media player connections established between sidebar and downloads page +2025-07-10 22:15:49 - newmusic.spotify_client - INFO - get_user_playlists:106 - Fetching tracks for playlist: Aether +2025-07-10 22:15:50 - newmusic.spotify_client - INFO - get_user_playlists:106 - Fetching tracks for playlist: Favorite Artists +2025-07-10 22:15:51 - newmusic.main - INFO - change_page:159 - Changed to page: downloads +2025-07-10 22:15:52 - newmusic.spotify_client - INFO - get_user_playlists:106 - Fetching tracks for playlist: Brittnea +2025-07-10 22:15:53 - newmusic.spotify_client - INFO - get_user_playlists:106 - Fetching tracks for playlist: Baleigh +2025-07-10 22:15:54 - newmusic.soulseek_client - INFO - search:551 - Starting search for: 'virtual mage' +2025-07-10 22:15:54 - newmusic.soulseek_client - DEBUG - search:561 - Search data: {'searchText': 'virtual mage', 'timeout': 30000, 'filterResponses': True, 'minimumResponseFileCount': 1, 'minimumPeerUploadSpeed': 0} +2025-07-10 22:15:54 - newmusic.soulseek_client - DEBUG - search:562 - Making POST request to: http://localhost:5030/api/v0/searches +2025-07-10 22:15:54 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making POST request to: http://localhost:5030/api/v0/searches +2025-07-10 22:15:54 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-10 22:15:54 - newmusic.soulseek_client - DEBUG - _make_request:245 - JSON payload: {'searchText': 'virtual mage', 'timeout': 30000, 'filterResponses': True, 'minimumResponseFileCount': 1, 'minimumPeerUploadSpeed': 0} +2025-07-10 22:15:55 - newmusic.spotify_client - INFO - get_user_playlists:106 - Fetching tracks for playlist: Extra Music +2025-07-10 22:15:55 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-10 22:15:55 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: {"fileCount":0,"id":"bce59166-630a-4f7c-82a7-558d81d5b1e4","isComplete":false,"lockedFileCount":0,"responseCount":0,"responses":[],"searchText":"virtual mage","startedAt":"2025-07-11T05:15:55.1591746Z","state":"InProgress","token":238}... +2025-07-10 22:15:55 - newmusic.soulseek_client - INFO - search:575 - Search initiated with ID: bce59166-630a-4f7c-82a7-558d81d5b1e4 +2025-07-10 22:15:55 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 1/20) - elapsed: 0.0s +2025-07-10 22:15:55 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/bce59166-630a-4f7c-82a7-558d81d5b1e4/responses +2025-07-10 22:15:55 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-10 22:15:55 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-10 22:15:55 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: []... +2025-07-10 22:15:56 - newmusic.spotify_client - INFO - get_user_playlists:106 - Fetching tracks for playlist: Maggi Main +2025-07-10 22:15:56 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 2/20) - elapsed: 1.5s +2025-07-10 22:15:56 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/bce59166-630a-4f7c-82a7-558d81d5b1e4/responses +2025-07-10 22:15:56 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-10 22:15:57 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-10 22:15:57 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: []... +2025-07-10 22:15:58 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 3/20) - elapsed: 3.0s +2025-07-10 22:15:58 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/bce59166-630a-4f7c-82a7-558d81d5b1e4/responses +2025-07-10 22:15:58 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-10 22:15:58 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-10 22:15:58 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: []... +2025-07-10 22:16:00 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 4/20) - elapsed: 4.5s +2025-07-10 22:16:00 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/bce59166-630a-4f7c-82a7-558d81d5b1e4/responses +2025-07-10 22:16:00 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-10 22:16:00 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-10 22:16:00 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: []... +2025-07-10 22:16:01 - newmusic.spotify_client - INFO - get_user_playlists:106 - Fetching tracks for playlist: Broque Main +2025-07-10 22:16:02 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 5/20) - elapsed: 6.0s +2025-07-10 22:16:02 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/bce59166-630a-4f7c-82a7-558d81d5b1e4/responses +2025-07-10 22:16:02 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-10 22:16:02 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-10 22:16:02 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: []... +2025-07-10 22:16:04 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 6/20) - elapsed: 7.5s +2025-07-10 22:16:04 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/bce59166-630a-4f7c-82a7-558d81d5b1e4/responses +2025-07-10 22:16:04 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-10 22:16:04 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-10 22:16:04 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: []... +2025-07-10 22:16:05 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 7/20) - elapsed: 9.0s +2025-07-10 22:16:05 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/bce59166-630a-4f7c-82a7-558d81d5b1e4/responses +2025-07-10 22:16:05 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-10 22:16:06 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-10 22:16:06 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: []... +2025-07-10 22:16:07 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 8/20) - elapsed: 10.5s +2025-07-10 22:16:07 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/bce59166-630a-4f7c-82a7-558d81d5b1e4/responses +2025-07-10 22:16:07 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-10 22:16:07 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-10 22:16:07 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: []... +2025-07-10 22:16:08 - newmusic.spotify_client - INFO - get_user_playlists:113 - Retrieved 7 playlists +2025-07-10 22:16:09 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 9/20) - elapsed: 12.0s +2025-07-10 22:16:09 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/bce59166-630a-4f7c-82a7-558d81d5b1e4/responses +2025-07-10 22:16:09 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-10 22:16:09 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-10 22:16:09 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: []... +2025-07-10 22:16:11 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 10/20) - elapsed: 13.5s +2025-07-10 22:16:11 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/bce59166-630a-4f7c-82a7-558d81d5b1e4/responses +2025-07-10 22:16:11 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-10 22:16:11 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-10 22:16:11 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: []... +2025-07-10 22:16:12 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 11/20) - elapsed: 15.0s +2025-07-10 22:16:12 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/bce59166-630a-4f7c-82a7-558d81d5b1e4/responses +2025-07-10 22:16:12 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-10 22:16:13 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-10 22:16:13 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: []... +2025-07-10 22:16:14 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 12/20) - elapsed: 16.5s +2025-07-10 22:16:14 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/bce59166-630a-4f7c-82a7-558d81d5b1e4/responses +2025-07-10 22:16:14 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-10 22:16:14 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-10 22:16:14 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: [{"fileCount":3,"files":[{"code":1,"extension":"","filename":"@@kflrr\\World of Darkness\\Mage\\Charsheets\\virtual adepts c sheet.pdf","size":119030,"isLocked":false},{"code":1,"extension":"","filename":"@@kflrr\\World of Darkness\\Mage\\Mage - The Ascension\\WW4060 MTA - Tradition Book - Virtual Adepts (1e).pdf","size":33530594,"isLocked":false},{"code":1,"extension":"","filename":"@@kflrr\\World of Darkness\\Mage\\Mage - The Ascension\\WW4660 MTA - Tradition Book - Virtual Adepts (Revised).pd... +2025-07-10 22:16:14 - newmusic.soulseek_client - INFO - search:597 - Found 21 new responses (21 total) at 16.5s +2025-07-10 22:16:14 - newmusic.soulseek_client - DEBUG - _process_search_responses:345 - Processing 21 user responses +2025-07-10 22:16:14 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Letham has 3 files +2025-07-10 22:16:14 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Ultravod has 9 files +2025-07-10 22:16:14 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User KindaRatchet has 1 files +2025-07-10 22:16:14 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User buk4 has 1 files +2025-07-10 22:16:14 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User koalabeer has 3 files +2025-07-10 22:16:14 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Satani-Vitales has 3 files +2025-07-10 22:16:14 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User zeroscan has 2 files +2025-07-10 22:16:14 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User HomotopicCensorship has 3 files +2025-07-10 22:16:14 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User leonardoclk has 3 files +2025-07-10 22:16:14 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User soulshookt has 3 files +2025-07-10 22:16:14 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User raspberry2 has 10 files +2025-07-10 22:16:14 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User ofoijacussa has 0 files +2025-07-10 22:16:14 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User nightmare_dronemk12 has 3 files +2025-07-10 22:16:14 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User drchzbrgr has 5 files +2025-07-10 22:16:14 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Shooby has 6 files +2025-07-10 22:16:14 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Dax_VR has 10 files +2025-07-10 22:16:14 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User thinkibettergo has 1 files +2025-07-10 22:16:14 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User belthane has 3 files +2025-07-10 22:16:14 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User ruszok has 1 files +2025-07-10 22:16:14 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Kaya-Sem has 1 files +2025-07-10 22:16:14 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User RuuqoHoosk has 346 files +2025-07-10 22:16:14 - newmusic.soulseek_client - INFO - _process_search_responses:399 - Found 9 individual tracks and 5 albums +2025-07-10 22:16:14 - newmusic.soulseek_client - DEBUG - _process_search_responses:400 - Album detection details: 14 potential albums processed +2025-07-10 22:16:14 - newmusic.soulseek_client - DEBUG - _process_search_responses:402 - Album: Ultravod/FLACs/by genre/synthwave/Virtual Mage/Virtual Mage - Aether WEB (2020) -> 1 tracks +2025-07-10 22:16:14 - newmusic.soulseek_client - DEBUG - _process_search_responses:402 - Album: Ultravod/FLACs/by genre/synthwave/Virtual Mage/Virtual Mage - Astral Chill WEB (2020) -> 1 tracks +2025-07-10 22:16:14 - newmusic.soulseek_client - DEBUG - _process_search_responses:402 - Album: Ultravod/FLACs/by genre/synthwave/va - Relaxing Synthwave Top 105 (2021) -> 1 tracks +2025-07-10 22:16:14 - newmusic.soulseek_client - INFO - search:617 - Processed results: 9 tracks, 5 albums +2025-07-10 22:16:16 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 13/20) - elapsed: 18.0s +2025-07-10 22:16:16 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/bce59166-630a-4f7c-82a7-558d81d5b1e4/responses +2025-07-10 22:16:16 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-10 22:16:16 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-10 22:16:16 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: [{"fileCount":3,"files":[{"code":1,"extension":"","filename":"@@kflrr\\World of Darkness\\Mage\\Charsheets\\virtual adepts c sheet.pdf","size":119030,"isLocked":false},{"code":1,"extension":"","filename":"@@kflrr\\World of Darkness\\Mage\\Mage - The Ascension\\WW4060 MTA - Tradition Book - Virtual Adepts (1e).pdf","size":33530594,"isLocked":false},{"code":1,"extension":"","filename":"@@kflrr\\World of Darkness\\Mage\\Mage - The Ascension\\WW4660 MTA - Tradition Book - Virtual Adepts (Revised).pd... +2025-07-10 22:16:16 - newmusic.soulseek_client - DEBUG - search:624 - No new responses, total still: 21 +2025-07-10 22:16:18 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 14/20) - elapsed: 19.5s +2025-07-10 22:16:18 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/bce59166-630a-4f7c-82a7-558d81d5b1e4/responses +2025-07-10 22:16:18 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-10 22:16:18 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-10 22:16:18 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: [{"fileCount":3,"files":[{"code":1,"extension":"","filename":"@@kflrr\\World of Darkness\\Mage\\Charsheets\\virtual adepts c sheet.pdf","size":119030,"isLocked":false},{"code":1,"extension":"","filename":"@@kflrr\\World of Darkness\\Mage\\Mage - The Ascension\\WW4060 MTA - Tradition Book - Virtual Adepts (1e).pdf","size":33530594,"isLocked":false},{"code":1,"extension":"","filename":"@@kflrr\\World of Darkness\\Mage\\Mage - The Ascension\\WW4660 MTA - Tradition Book - Virtual Adepts (Revised).pd... +2025-07-10 22:16:18 - newmusic.soulseek_client - DEBUG - search:624 - No new responses, total still: 21 +2025-07-10 22:16:20 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 15/20) - elapsed: 21.0s +2025-07-10 22:16:20 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/bce59166-630a-4f7c-82a7-558d81d5b1e4/responses +2025-07-10 22:16:20 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-10 22:16:20 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-10 22:16:20 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: [{"fileCount":3,"files":[{"code":1,"extension":"","filename":"@@kflrr\\World of Darkness\\Mage\\Charsheets\\virtual adepts c sheet.pdf","size":119030,"isLocked":false},{"code":1,"extension":"","filename":"@@kflrr\\World of Darkness\\Mage\\Mage - The Ascension\\WW4060 MTA - Tradition Book - Virtual Adepts (1e).pdf","size":33530594,"isLocked":false},{"code":1,"extension":"","filename":"@@kflrr\\World of Darkness\\Mage\\Mage - The Ascension\\WW4660 MTA - Tradition Book - Virtual Adepts (Revised).pd... +2025-07-10 22:16:20 - newmusic.soulseek_client - DEBUG - search:624 - No new responses, total still: 21 +2025-07-10 22:16:21 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 16/20) - elapsed: 22.5s +2025-07-10 22:16:21 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/bce59166-630a-4f7c-82a7-558d81d5b1e4/responses +2025-07-10 22:16:21 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-10 22:16:22 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-10 22:16:22 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: [{"fileCount":3,"files":[{"code":1,"extension":"","filename":"@@kflrr\\World of Darkness\\Mage\\Charsheets\\virtual adepts c sheet.pdf","size":119030,"isLocked":false},{"code":1,"extension":"","filename":"@@kflrr\\World of Darkness\\Mage\\Mage - The Ascension\\WW4060 MTA - Tradition Book - Virtual Adepts (1e).pdf","size":33530594,"isLocked":false},{"code":1,"extension":"","filename":"@@kflrr\\World of Darkness\\Mage\\Mage - The Ascension\\WW4660 MTA - Tradition Book - Virtual Adepts (Revised).pd... +2025-07-10 22:16:22 - newmusic.soulseek_client - DEBUG - search:624 - No new responses, total still: 21 +2025-07-10 22:16:23 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 17/20) - elapsed: 24.0s +2025-07-10 22:16:23 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/bce59166-630a-4f7c-82a7-558d81d5b1e4/responses +2025-07-10 22:16:23 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-10 22:16:23 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-10 22:16:23 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: [{"fileCount":3,"files":[{"code":1,"extension":"","filename":"@@kflrr\\World of Darkness\\Mage\\Charsheets\\virtual adepts c sheet.pdf","size":119030,"isLocked":false},{"code":1,"extension":"","filename":"@@kflrr\\World of Darkness\\Mage\\Mage - The Ascension\\WW4060 MTA - Tradition Book - Virtual Adepts (1e).pdf","size":33530594,"isLocked":false},{"code":1,"extension":"","filename":"@@kflrr\\World of Darkness\\Mage\\Mage - The Ascension\\WW4660 MTA - Tradition Book - Virtual Adepts (Revised).pd... +2025-07-10 22:16:23 - newmusic.soulseek_client - DEBUG - search:624 - No new responses, total still: 21 +2025-07-10 22:16:25 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 18/20) - elapsed: 25.5s +2025-07-10 22:16:25 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/bce59166-630a-4f7c-82a7-558d81d5b1e4/responses +2025-07-10 22:16:25 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-10 22:16:25 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-10 22:16:25 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: [{"fileCount":3,"files":[{"code":1,"extension":"","filename":"@@kflrr\\World of Darkness\\Mage\\Charsheets\\virtual adepts c sheet.pdf","size":119030,"isLocked":false},{"code":1,"extension":"","filename":"@@kflrr\\World of Darkness\\Mage\\Mage - The Ascension\\WW4060 MTA - Tradition Book - Virtual Adepts (1e).pdf","size":33530594,"isLocked":false},{"code":1,"extension":"","filename":"@@kflrr\\World of Darkness\\Mage\\Mage - The Ascension\\WW4660 MTA - Tradition Book - Virtual Adepts (Revised).pd... +2025-07-10 22:16:25 - newmusic.soulseek_client - DEBUG - search:624 - No new responses, total still: 21 +2025-07-10 22:16:26 - newmusic.soulseek_client - DEBUG - download:645 - Attempting to download: FLACs\by genre\synthwave\Virtual Mage\Virtual Mage - Aether WEB (2020)\01 - Aether.flac from Ultravod (size: 22183233) +2025-07-10 22:16:26 - newmusic.soulseek_client - DEBUG - download:658 - Using web interface API format: [{'filename': 'FLACs\\by genre\\synthwave\\Virtual Mage\\Virtual Mage - Aether WEB (2020)\\01 - Aether.flac', 'size': 22183233, 'path': 'E:\\Broque Projects\\newMusic\\downloads'}] +2025-07-10 22:16:26 - newmusic.soulseek_client - DEBUG - download:662 - Trying web interface endpoint: transfers/downloads/Ultravod +2025-07-10 22:16:26 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making POST request to: http://localhost:5030/api/v0/transfers/downloads/Ultravod +2025-07-10 22:16:26 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-10 22:16:26 - newmusic.soulseek_client - DEBUG - _make_request:245 - JSON payload: [{'filename': 'FLACs\\by genre\\synthwave\\Virtual Mage\\Virtual Mage - Aether WEB (2020)\\01 - Aether.flac', 'size': 22183233, 'path': 'E:\\Broque Projects\\newMusic\\downloads'}] +2025-07-10 22:16:26 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 201 +2025-07-10 22:16:26 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: ... +2025-07-10 22:16:26 - newmusic.soulseek_client - INFO - download:667 - [SUCCESS] Started download: FLACs\by genre\synthwave\Virtual Mage\Virtual Mage - Aether WEB (2020)\01 - Aether.flac from Ultravod +2025-07-10 22:16:27 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 19/20) - elapsed: 27.0s +2025-07-10 22:16:27 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/bce59166-630a-4f7c-82a7-558d81d5b1e4/responses +2025-07-10 22:16:27 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-10 22:16:27 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-10 22:16:27 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: [{"fileCount":3,"files":[{"code":1,"extension":"","filename":"@@kflrr\\World of Darkness\\Mage\\Charsheets\\virtual adepts c sheet.pdf","size":119030,"isLocked":false},{"code":1,"extension":"","filename":"@@kflrr\\World of Darkness\\Mage\\Mage - The Ascension\\WW4060 MTA - Tradition Book - Virtual Adepts (1e).pdf","size":33530594,"isLocked":false},{"code":1,"extension":"","filename":"@@kflrr\\World of Darkness\\Mage\\Mage - The Ascension\\WW4660 MTA - Tradition Book - Virtual Adepts (Revised).pd... +2025-07-10 22:16:27 - newmusic.soulseek_client - DEBUG - search:624 - No new responses, total still: 21 +2025-07-10 22:16:28 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 20/20) - elapsed: 28.5s +2025-07-10 22:16:28 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/bce59166-630a-4f7c-82a7-558d81d5b1e4/responses +2025-07-10 22:16:28 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-10 22:16:29 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-10 22:16:29 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: [{"fileCount":3,"files":[{"code":1,"extension":"","filename":"@@kflrr\\World of Darkness\\Mage\\Charsheets\\virtual adepts c sheet.pdf","size":119030,"isLocked":false},{"code":1,"extension":"","filename":"@@kflrr\\World of Darkness\\Mage\\Mage - The Ascension\\WW4060 MTA - Tradition Book - Virtual Adepts (1e).pdf","size":33530594,"isLocked":false},{"code":1,"extension":"","filename":"@@kflrr\\World of Darkness\\Mage\\Mage - The Ascension\\WW4660 MTA - Tradition Book - Virtual Adepts (Revised).pd... +2025-07-10 22:16:29 - newmusic.soulseek_client - DEBUG - search:624 - No new responses, total still: 21 +2025-07-10 22:16:29 - newmusic.soulseek_client - INFO - search:632 - Search completed. Final results: 9 tracks and 5 albums for query: virtual mage +2025-07-10 22:17:32 - newmusic.soulseek_client - DEBUG - download:645 - Attempting to download: FLACs\by genre\synthwave\Virtual Mage\Virtual Mage - Astral Chill WEB (2020)\01 - Astral Chill.flac from Ultravod (size: 16251069) +2025-07-10 22:17:32 - newmusic.soulseek_client - DEBUG - download:658 - Using web interface API format: [{'filename': 'FLACs\\by genre\\synthwave\\Virtual Mage\\Virtual Mage - Astral Chill WEB (2020)\\01 - Astral Chill.flac', 'size': 16251069, 'path': 'E:\\Broque Projects\\newMusic\\downloads'}] +2025-07-10 22:17:32 - newmusic.soulseek_client - DEBUG - download:662 - Trying web interface endpoint: transfers/downloads/Ultravod +2025-07-10 22:17:32 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making POST request to: http://localhost:5030/api/v0/transfers/downloads/Ultravod +2025-07-10 22:17:32 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-10 22:17:32 - newmusic.soulseek_client - DEBUG - _make_request:245 - JSON payload: [{'filename': 'FLACs\\by genre\\synthwave\\Virtual Mage\\Virtual Mage - Astral Chill WEB (2020)\\01 - Astral Chill.flac', 'size': 16251069, 'path': 'E:\\Broque Projects\\newMusic\\downloads'}] +2025-07-10 22:17:33 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 201 +2025-07-10 22:17:33 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: ... +2025-07-10 22:17:33 - newmusic.soulseek_client - INFO - download:667 - [SUCCESS] Started download: FLACs\by genre\synthwave\Virtual Mage\Virtual Mage - Astral Chill WEB (2020)\01 - Astral Chill.flac from Ultravod +2025-07-10 22:18:00 - newmusic.soulseek_client - DEBUG - download:645 - Attempting to download: Music\aofd3\Mallsoft & Shopping Mall Ambience\09 - Virtual Mage - Moondust.ogg from zeroscan (size: 4266916) +2025-07-10 22:18:00 - newmusic.soulseek_client - DEBUG - download:658 - Using web interface API format: [{'filename': 'Music\\aofd3\\Mallsoft & Shopping Mall Ambience\\09 - Virtual Mage - Moondust.ogg', 'size': 4266916, 'path': 'E:\\Broque Projects\\newMusic\\downloads'}] +2025-07-10 22:18:00 - newmusic.soulseek_client - DEBUG - download:662 - Trying web interface endpoint: transfers/downloads/zeroscan +2025-07-10 22:18:00 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making POST request to: http://localhost:5030/api/v0/transfers/downloads/zeroscan +2025-07-10 22:18:00 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-10 22:18:00 - newmusic.soulseek_client - DEBUG - _make_request:245 - JSON payload: [{'filename': 'Music\\aofd3\\Mallsoft & Shopping Mall Ambience\\09 - Virtual Mage - Moondust.ogg', 'size': 4266916, 'path': 'E:\\Broque Projects\\newMusic\\downloads'}] +2025-07-10 22:18:00 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 201 +2025-07-10 22:18:00 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: ... +2025-07-10 22:18:00 - newmusic.soulseek_client - INFO - download:667 - [SUCCESS] Started download: Music\aofd3\Mallsoft & Shopping Mall Ambience\09 - Virtual Mage - Moondust.ogg from zeroscan +2025-07-10 22:18:08 - newmusic.soulseek_client - DEBUG - download:645 - Attempting to download: Music\aofd3\Mallsoft & Shopping Mall Ambience\03 - Virtual Mage - Breaking the Dream (Lucid Dream Edit).ogg from zeroscan (size: 6269644) +2025-07-10 22:18:08 - newmusic.soulseek_client - DEBUG - download:658 - Using web interface API format: [{'filename': 'Music\\aofd3\\Mallsoft & Shopping Mall Ambience\\03 - Virtual Mage - Breaking the Dream (Lucid Dream Edit).ogg', 'size': 6269644, 'path': 'E:\\Broque Projects\\newMusic\\downloads'}] +2025-07-10 22:18:08 - newmusic.soulseek_client - DEBUG - download:662 - Trying web interface endpoint: transfers/downloads/zeroscan +2025-07-10 22:18:08 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making POST request to: http://localhost:5030/api/v0/transfers/downloads/zeroscan +2025-07-10 22:18:08 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-10 22:18:08 - newmusic.soulseek_client - DEBUG - _make_request:245 - JSON payload: [{'filename': 'Music\\aofd3\\Mallsoft & Shopping Mall Ambience\\03 - Virtual Mage - Breaking the Dream (Lucid Dream Edit).ogg', 'size': 6269644, 'path': 'E:\\Broque Projects\\newMusic\\downloads'}] +2025-07-10 22:18:09 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 201 +2025-07-10 22:18:09 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: ... +2025-07-10 22:18:09 - newmusic.soulseek_client - INFO - download:667 - [SUCCESS] Started download: Music\aofd3\Mallsoft & Shopping Mall Ambience\03 - Virtual Mage - Breaking the Dream (Lucid Dream Edit).ogg from zeroscan +2025-07-10 22:19:08 - newmusic.soulseek_client - DEBUG - download:645 - Attempting to download: media\To Sort\Sorting Bin\Virtual Mage\Virtual Mage - Emergency Shutdown.mp3 from Kaya-Sem (size: 2331284) +2025-07-10 22:19:08 - newmusic.soulseek_client - DEBUG - download:658 - Using web interface API format: [{'filename': 'media\\To Sort\\Sorting Bin\\Virtual Mage\\Virtual Mage - Emergency Shutdown.mp3', 'size': 2331284, 'path': 'E:\\Broque Projects\\newMusic\\downloads'}] +2025-07-10 22:19:08 - newmusic.soulseek_client - DEBUG - download:662 - Trying web interface endpoint: transfers/downloads/Kaya-Sem +2025-07-10 22:19:08 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making POST request to: http://localhost:5030/api/v0/transfers/downloads/Kaya-Sem +2025-07-10 22:19:08 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-10 22:19:08 - newmusic.soulseek_client - DEBUG - _make_request:245 - JSON payload: [{'filename': 'media\\To Sort\\Sorting Bin\\Virtual Mage\\Virtual Mage - Emergency Shutdown.mp3', 'size': 2331284, 'path': 'E:\\Broque Projects\\newMusic\\downloads'}] +2025-07-10 22:19:09 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 201 +2025-07-10 22:19:09 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: ... +2025-07-10 22:19:09 - newmusic.soulseek_client - INFO - download:667 - [SUCCESS] Started download: media\To Sort\Sorting Bin\Virtual Mage\Virtual Mage - Emergency Shutdown.mp3 from Kaya-Sem +2025-07-10 22:40:01 - newmusic.main - INFO - closeEvent:172 - Closing application... +2025-07-10 22:40:01 - newmusic.main - INFO - closeEvent:177 - Cleaning up Downloads page threads... +2025-07-10 22:40:01 - newmusic.main - INFO - closeEvent:182 - Stopping status monitoring thread... +2025-07-10 22:40:01 - newmusic.main - INFO - closeEvent:187 - Closing Soulseek client... +2025-07-10 22:40:01 - newmusic.main - INFO - closeEvent:193 - Application closed successfully +2025-07-10 22:40:14 - newmusic - INFO - setup_logging:57 - Logging initialized with level: DEBUG +2025-07-10 22:40:14 - newmusic.main - INFO - main:206 - Starting NewMusic application +2025-07-10 22:40:14 - newmusic.spotify_client - INFO - _setup_client:84 - Successfully authenticated with Spotify as broquethomas +2025-07-10 22:40:14 - newmusic.plex_client - INFO - _find_music_library:98 - Found music library: Music +2025-07-10 22:40:14 - newmusic.plex_client - INFO - _setup_client:84 - Successfully connected to Plex server: PLEX-MACHINE +2025-07-10 22:40:14 - newmusic.soulseek_client - INFO - _setup_client:220 - Soulseek client configured with slskd at http://localhost:5030 +2025-07-10 22:40:15 - newmusic.main - INFO - change_page:158 - Changed to page: dashboard +2025-07-10 22:40:15 - newmusic.main - INFO - setup_media_player_connections:145 - Media player connections established between sidebar and downloads page +2025-07-10 22:40:16 - newmusic.spotify_client - INFO - get_user_playlists:106 - Fetching tracks for playlist: Aether +2025-07-10 22:40:16 - newmusic.spotify_client - INFO - get_user_playlists:106 - Fetching tracks for playlist: Favorite Artists +2025-07-10 22:40:18 - newmusic.spotify_client - INFO - get_user_playlists:106 - Fetching tracks for playlist: Brittnea +2025-07-10 22:40:19 - newmusic.spotify_client - INFO - get_user_playlists:106 - Fetching tracks for playlist: Baleigh +2025-07-10 22:40:20 - newmusic.main - INFO - change_page:158 - Changed to page: downloads +2025-07-10 22:40:21 - newmusic.spotify_client - INFO - get_user_playlists:106 - Fetching tracks for playlist: Extra Music +2025-07-10 22:40:22 - newmusic.spotify_client - INFO - get_user_playlists:106 - Fetching tracks for playlist: Maggi Main +2025-07-10 22:40:24 - newmusic.soulseek_client - INFO - search:551 - Starting search for: 'Virtual Mage' +2025-07-10 22:40:24 - newmusic.soulseek_client - DEBUG - search:561 - Search data: {'searchText': 'Virtual Mage', 'timeout': 30000, 'filterResponses': True, 'minimumResponseFileCount': 1, 'minimumPeerUploadSpeed': 0} +2025-07-10 22:40:24 - newmusic.soulseek_client - DEBUG - search:562 - Making POST request to: http://localhost:5030/api/v0/searches +2025-07-10 22:40:24 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making POST request to: http://localhost:5030/api/v0/searches +2025-07-10 22:40:24 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-10 22:40:24 - newmusic.soulseek_client - DEBUG - _make_request:245 - JSON payload: {'searchText': 'Virtual Mage', 'timeout': 30000, 'filterResponses': True, 'minimumResponseFileCount': 1, 'minimumPeerUploadSpeed': 0} +2025-07-10 22:40:24 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-10 22:40:24 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: {"fileCount":0,"id":"40f80e99-948c-44b4-8ae5-59f84553fee8","isComplete":false,"lockedFileCount":0,"responseCount":0,"responses":[],"searchText":"Virtual Mage","startedAt":"2025-07-11T05:40:24.5438479Z","state":"InProgress","token":263}... +2025-07-10 22:40:24 - newmusic.soulseek_client - INFO - search:575 - Search initiated with ID: 40f80e99-948c-44b4-8ae5-59f84553fee8 +2025-07-10 22:40:24 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 1/20) - elapsed: 0.0s +2025-07-10 22:40:24 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/40f80e99-948c-44b4-8ae5-59f84553fee8/responses +2025-07-10 22:40:24 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-10 22:40:24 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-10 22:40:24 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: []... +2025-07-10 22:40:26 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 2/20) - elapsed: 1.5s +2025-07-10 22:40:26 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/40f80e99-948c-44b4-8ae5-59f84553fee8/responses +2025-07-10 22:40:26 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-10 22:40:26 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-10 22:40:26 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: []... +2025-07-10 22:40:27 - newmusic.spotify_client - INFO - get_user_playlists:106 - Fetching tracks for playlist: Broque Main +2025-07-10 22:40:28 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 3/20) - elapsed: 3.0s +2025-07-10 22:40:28 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/40f80e99-948c-44b4-8ae5-59f84553fee8/responses +2025-07-10 22:40:28 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-10 22:40:28 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-10 22:40:28 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: []... +2025-07-10 22:40:29 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 4/20) - elapsed: 4.5s +2025-07-10 22:40:29 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/40f80e99-948c-44b4-8ae5-59f84553fee8/responses +2025-07-10 22:40:29 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-10 22:40:30 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-10 22:40:30 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: []... +2025-07-10 22:40:31 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 5/20) - elapsed: 6.0s +2025-07-10 22:40:31 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/40f80e99-948c-44b4-8ae5-59f84553fee8/responses +2025-07-10 22:40:31 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-10 22:40:31 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-10 22:40:31 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: []... +2025-07-10 22:40:33 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 6/20) - elapsed: 7.5s +2025-07-10 22:40:33 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/40f80e99-948c-44b4-8ae5-59f84553fee8/responses +2025-07-10 22:40:33 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-10 22:40:33 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-10 22:40:33 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: []... +2025-07-10 22:40:34 - newmusic.spotify_client - INFO - get_user_playlists:113 - Retrieved 7 playlists +2025-07-10 22:40:35 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 7/20) - elapsed: 9.0s +2025-07-10 22:40:35 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/40f80e99-948c-44b4-8ae5-59f84553fee8/responses +2025-07-10 22:40:35 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-10 22:40:35 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-10 22:40:35 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: []... +2025-07-10 22:40:36 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 8/20) - elapsed: 10.5s +2025-07-10 22:40:36 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/40f80e99-948c-44b4-8ae5-59f84553fee8/responses +2025-07-10 22:40:36 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-10 22:40:37 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-10 22:40:37 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: []... +2025-07-10 22:40:38 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 9/20) - elapsed: 12.0s +2025-07-10 22:40:38 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/40f80e99-948c-44b4-8ae5-59f84553fee8/responses +2025-07-10 22:40:38 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-10 22:40:38 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-10 22:40:38 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: []... +2025-07-10 22:40:40 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 10/20) - elapsed: 13.5s +2025-07-10 22:40:40 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/40f80e99-948c-44b4-8ae5-59f84553fee8/responses +2025-07-10 22:40:40 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-10 22:40:40 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-10 22:40:40 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: []... +2025-07-10 22:40:42 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 11/20) - elapsed: 15.0s +2025-07-10 22:40:42 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/40f80e99-948c-44b4-8ae5-59f84553fee8/responses +2025-07-10 22:40:42 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-10 22:40:42 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-10 22:40:42 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: [{"fileCount":3,"files":[{"code":1,"extension":"","filename":"@@kflrr\\World of Darkness\\Mage\\Charsheets\\virtual adepts c sheet.pdf","size":119030,"isLocked":false},{"code":1,"extension":"","filename":"@@kflrr\\World of Darkness\\Mage\\Mage - The Ascension\\WW4060 MTA - Tradition Book - Virtual Adepts (1e).pdf","size":33530594,"isLocked":false},{"code":1,"extension":"","filename":"@@kflrr\\World of Darkness\\Mage\\Mage - The Ascension\\WW4660 MTA - Tradition Book - Virtual Adepts (Revised).pd... +2025-07-10 22:40:42 - newmusic.soulseek_client - INFO - search:597 - Found 24 new responses (24 total) at 15.0s +2025-07-10 22:40:42 - newmusic.soulseek_client - DEBUG - _process_search_responses:345 - Processing 24 user responses +2025-07-10 22:40:42 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Letham has 3 files +2025-07-10 22:40:42 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User zeroscan has 2 files +2025-07-10 22:40:42 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User buk4 has 1 files +2025-07-10 22:40:42 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Satani-Vitales has 3 files +2025-07-10 22:40:42 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User koalabeer has 3 files +2025-07-10 22:40:42 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User exsanguinidraculae has 2 files +2025-07-10 22:40:42 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User HomotopicCensorship has 3 files +2025-07-10 22:40:42 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User leonardoclk has 3 files +2025-07-10 22:40:42 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Seyti has 10 files +2025-07-10 22:40:42 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User aajzugikamlzcr has 1 files +2025-07-10 22:40:42 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User soulshookt has 3 files +2025-07-10 22:40:42 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User raspberry2 has 10 files +2025-07-10 22:40:42 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User nightmare_dronemk12 has 3 files +2025-07-10 22:40:42 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User ruszok has 1 files +2025-07-10 22:40:42 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Dax_VR has 10 files +2025-07-10 22:40:42 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User RuuqoHoosk has 346 files +2025-07-10 22:40:42 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User drchzbrgr has 5 files +2025-07-10 22:40:42 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Kaya-Sem has 1 files +2025-07-10 22:40:42 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User KindaRatchet has 1 files +2025-07-10 22:40:42 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Ultravod has 9 files +2025-07-10 22:40:42 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User thinkibettergo has 1 files +2025-07-10 22:40:42 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User ofoijacussa has 0 files +2025-07-10 22:40:42 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User belthane has 3 files +2025-07-10 22:40:42 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Shooby has 6 files +2025-07-10 22:40:42 - newmusic.soulseek_client - INFO - _process_search_responses:399 - Found 9 individual tracks and 6 albums +2025-07-10 22:40:42 - newmusic.soulseek_client - DEBUG - _process_search_responses:400 - Album detection details: 15 potential albums processed +2025-07-10 22:40:42 - newmusic.soulseek_client - DEBUG - _process_search_responses:402 - Album: zeroscan/Music/aofd3/Mallsoft & Shopping Mall Ambience -> 2 tracks +2025-07-10 22:40:42 - newmusic.soulseek_client - DEBUG - _process_search_responses:402 - Album: buk4/@@bmlwc/Soulseek Downloads/c34wkpcv/Relaxing Synthwave Top 105 -> 1 tracks +2025-07-10 22:40:42 - newmusic.soulseek_client - DEBUG - _process_search_responses:402 - Album: koalabeer/Music/Vaporwave/Vapor Vault/virtual-internet-prison-vhs-wkvbyn -> 3 tracks +2025-07-10 22:40:42 - newmusic.soulseek_client - INFO - search:617 - Processed results: 9 tracks, 6 albums +2025-07-10 22:40:44 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 12/20) - elapsed: 16.5s +2025-07-10 22:40:44 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/40f80e99-948c-44b4-8ae5-59f84553fee8/responses +2025-07-10 22:40:44 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-10 22:40:44 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-10 22:40:44 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: [{"fileCount":3,"files":[{"code":1,"extension":"","filename":"@@kflrr\\World of Darkness\\Mage\\Charsheets\\virtual adepts c sheet.pdf","size":119030,"isLocked":false},{"code":1,"extension":"","filename":"@@kflrr\\World of Darkness\\Mage\\Mage - The Ascension\\WW4060 MTA - Tradition Book - Virtual Adepts (1e).pdf","size":33530594,"isLocked":false},{"code":1,"extension":"","filename":"@@kflrr\\World of Darkness\\Mage\\Mage - The Ascension\\WW4660 MTA - Tradition Book - Virtual Adepts (Revised).pd... +2025-07-10 22:40:44 - newmusic.soulseek_client - DEBUG - search:624 - No new responses, total still: 24 +2025-07-10 22:40:45 - newmusic.soulseek_client - DEBUG - download:645 - Attempting to download: Unsynced music\Techno\1717 - Virtual Mage - Aether.flac from Dax_VR (size: 22189939) +2025-07-10 22:40:45 - newmusic.soulseek_client - DEBUG - download:658 - Using web interface API format: [{'filename': 'Unsynced music\\Techno\\1717 - Virtual Mage - Aether.flac', 'size': 22189939, 'path': 'E:\\Broque Projects\\newMusic\\downloads'}] +2025-07-10 22:40:45 - newmusic.soulseek_client - DEBUG - download:662 - Trying web interface endpoint: transfers/downloads/Dax_VR +2025-07-10 22:40:45 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making POST request to: http://localhost:5030/api/v0/transfers/downloads/Dax_VR +2025-07-10 22:40:45 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-10 22:40:45 - newmusic.soulseek_client - DEBUG - _make_request:245 - JSON payload: [{'filename': 'Unsynced music\\Techno\\1717 - Virtual Mage - Aether.flac', 'size': 22189939, 'path': 'E:\\Broque Projects\\newMusic\\downloads'}] +2025-07-10 22:40:45 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 13/20) - elapsed: 18.0s +2025-07-10 22:40:45 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/40f80e99-948c-44b4-8ae5-59f84553fee8/responses +2025-07-10 22:40:45 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-10 22:40:46 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-10 22:40:46 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: [{"fileCount":3,"files":[{"code":1,"extension":"","filename":"@@kflrr\\World of Darkness\\Mage\\Charsheets\\virtual adepts c sheet.pdf","size":119030,"isLocked":false},{"code":1,"extension":"","filename":"@@kflrr\\World of Darkness\\Mage\\Mage - The Ascension\\WW4060 MTA - Tradition Book - Virtual Adepts (1e).pdf","size":33530594,"isLocked":false},{"code":1,"extension":"","filename":"@@kflrr\\World of Darkness\\Mage\\Mage - The Ascension\\WW4660 MTA - Tradition Book - Virtual Adepts (Revised).pd... +2025-07-10 22:40:46 - newmusic.soulseek_client - DEBUG - search:624 - No new responses, total still: 24 +2025-07-10 22:40:46 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 201 +2025-07-10 22:40:46 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: ... +2025-07-10 22:40:46 - newmusic.soulseek_client - INFO - download:667 - [SUCCESS] Started download: Unsynced music\Techno\1717 - Virtual Mage - Aether.flac from Dax_VR +2025-07-10 22:40:47 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 14/20) - elapsed: 19.5s +2025-07-10 22:40:47 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/40f80e99-948c-44b4-8ae5-59f84553fee8/responses +2025-07-10 22:40:47 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-10 22:40:47 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-10 22:40:47 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: [{"fileCount":3,"files":[{"code":1,"extension":"","filename":"@@kflrr\\World of Darkness\\Mage\\Charsheets\\virtual adepts c sheet.pdf","size":119030,"isLocked":false},{"code":1,"extension":"","filename":"@@kflrr\\World of Darkness\\Mage\\Mage - The Ascension\\WW4060 MTA - Tradition Book - Virtual Adepts (1e).pdf","size":33530594,"isLocked":false},{"code":1,"extension":"","filename":"@@kflrr\\World of Darkness\\Mage\\Mage - The Ascension\\WW4660 MTA - Tradition Book - Virtual Adepts (Revised).pd... +2025-07-10 22:40:47 - newmusic.soulseek_client - DEBUG - search:624 - No new responses, total still: 24 +2025-07-10 22:40:49 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 15/20) - elapsed: 21.0s +2025-07-10 22:40:49 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/40f80e99-948c-44b4-8ae5-59f84553fee8/responses +2025-07-10 22:40:49 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-10 22:40:49 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-10 22:40:49 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: [{"fileCount":3,"files":[{"code":1,"extension":"","filename":"@@kflrr\\World of Darkness\\Mage\\Charsheets\\virtual adepts c sheet.pdf","size":119030,"isLocked":false},{"code":1,"extension":"","filename":"@@kflrr\\World of Darkness\\Mage\\Mage - The Ascension\\WW4060 MTA - Tradition Book - Virtual Adepts (1e).pdf","size":33530594,"isLocked":false},{"code":1,"extension":"","filename":"@@kflrr\\World of Darkness\\Mage\\Mage - The Ascension\\WW4660 MTA - Tradition Book - Virtual Adepts (Revised).pd... +2025-07-10 22:40:49 - newmusic.soulseek_client - DEBUG - search:624 - No new responses, total still: 24 +2025-07-10 22:40:51 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 16/20) - elapsed: 22.5s +2025-07-10 22:40:51 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/40f80e99-948c-44b4-8ae5-59f84553fee8/responses +2025-07-10 22:40:51 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-10 22:40:51 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-10 22:40:51 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: [{"fileCount":3,"files":[{"code":1,"extension":"","filename":"@@kflrr\\World of Darkness\\Mage\\Charsheets\\virtual adepts c sheet.pdf","size":119030,"isLocked":false},{"code":1,"extension":"","filename":"@@kflrr\\World of Darkness\\Mage\\Mage - The Ascension\\WW4060 MTA - Tradition Book - Virtual Adepts (1e).pdf","size":33530594,"isLocked":false},{"code":1,"extension":"","filename":"@@kflrr\\World of Darkness\\Mage\\Mage - The Ascension\\WW4660 MTA - Tradition Book - Virtual Adepts (Revised).pd... +2025-07-10 22:40:51 - newmusic.soulseek_client - DEBUG - search:624 - No new responses, total still: 24 +2025-07-10 22:40:52 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 17/20) - elapsed: 24.0s +2025-07-10 22:40:52 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/40f80e99-948c-44b4-8ae5-59f84553fee8/responses +2025-07-10 22:40:52 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-10 22:40:53 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-10 22:40:53 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: [{"fileCount":3,"files":[{"code":1,"extension":"","filename":"@@kflrr\\World of Darkness\\Mage\\Charsheets\\virtual adepts c sheet.pdf","size":119030,"isLocked":false},{"code":1,"extension":"","filename":"@@kflrr\\World of Darkness\\Mage\\Mage - The Ascension\\WW4060 MTA - Tradition Book - Virtual Adepts (1e).pdf","size":33530594,"isLocked":false},{"code":1,"extension":"","filename":"@@kflrr\\World of Darkness\\Mage\\Mage - The Ascension\\WW4660 MTA - Tradition Book - Virtual Adepts (Revised).pd... +2025-07-10 22:40:53 - newmusic.soulseek_client - DEBUG - search:624 - No new responses, total still: 24 +2025-07-10 22:40:54 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 18/20) - elapsed: 25.5s +2025-07-10 22:40:54 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/40f80e99-948c-44b4-8ae5-59f84553fee8/responses +2025-07-10 22:40:54 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-10 22:40:54 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-10 22:40:54 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: [{"fileCount":3,"files":[{"code":1,"extension":"","filename":"@@kflrr\\World of Darkness\\Mage\\Charsheets\\virtual adepts c sheet.pdf","size":119030,"isLocked":false},{"code":1,"extension":"","filename":"@@kflrr\\World of Darkness\\Mage\\Mage - The Ascension\\WW4060 MTA - Tradition Book - Virtual Adepts (1e).pdf","size":33530594,"isLocked":false},{"code":1,"extension":"","filename":"@@kflrr\\World of Darkness\\Mage\\Mage - The Ascension\\WW4660 MTA - Tradition Book - Virtual Adepts (Revised).pd... +2025-07-10 22:40:54 - newmusic.soulseek_client - DEBUG - search:624 - No new responses, total still: 24 +2025-07-10 22:40:56 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 19/20) - elapsed: 27.0s +2025-07-10 22:40:56 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/40f80e99-948c-44b4-8ae5-59f84553fee8/responses +2025-07-10 22:40:56 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-10 22:40:56 - newmusic.soulseek_client - DEBUG - download:645 - Attempting to download: Unsynced music\Techno\1727 - Virtual Mage - Orbit Love.flac from Dax_VR (size: 22566763) +2025-07-10 22:40:56 - newmusic.soulseek_client - DEBUG - download:658 - Using web interface API format: [{'filename': 'Unsynced music\\Techno\\1727 - Virtual Mage - Orbit Love.flac', 'size': 22566763, 'path': 'E:\\Broque Projects\\newMusic\\downloads'}] +2025-07-10 22:40:56 - newmusic.soulseek_client - DEBUG - download:662 - Trying web interface endpoint: transfers/downloads/Dax_VR +2025-07-10 22:40:56 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making POST request to: http://localhost:5030/api/v0/transfers/downloads/Dax_VR +2025-07-10 22:40:56 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-10 22:40:56 - newmusic.soulseek_client - DEBUG - _make_request:245 - JSON payload: [{'filename': 'Unsynced music\\Techno\\1727 - Virtual Mage - Orbit Love.flac', 'size': 22566763, 'path': 'E:\\Broque Projects\\newMusic\\downloads'}] +2025-07-10 22:40:56 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-10 22:40:56 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: [{"fileCount":3,"files":[{"code":1,"extension":"","filename":"@@kflrr\\World of Darkness\\Mage\\Charsheets\\virtual adepts c sheet.pdf","size":119030,"isLocked":false},{"code":1,"extension":"","filename":"@@kflrr\\World of Darkness\\Mage\\Mage - The Ascension\\WW4060 MTA - Tradition Book - Virtual Adepts (1e).pdf","size":33530594,"isLocked":false},{"code":1,"extension":"","filename":"@@kflrr\\World of Darkness\\Mage\\Mage - The Ascension\\WW4660 MTA - Tradition Book - Virtual Adepts (Revised).pd... +2025-07-10 22:40:56 - newmusic.soulseek_client - DEBUG - search:624 - No new responses, total still: 24 +2025-07-10 22:40:57 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 201 +2025-07-10 22:40:57 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: ... +2025-07-10 22:40:57 - newmusic.soulseek_client - INFO - download:667 - [SUCCESS] Started download: Unsynced music\Techno\1727 - Virtual Mage - Orbit Love.flac from Dax_VR +2025-07-10 22:40:58 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 20/20) - elapsed: 28.5s +2025-07-10 22:40:58 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/40f80e99-948c-44b4-8ae5-59f84553fee8/responses +2025-07-10 22:40:58 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-10 22:40:58 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-10 22:40:58 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: [{"fileCount":3,"files":[{"code":1,"extension":"","filename":"@@kflrr\\World of Darkness\\Mage\\Charsheets\\virtual adepts c sheet.pdf","size":119030,"isLocked":false},{"code":1,"extension":"","filename":"@@kflrr\\World of Darkness\\Mage\\Mage - The Ascension\\WW4060 MTA - Tradition Book - Virtual Adepts (1e).pdf","size":33530594,"isLocked":false},{"code":1,"extension":"","filename":"@@kflrr\\World of Darkness\\Mage\\Mage - The Ascension\\WW4660 MTA - Tradition Book - Virtual Adepts (Revised).pd... +2025-07-10 22:40:58 - newmusic.soulseek_client - DEBUG - search:624 - No new responses, total still: 24 +2025-07-10 22:40:58 - newmusic.soulseek_client - INFO - search:632 - Search completed. Final results: 9 tracks and 6 albums for query: Virtual Mage +2025-07-10 22:43:15 - newmusic.main - INFO - closeEvent:171 - Closing application... +2025-07-10 22:43:15 - newmusic.main - INFO - closeEvent:176 - Cleaning up Downloads page threads... +2025-07-10 22:43:15 - newmusic.main - INFO - closeEvent:181 - Stopping status monitoring thread... +2025-07-10 22:43:16 - newmusic.main - INFO - closeEvent:186 - Closing Soulseek client... +2025-07-10 22:43:16 - newmusic.main - INFO - closeEvent:192 - Application closed successfully +2025-07-10 22:49:06 - newmusic - INFO - setup_logging:57 - Logging initialized with level: DEBUG +2025-07-10 22:49:06 - newmusic.main - INFO - main:206 - Starting NewMusic application +2025-07-10 22:49:06 - newmusic.spotify_client - INFO - _setup_client:84 - Successfully authenticated with Spotify as broquethomas +2025-07-10 22:49:06 - newmusic.plex_client - INFO - _find_music_library:98 - Found music library: Music +2025-07-10 22:49:06 - newmusic.plex_client - INFO - _setup_client:84 - Successfully connected to Plex server: PLEX-MACHINE +2025-07-10 22:49:06 - newmusic.soulseek_client - INFO - _setup_client:220 - Soulseek client configured with slskd at http://localhost:5030 +2025-07-10 22:49:06 - newmusic.main - INFO - change_page:158 - Changed to page: dashboard +2025-07-10 22:49:06 - newmusic.main - INFO - setup_media_player_connections:145 - Media player connections established between sidebar and downloads page +2025-07-10 22:49:07 - newmusic.spotify_client - INFO - get_user_playlists:106 - Fetching tracks for playlist: Aether +2025-07-10 22:49:07 - newmusic.spotify_client - INFO - get_user_playlists:106 - Fetching tracks for playlist: Favorite Artists +2025-07-10 22:49:08 - newmusic.main - INFO - change_page:158 - Changed to page: downloads +2025-07-10 22:49:09 - newmusic.spotify_client - INFO - get_user_playlists:106 - Fetching tracks for playlist: Brittnea +2025-07-10 22:49:10 - newmusic.spotify_client - INFO - get_user_playlists:106 - Fetching tracks for playlist: Baleigh +2025-07-10 22:49:11 - newmusic.soulseek_client - INFO - search:551 - Starting search for: 'Virtual Mage' +2025-07-10 22:49:11 - newmusic.soulseek_client - DEBUG - search:561 - Search data: {'searchText': 'Virtual Mage', 'timeout': 30000, 'filterResponses': True, 'minimumResponseFileCount': 1, 'minimumPeerUploadSpeed': 0} +2025-07-10 22:49:11 - newmusic.soulseek_client - DEBUG - search:562 - Making POST request to: http://localhost:5030/api/v0/searches +2025-07-10 22:49:11 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making POST request to: http://localhost:5030/api/v0/searches +2025-07-10 22:49:11 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-10 22:49:11 - newmusic.soulseek_client - DEBUG - _make_request:245 - JSON payload: {'searchText': 'Virtual Mage', 'timeout': 30000, 'filterResponses': True, 'minimumResponseFileCount': 1, 'minimumPeerUploadSpeed': 0} +2025-07-10 22:49:11 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-10 22:49:11 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: {"fileCount":0,"id":"0d4e498a-23a4-4025-810a-e5db3085cec2","isComplete":false,"lockedFileCount":0,"responseCount":0,"responses":[],"searchText":"Virtual Mage","startedAt":"2025-07-11T05:49:11.5441738Z","state":"InProgress","token":273}... +2025-07-10 22:49:11 - newmusic.soulseek_client - INFO - search:575 - Search initiated with ID: 0d4e498a-23a4-4025-810a-e5db3085cec2 +2025-07-10 22:49:11 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 1/20) - elapsed: 0.0s +2025-07-10 22:49:11 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/0d4e498a-23a4-4025-810a-e5db3085cec2/responses +2025-07-10 22:49:11 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-10 22:49:11 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-10 22:49:11 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: []... +2025-07-10 22:49:12 - newmusic.spotify_client - INFO - get_user_playlists:106 - Fetching tracks for playlist: Extra Music +2025-07-10 22:49:13 - newmusic.spotify_client - INFO - get_user_playlists:106 - Fetching tracks for playlist: Maggi Main +2025-07-10 22:49:13 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 2/20) - elapsed: 1.5s +2025-07-10 22:49:13 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/0d4e498a-23a4-4025-810a-e5db3085cec2/responses +2025-07-10 22:49:13 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-10 22:49:13 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-10 22:49:13 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: []... +2025-07-10 22:49:15 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 3/20) - elapsed: 3.0s +2025-07-10 22:49:15 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/0d4e498a-23a4-4025-810a-e5db3085cec2/responses +2025-07-10 22:49:15 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-10 22:49:15 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-10 22:49:15 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: []... +2025-07-10 22:49:16 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 4/20) - elapsed: 4.5s +2025-07-10 22:49:16 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/0d4e498a-23a4-4025-810a-e5db3085cec2/responses +2025-07-10 22:49:16 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-10 22:49:17 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-10 22:49:17 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: []... +2025-07-10 22:49:18 - newmusic.spotify_client - INFO - get_user_playlists:106 - Fetching tracks for playlist: Broque Main +2025-07-10 22:49:18 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 5/20) - elapsed: 6.0s +2025-07-10 22:49:18 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/0d4e498a-23a4-4025-810a-e5db3085cec2/responses +2025-07-10 22:49:18 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-10 22:49:18 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-10 22:49:18 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: []... +2025-07-10 22:49:20 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 6/20) - elapsed: 7.5s +2025-07-10 22:49:20 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/0d4e498a-23a4-4025-810a-e5db3085cec2/responses +2025-07-10 22:49:20 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-10 22:49:20 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-10 22:49:20 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: []... +2025-07-10 22:49:22 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 7/20) - elapsed: 9.0s +2025-07-10 22:49:22 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/0d4e498a-23a4-4025-810a-e5db3085cec2/responses +2025-07-10 22:49:22 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-10 22:49:22 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-10 22:49:22 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: []... +2025-07-10 22:49:23 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 8/20) - elapsed: 10.5s +2025-07-10 22:49:23 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/0d4e498a-23a4-4025-810a-e5db3085cec2/responses +2025-07-10 22:49:23 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-10 22:49:24 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-10 22:49:24 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: []... +2025-07-10 22:49:25 - newmusic.spotify_client - INFO - get_user_playlists:113 - Retrieved 7 playlists +2025-07-10 22:49:25 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 9/20) - elapsed: 12.0s +2025-07-10 22:49:25 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/0d4e498a-23a4-4025-810a-e5db3085cec2/responses +2025-07-10 22:49:25 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-10 22:49:25 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-10 22:49:25 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: []... +2025-07-10 22:49:27 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 10/20) - elapsed: 13.5s +2025-07-10 22:49:27 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/0d4e498a-23a4-4025-810a-e5db3085cec2/responses +2025-07-10 22:49:27 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-10 22:49:27 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-10 22:49:27 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: []... +2025-07-10 22:49:29 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 11/20) - elapsed: 15.0s +2025-07-10 22:49:29 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/0d4e498a-23a4-4025-810a-e5db3085cec2/responses +2025-07-10 22:49:29 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-10 22:49:29 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-10 22:49:29 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: [{"fileCount":1,"files":[{"code":1,"extension":"","filename":"musictemp\\random\\chillsynth\\Virtual Mage - Refraction [1191940288].opus","length":154,"size":1343329,"isLocked":false}],"hasFreeUploadSlot":true,"lockedFileCount":0,"lockedFiles":[],"queueLength":0,"token":273,"uploadSpeed":1100539,"username":"ruszok"},{"fileCount":3,"files":[{"code":1,"extension":"","filename":"@@fedfm\\RPGs\\oldworldofdarkness\\Mage the Ascension\\Tradition Book - Virtual Adepts (1994).pdf","size":33530594,"isLoc... +2025-07-10 22:49:29 - newmusic.soulseek_client - INFO - search:597 - Found 24 new responses (24 total) at 15.0s +2025-07-10 22:49:29 - newmusic.soulseek_client - DEBUG - _process_search_responses:345 - Processing 24 user responses +2025-07-10 22:49:29 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User ruszok has 1 files +2025-07-10 22:49:29 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User nightmare_dronemk12 has 3 files +2025-07-10 22:49:29 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Letham has 3 files +2025-07-10 22:49:29 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Dax_VR has 10 files +2025-07-10 22:49:29 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Kaya-Sem has 1 files +2025-07-10 22:49:29 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User zeroscan has 2 files +2025-07-10 22:49:29 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User drchzbrgr has 5 files +2025-07-10 22:49:29 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Seyti has 10 files +2025-07-10 22:49:29 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User thinkibettergo has 1 files +2025-07-10 22:49:29 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User buk4 has 1 files +2025-07-10 22:49:29 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User aajzugikamlzcr has 1 files +2025-07-10 22:49:29 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User koalabeer has 3 files +2025-07-10 22:49:29 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Satani-Vitales has 3 files +2025-07-10 22:49:29 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User exsanguinidraculae has 2 files +2025-07-10 22:49:29 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User HomotopicCensorship has 3 files +2025-07-10 22:49:29 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User leonardoclk has 3 files +2025-07-10 22:49:29 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User raspberry2 has 10 files +2025-07-10 22:49:29 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Ultravod has 9 files +2025-07-10 22:49:29 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User soulshookt has 3 files +2025-07-10 22:49:29 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User KindaRatchet has 1 files +2025-07-10 22:49:29 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Shooby has 6 files +2025-07-10 22:49:29 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User ofoijacussa has 0 files +2025-07-10 22:49:29 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User belthane has 3 files +2025-07-10 22:49:29 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User RuuqoHoosk has 346 files +2025-07-10 22:49:29 - newmusic.soulseek_client - INFO - _process_search_responses:399 - Found 9 individual tracks and 6 albums +2025-07-10 22:49:29 - newmusic.soulseek_client - DEBUG - _process_search_responses:400 - Album detection details: 15 potential albums processed +2025-07-10 22:49:29 - newmusic.soulseek_client - DEBUG - _process_search_responses:402 - Album: Dax_VR/Unsynced music/Techno -> 10 tracks +2025-07-10 22:49:29 - newmusic.soulseek_client - DEBUG - _process_search_responses:402 - Album: Kaya-Sem/media/To Sort/Sorting Bin/Virtual Mage -> 1 tracks +2025-07-10 22:49:29 - newmusic.soulseek_client - DEBUG - _process_search_responses:402 - Album: zeroscan/Music/aofd3/Mallsoft & Shopping Mall Ambience -> 2 tracks +2025-07-10 22:49:29 - newmusic.soulseek_client - INFO - search:617 - Processed results: 9 tracks, 6 albums +2025-07-10 22:49:31 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 12/20) - elapsed: 16.5s +2025-07-10 22:49:31 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/0d4e498a-23a4-4025-810a-e5db3085cec2/responses +2025-07-10 22:49:31 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-10 22:49:31 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-10 22:49:31 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: [{"fileCount":1,"files":[{"code":1,"extension":"","filename":"musictemp\\random\\chillsynth\\Virtual Mage - Refraction [1191940288].opus","length":154,"size":1343329,"isLocked":false}],"hasFreeUploadSlot":true,"lockedFileCount":0,"lockedFiles":[],"queueLength":0,"token":273,"uploadSpeed":1100539,"username":"ruszok"},{"fileCount":3,"files":[{"code":1,"extension":"","filename":"@@fedfm\\RPGs\\oldworldofdarkness\\Mage the Ascension\\Tradition Book - Virtual Adepts (1994).pdf","size":33530594,"isLoc... +2025-07-10 22:49:31 - newmusic.soulseek_client - DEBUG - search:624 - No new responses, total still: 24 +2025-07-10 22:49:32 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 13/20) - elapsed: 18.0s +2025-07-10 22:49:32 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/0d4e498a-23a4-4025-810a-e5db3085cec2/responses +2025-07-10 22:49:32 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-10 22:49:33 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-10 22:49:33 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: [{"fileCount":1,"files":[{"code":1,"extension":"","filename":"musictemp\\random\\chillsynth\\Virtual Mage - Refraction [1191940288].opus","length":154,"size":1343329,"isLocked":false}],"hasFreeUploadSlot":true,"lockedFileCount":0,"lockedFiles":[],"queueLength":0,"token":273,"uploadSpeed":1100539,"username":"ruszok"},{"fileCount":3,"files":[{"code":1,"extension":"","filename":"@@fedfm\\RPGs\\oldworldofdarkness\\Mage the Ascension\\Tradition Book - Virtual Adepts (1994).pdf","size":33530594,"isLoc... +2025-07-10 22:49:33 - newmusic.soulseek_client - DEBUG - search:624 - No new responses, total still: 24 +2025-07-10 22:49:34 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 14/20) - elapsed: 19.5s +2025-07-10 22:49:34 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/0d4e498a-23a4-4025-810a-e5db3085cec2/responses +2025-07-10 22:49:34 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-10 22:49:34 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-10 22:49:34 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: [{"fileCount":1,"files":[{"code":1,"extension":"","filename":"musictemp\\random\\chillsynth\\Virtual Mage - Refraction [1191940288].opus","length":154,"size":1343329,"isLocked":false}],"hasFreeUploadSlot":true,"lockedFileCount":0,"lockedFiles":[],"queueLength":0,"token":273,"uploadSpeed":1100539,"username":"ruszok"},{"fileCount":3,"files":[{"code":1,"extension":"","filename":"@@fedfm\\RPGs\\oldworldofdarkness\\Mage the Ascension\\Tradition Book - Virtual Adepts (1994).pdf","size":33530594,"isLoc... +2025-07-10 22:49:34 - newmusic.soulseek_client - DEBUG - search:624 - No new responses, total still: 24 +2025-07-10 22:49:35 - newmusic.soulseek_client - DEBUG - download:645 - Attempting to download: @@bmlwc\Soulseek Downloads\c34wkpcv\Relaxing Synthwave Top 105\083 - Virtual Mage - Aether.mp3 from buk4 (size: 8344437) +2025-07-10 22:49:35 - newmusic.soulseek_client - DEBUG - download:658 - Using web interface API format: [{'filename': '@@bmlwc\\Soulseek Downloads\\c34wkpcv\\Relaxing Synthwave Top 105\\083 - Virtual Mage - Aether.mp3', 'size': 8344437, 'path': 'E:\\Broque Projects\\newMusic\\downloads'}] +2025-07-10 22:49:35 - newmusic.soulseek_client - DEBUG - download:662 - Trying web interface endpoint: transfers/downloads/buk4 +2025-07-10 22:49:35 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making POST request to: http://localhost:5030/api/v0/transfers/downloads/buk4 +2025-07-10 22:49:35 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-10 22:49:35 - newmusic.soulseek_client - DEBUG - _make_request:245 - JSON payload: [{'filename': '@@bmlwc\\Soulseek Downloads\\c34wkpcv\\Relaxing Synthwave Top 105\\083 - Virtual Mage - Aether.mp3', 'size': 8344437, 'path': 'E:\\Broque Projects\\newMusic\\downloads'}] +2025-07-10 22:49:36 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 201 +2025-07-10 22:49:36 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: ... +2025-07-10 22:49:36 - newmusic.soulseek_client - INFO - download:667 - [SUCCESS] Started download: @@bmlwc\Soulseek Downloads\c34wkpcv\Relaxing Synthwave Top 105\083 - Virtual Mage - Aether.mp3 from buk4 +2025-07-10 22:49:36 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 15/20) - elapsed: 21.0s +2025-07-10 22:49:36 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/0d4e498a-23a4-4025-810a-e5db3085cec2/responses +2025-07-10 22:49:36 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-10 22:49:36 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-10 22:49:36 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: [{"fileCount":1,"files":[{"code":1,"extension":"","filename":"musictemp\\random\\chillsynth\\Virtual Mage - Refraction [1191940288].opus","length":154,"size":1343329,"isLocked":false}],"hasFreeUploadSlot":true,"lockedFileCount":0,"lockedFiles":[],"queueLength":0,"token":273,"uploadSpeed":1100539,"username":"ruszok"},{"fileCount":3,"files":[{"code":1,"extension":"","filename":"@@fedfm\\RPGs\\oldworldofdarkness\\Mage the Ascension\\Tradition Book - Virtual Adepts (1994).pdf","size":33530594,"isLoc... +2025-07-10 22:49:36 - newmusic.soulseek_client - DEBUG - search:624 - No new responses, total still: 24 +2025-07-10 22:49:38 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 16/20) - elapsed: 22.5s +2025-07-10 22:49:38 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/0d4e498a-23a4-4025-810a-e5db3085cec2/responses +2025-07-10 22:49:38 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-10 22:49:38 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-10 22:49:38 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: [{"fileCount":1,"files":[{"code":1,"extension":"","filename":"musictemp\\random\\chillsynth\\Virtual Mage - Refraction [1191940288].opus","length":154,"size":1343329,"isLocked":false}],"hasFreeUploadSlot":true,"lockedFileCount":0,"lockedFiles":[],"queueLength":0,"token":273,"uploadSpeed":1100539,"username":"ruszok"},{"fileCount":3,"files":[{"code":1,"extension":"","filename":"@@fedfm\\RPGs\\oldworldofdarkness\\Mage the Ascension\\Tradition Book - Virtual Adepts (1994).pdf","size":33530594,"isLoc... +2025-07-10 22:49:38 - newmusic.soulseek_client - DEBUG - search:624 - No new responses, total still: 24 +2025-07-10 22:49:39 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 17/20) - elapsed: 24.0s +2025-07-10 22:49:39 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/0d4e498a-23a4-4025-810a-e5db3085cec2/responses +2025-07-10 22:49:39 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-10 22:49:40 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-10 22:49:40 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: [{"fileCount":1,"files":[{"code":1,"extension":"","filename":"musictemp\\random\\chillsynth\\Virtual Mage - Refraction [1191940288].opus","length":154,"size":1343329,"isLocked":false}],"hasFreeUploadSlot":true,"lockedFileCount":0,"lockedFiles":[],"queueLength":0,"token":273,"uploadSpeed":1100539,"username":"ruszok"},{"fileCount":3,"files":[{"code":1,"extension":"","filename":"@@fedfm\\RPGs\\oldworldofdarkness\\Mage the Ascension\\Tradition Book - Virtual Adepts (1994).pdf","size":33530594,"isLoc... +2025-07-10 22:49:40 - newmusic.soulseek_client - DEBUG - search:624 - No new responses, total still: 24 +2025-07-10 22:49:41 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 18/20) - elapsed: 25.5s +2025-07-10 22:49:41 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/0d4e498a-23a4-4025-810a-e5db3085cec2/responses +2025-07-10 22:49:41 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-10 22:49:41 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-10 22:49:41 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: [{"fileCount":1,"files":[{"code":1,"extension":"","filename":"musictemp\\random\\chillsynth\\Virtual Mage - Refraction [1191940288].opus","length":154,"size":1343329,"isLocked":false}],"hasFreeUploadSlot":true,"lockedFileCount":0,"lockedFiles":[],"queueLength":0,"token":273,"uploadSpeed":1100539,"username":"ruszok"},{"fileCount":3,"files":[{"code":1,"extension":"","filename":"@@fedfm\\RPGs\\oldworldofdarkness\\Mage the Ascension\\Tradition Book - Virtual Adepts (1994).pdf","size":33530594,"isLoc... +2025-07-10 22:49:41 - newmusic.soulseek_client - DEBUG - search:624 - No new responses, total still: 24 +2025-07-10 22:49:43 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 19/20) - elapsed: 27.0s +2025-07-10 22:49:43 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/0d4e498a-23a4-4025-810a-e5db3085cec2/responses +2025-07-10 22:49:43 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-10 22:49:43 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-10 22:49:43 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: [{"fileCount":1,"files":[{"code":1,"extension":"","filename":"musictemp\\random\\chillsynth\\Virtual Mage - Refraction [1191940288].opus","length":154,"size":1343329,"isLocked":false}],"hasFreeUploadSlot":true,"lockedFileCount":0,"lockedFiles":[],"queueLength":0,"token":273,"uploadSpeed":1100539,"username":"ruszok"},{"fileCount":3,"files":[{"code":1,"extension":"","filename":"@@fedfm\\RPGs\\oldworldofdarkness\\Mage the Ascension\\Tradition Book - Virtual Adepts (1994).pdf","size":33530594,"isLoc... +2025-07-10 22:49:43 - newmusic.soulseek_client - DEBUG - search:624 - No new responses, total still: 24 +2025-07-10 22:49:45 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 20/20) - elapsed: 28.5s +2025-07-10 22:49:45 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/0d4e498a-23a4-4025-810a-e5db3085cec2/responses +2025-07-10 22:49:45 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-10 22:49:45 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-10 22:49:45 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: [{"fileCount":1,"files":[{"code":1,"extension":"","filename":"musictemp\\random\\chillsynth\\Virtual Mage - Refraction [1191940288].opus","length":154,"size":1343329,"isLocked":false}],"hasFreeUploadSlot":true,"lockedFileCount":0,"lockedFiles":[],"queueLength":0,"token":273,"uploadSpeed":1100539,"username":"ruszok"},{"fileCount":3,"files":[{"code":1,"extension":"","filename":"@@fedfm\\RPGs\\oldworldofdarkness\\Mage the Ascension\\Tradition Book - Virtual Adepts (1994).pdf","size":33530594,"isLoc... +2025-07-10 22:49:45 - newmusic.soulseek_client - DEBUG - search:624 - No new responses, total still: 24 +2025-07-10 22:49:45 - newmusic.soulseek_client - INFO - search:632 - Search completed. Final results: 9 tracks and 6 albums for query: Virtual Mage +2025-07-10 22:49:55 - newmusic.soulseek_client - DEBUG - download:645 - Attempting to download: Music\aofd3\Mallsoft & Shopping Mall Ambience\09 - Virtual Mage - Moondust.ogg from zeroscan (size: 4266916) +2025-07-10 22:49:55 - newmusic.soulseek_client - DEBUG - download:658 - Using web interface API format: [{'filename': 'Music\\aofd3\\Mallsoft & Shopping Mall Ambience\\09 - Virtual Mage - Moondust.ogg', 'size': 4266916, 'path': 'E:\\Broque Projects\\newMusic\\downloads'}] +2025-07-10 22:49:55 - newmusic.soulseek_client - DEBUG - download:662 - Trying web interface endpoint: transfers/downloads/zeroscan +2025-07-10 22:49:55 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making POST request to: http://localhost:5030/api/v0/transfers/downloads/zeroscan +2025-07-10 22:49:55 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-10 22:49:55 - newmusic.soulseek_client - DEBUG - _make_request:245 - JSON payload: [{'filename': 'Music\\aofd3\\Mallsoft & Shopping Mall Ambience\\09 - Virtual Mage - Moondust.ogg', 'size': 4266916, 'path': 'E:\\Broque Projects\\newMusic\\downloads'}] +2025-07-10 22:49:56 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 201 +2025-07-10 22:49:56 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: ... +2025-07-10 22:49:56 - newmusic.soulseek_client - INFO - download:667 - [SUCCESS] Started download: Music\aofd3\Mallsoft & Shopping Mall Ambience\09 - Virtual Mage - Moondust.ogg from zeroscan +2025-07-10 22:50:15 - newmusic.soulseek_client - DEBUG - download:645 - Attempting to download: Music*\_various\VARIOUS-ARTISTS-XL-TECHNO-PLAYLIST\TECHNO_ 3\1871 - Virtual Mage - Into the Mirror.flac from raspberry2 (size: 14227218) +2025-07-10 22:50:15 - newmusic.soulseek_client - DEBUG - download:658 - Using web interface API format: [{'filename': 'Music*\\_various\\VARIOUS-ARTISTS-XL-TECHNO-PLAYLIST\\TECHNO_ 3\\1871 - Virtual Mage - Into the Mirror.flac', 'size': 14227218, 'path': 'E:\\Broque Projects\\newMusic\\downloads'}] +2025-07-10 22:50:15 - newmusic.soulseek_client - DEBUG - download:662 - Trying web interface endpoint: transfers/downloads/raspberry2 +2025-07-10 22:50:15 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making POST request to: http://localhost:5030/api/v0/transfers/downloads/raspberry2 +2025-07-10 22:50:15 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-10 22:50:15 - newmusic.soulseek_client - DEBUG - _make_request:245 - JSON payload: [{'filename': 'Music*\\_various\\VARIOUS-ARTISTS-XL-TECHNO-PLAYLIST\\TECHNO_ 3\\1871 - Virtual Mage - Into the Mirror.flac', 'size': 14227218, 'path': 'E:\\Broque Projects\\newMusic\\downloads'}] +2025-07-10 22:50:18 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 201 +2025-07-10 22:50:18 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: ... +2025-07-10 22:50:18 - newmusic.soulseek_client - INFO - download:667 - [SUCCESS] Started download: Music*\_various\VARIOUS-ARTISTS-XL-TECHNO-PLAYLIST\TECHNO_ 3\1871 - Virtual Mage - Into the Mirror.flac from raspberry2 +2025-07-10 22:50:53 - newmusic.soulseek_client - DEBUG - download:645 - Attempting to download: Music*\_various\VARIOUS-ARTISTS-XL-TECHNO-PLAYLIST\TECHNO_ 3\1819 - Virtual Mage - Liquid Everything.flac from raspberry2 (size: 13219910) +2025-07-10 22:50:53 - newmusic.soulseek_client - DEBUG - download:658 - Using web interface API format: [{'filename': 'Music*\\_various\\VARIOUS-ARTISTS-XL-TECHNO-PLAYLIST\\TECHNO_ 3\\1819 - Virtual Mage - Liquid Everything.flac', 'size': 13219910, 'path': 'E:\\Broque Projects\\newMusic\\downloads'}] +2025-07-10 22:50:53 - newmusic.soulseek_client - DEBUG - download:662 - Trying web interface endpoint: transfers/downloads/raspberry2 +2025-07-10 22:50:53 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making POST request to: http://localhost:5030/api/v0/transfers/downloads/raspberry2 +2025-07-10 22:50:53 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-10 22:50:53 - newmusic.soulseek_client - DEBUG - _make_request:245 - JSON payload: [{'filename': 'Music*\\_various\\VARIOUS-ARTISTS-XL-TECHNO-PLAYLIST\\TECHNO_ 3\\1819 - Virtual Mage - Liquid Everything.flac', 'size': 13219910, 'path': 'E:\\Broque Projects\\newMusic\\downloads'}] +2025-07-10 22:50:54 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 201 +2025-07-10 22:50:54 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: ... +2025-07-10 22:50:54 - newmusic.soulseek_client - INFO - download:667 - [SUCCESS] Started download: Music*\_various\VARIOUS-ARTISTS-XL-TECHNO-PLAYLIST\TECHNO_ 3\1819 - Virtual Mage - Liquid Everything.flac from raspberry2 +2025-07-10 22:51:14 - newmusic.main - INFO - closeEvent:171 - Closing application... +2025-07-10 22:51:14 - newmusic.main - INFO - closeEvent:176 - Cleaning up Downloads page threads... +2025-07-10 22:51:14 - newmusic.main - INFO - closeEvent:181 - Stopping status monitoring thread... +2025-07-10 22:51:16 - newmusic.main - INFO - closeEvent:186 - Closing Soulseek client... +2025-07-10 22:51:16 - newmusic.main - INFO - closeEvent:192 - Application closed successfully diff --git a/main.py b/main.py index ae2e1f9a..e33c64af 100644 --- a/main.py +++ b/main.py @@ -114,6 +114,9 @@ class MainWindow(QMainWindow): # Set dashboard as default page self.change_page("dashboard") + + # Connect media player signals between sidebar and downloads page + self.setup_media_player_connections() def setup_status_monitoring(self): # Start status monitoring thread @@ -125,6 +128,22 @@ class MainWindow(QMainWindow): self.status_thread.status_updated.connect(self.update_service_status) self.status_thread.start() + def setup_media_player_connections(self): + """Connect signals between downloads page and sidebar media player""" + # Connect downloads page signals to sidebar media player + self.downloads_page.track_started.connect(self.sidebar.media_player.set_track_info) + self.downloads_page.track_paused.connect(lambda: self.sidebar.media_player.set_playing_state(False)) + self.downloads_page.track_resumed.connect(lambda: self.sidebar.media_player.set_playing_state(True)) + self.downloads_page.track_stopped.connect(self.sidebar.media_player.clear_track) + self.downloads_page.track_finished.connect(self.sidebar.media_player.clear_track) + + # Connect sidebar media player signals to downloads page + self.sidebar.media_player.play_pause_requested.connect(self.downloads_page.handle_sidebar_play_pause) + self.sidebar.media_player.stop_requested.connect(self.downloads_page.handle_sidebar_stop) + self.sidebar.media_player.volume_changed.connect(self.downloads_page.handle_sidebar_volume) + + logger.info("Media player connections established between sidebar and downloads page") + def change_page(self, page_id: str): page_map = { "dashboard": 0, diff --git a/ui/__pycache__/sidebar.cpython-312.pyc b/ui/__pycache__/sidebar.cpython-312.pyc index 9ffac9b1..730f5f84 100644 Binary files a/ui/__pycache__/sidebar.cpython-312.pyc and b/ui/__pycache__/sidebar.cpython-312.pyc differ diff --git a/ui/pages/__pycache__/downloads.cpython-312.pyc b/ui/pages/__pycache__/downloads.cpython-312.pyc index b87e5201..6d7f5f2b 100644 Binary files a/ui/pages/__pycache__/downloads.cpython-312.pyc and b/ui/pages/__pycache__/downloads.cpython-312.pyc differ diff --git a/ui/pages/downloads.py b/ui/pages/downloads.py index 1d76a38a..5d61fd30 100644 --- a/ui/pages/downloads.py +++ b/ui/pages/downloads.py @@ -26,11 +26,17 @@ class AudioPlayer(QMediaPlayer): # Connect signals self.mediaStatusChanged.connect(self._on_media_status_changed) self.errorOccurred.connect(self._on_error_occurred) + self.playbackStateChanged.connect(self._on_playback_state_changed) # Track current file self.current_file_path = None self.is_playing = False + def _on_playback_state_changed(self, state): + """Keep is_playing flag synchronized with actual playback state""" + from PyQt6.QtMultimedia import QMediaPlayer + self.is_playing = (state == QMediaPlayer.PlaybackState.PlayingState) + def play_file(self, file_path): """Play an audio file from the given path""" try: @@ -47,7 +53,7 @@ class AudioPlayer(QMediaPlayer): # Start playback self.play() - self.is_playing = True + # is_playing will be set automatically by _on_playback_state_changed print(f"đŸŽĩ Started playing: {os.path.basename(file_path)}") return True @@ -62,36 +68,42 @@ class AudioPlayer(QMediaPlayer): """Toggle between play and pause""" if self.playbackState() == QMediaPlayer.PlaybackState.PlayingState: self.pause() - self.is_playing = False + # is_playing will be set automatically by _on_playback_state_changed return False # Now paused else: self.play() - self.is_playing = True + # is_playing will be set automatically by _on_playback_state_changed return True # Now playing def stop_playback(self): """Stop playback and reset""" self.stop() - self.is_playing = False + # is_playing will be set automatically by _on_playback_state_changed + self.release_file() + + def release_file(self): + """Release the current file handle by clearing the media source""" + self.setSource(QUrl()) # Clear the media source to release file handle self.current_file_path = None + print("🔓 Released audio file handle") def _on_media_status_changed(self, status): """Handle media status changes""" if status == QMediaPlayer.MediaStatus.EndOfMedia: print("đŸŽĩ Playback finished") - self.is_playing = False + # is_playing will be set automatically by _on_playback_state_changed self.playback_finished.emit() elif status == QMediaPlayer.MediaStatus.InvalidMedia: error_msg = "Invalid media file or unsupported format" print(f"❌ {error_msg}") - self.is_playing = False + # is_playing will be set automatically by _on_playback_state_changed self.playback_error.emit(error_msg) def _on_error_occurred(self, error, error_string): """Handle playback errors""" error_msg = f"Audio playback error: {error_string}" print(f"❌ {error_msg}") - self.is_playing = False + # is_playing will be set automatically by _on_playback_state_changed self.playback_error.emit(error_msg) class DownloadThread(QThread): @@ -2099,6 +2111,14 @@ class TabbedDownloadManager(QTabWidget): return self.active_queue.download_items class DownloadsPage(QWidget): + # Signals for media player communication + track_started = pyqtSignal(object) # Track result object + track_paused = pyqtSignal() + track_resumed = pyqtSignal() + track_stopped = pyqtSignal() + track_finished = pyqtSignal() + track_position_updated = pyqtSignal(float, float) # current_position, duration in seconds + def __init__(self, soulseek_client=None, parent=None): super().__init__(parent) self.soulseek_client = soulseek_client @@ -3045,17 +3065,43 @@ class DownloadsPage(QWidget): print(f"Failed to start album download: {str(e)}") def start_stream(self, search_result, result_item=None): - """Start streaming a search result using StreamingThread""" + """Start streaming a search result using StreamingThread or toggle if same track""" try: + # Check if this is the same track that's currently playing + current_track_id = getattr(self, 'current_track_id', None) + new_track_id = f"{search_result.username}:{search_result.filename}" + + if current_track_id == new_track_id and self.currently_playing_button == result_item: + # Same track clicked - toggle playback + print(f"Toggling playback for: {search_result.filename}") + + if self.audio_player.toggle_playback(): + # Now playing + result_item.set_playing_state() + self.track_resumed.emit() + print("đŸŽĩ Resumed playback") + else: + # Now paused + result_item.set_loading_state() # Use loading as "paused" state + self.track_paused.emit() + print("â¸ī¸ Paused playback") + + return + print(f"Starting stream: {search_result.filename} from {search_result.username}") - # Stop any currently playing audio and reset previous button + # Different track - stop current and start new if self.currently_playing_button: self.audio_player.stop_playback() self.currently_playing_button.reset_play_state() - # Track the new currently playing button + # Track the new currently playing button and track self.currently_playing_button = result_item + self.current_track_id = new_track_id + self.current_track_result = search_result + + # Clear Stream folder before starting new stream + self.clear_stream_folder() # Check if file is a valid audio type audio_extensions = ['.mp3', '.flac', '.ogg', '.aac', '.wma', '.wav'] @@ -3128,6 +3174,9 @@ class DownloadsPage(QWidget): # Set button to playing state if self.currently_playing_button: self.currently_playing_button.set_playing_state() + # Emit track started signal for sidebar media player + if hasattr(self, 'current_track_result') and self.current_track_result: + self.track_started.emit(self.current_track_result) else: print(f"❌ Failed to start audio playback") # Reset button on failure @@ -3189,6 +3238,16 @@ class DownloadsPage(QWidget): if self.currently_playing_button: self.currently_playing_button.reset_play_state() self.currently_playing_button = None + + # Emit track finished signal for sidebar media player + self.track_finished.emit() + + # Clear Stream folder when playback finishes + self.clear_stream_folder() + + # Clear track state + self.current_track_id = None + self.current_track_result = None def on_audio_playback_error(self, error_msg): """Handle audio playback errors""" @@ -3197,6 +3256,83 @@ class DownloadsPage(QWidget): if self.currently_playing_button: self.currently_playing_button.reset_play_state() self.currently_playing_button = None + + # Emit track stopped signal for sidebar media player + self.track_stopped.emit() + + # Clear Stream folder when playback errors + self.clear_stream_folder() + + # Clear track state + self.current_track_id = None + self.current_track_result = None + + def handle_sidebar_play_pause(self): + """Handle play/pause request from sidebar media player""" + # Use the actual QMediaPlayer state instead of manual flag + from PyQt6.QtMultimedia import QMediaPlayer + + if self.audio_player.playbackState() == QMediaPlayer.PlaybackState.PlayingState: + self.audio_player.pause() + # is_playing will be set automatically by _on_playback_state_changed + if self.currently_playing_button: + self.currently_playing_button.set_loading_state() # Use as "paused" state + self.track_paused.emit() + print("â¸ī¸ Paused from sidebar") + else: + self.audio_player.play() + # is_playing will be set automatically by _on_playback_state_changed + if self.currently_playing_button: + self.currently_playing_button.set_playing_state() + self.track_resumed.emit() + print("đŸŽĩ Resumed from sidebar") + + def handle_sidebar_stop(self): + """Handle stop request from sidebar media player""" + self.audio_player.stop_playback() + if self.currently_playing_button: + self.currently_playing_button.reset_play_state() + self.currently_playing_button = None + + # Emit track stopped signal + self.track_stopped.emit() + + # Clear Stream folder when stopping + self.clear_stream_folder() + + # Clear track state + self.current_track_id = None + self.current_track_result = None + print("âšī¸ Stopped from sidebar") + + def handle_sidebar_volume(self, volume): + """Handle volume change from sidebar media player""" + self.audio_player.audio_output.setVolume(volume) + print(f"🔊 Volume set to {int(volume * 100)}% from sidebar") + + def clear_stream_folder(self): + """Clear all files from the Stream folder to prevent playing wrong files""" + try: + # First, release any file handles from the audio player + if hasattr(self, 'audio_player') and self.audio_player: + self.audio_player.release_file() + print("🔓 Released audio player file handle before clearing") + + project_root = os.path.dirname(os.path.dirname(os.path.dirname(__file__))) # Go up from ui/pages/ + stream_folder = os.path.join(project_root, 'Stream') + + if os.path.exists(stream_folder): + for filename in os.listdir(stream_folder): + file_path = os.path.join(stream_folder, filename) + if os.path.isfile(file_path): + try: + os.remove(file_path) + print(f"đŸ—‘ī¸ Cleared old stream file: {filename}") + except Exception as e: + print(f"âš ī¸ Could not remove stream file {filename}: {e}") + + except Exception as e: + print(f"âš ī¸ Error clearing stream folder: {e}") def on_download_completed(self, message, download_item): """Handle successful download start""" diff --git a/ui/sidebar.py b/ui/sidebar.py index e0006c36..4c4841f5 100644 --- a/ui/sidebar.py +++ b/ui/sidebar.py @@ -1,6 +1,6 @@ from PyQt6.QtWidgets import (QWidget, QVBoxLayout, QHBoxLayout, QPushButton, - QLabel, QFrame, QSizePolicy, QSpacerItem) -from PyQt6.QtCore import Qt, pyqtSignal, QPropertyAnimation, QEasingCurve, QRect + QLabel, QFrame, QSizePolicy, QSpacerItem, QSlider, QProgressBar) +from PyQt6.QtCore import Qt, pyqtSignal, QPropertyAnimation, QEasingCurve, QRect, QTimer from PyQt6.QtGui import QFont, QPalette, QIcon, QPixmap, QPainter class SidebarButton(QPushButton): @@ -159,6 +159,276 @@ class StatusIndicator(QWidget): """) self.service_label.setStyleSheet("color: #b3b3b3; font-weight: 400;") +class MediaPlayer(QWidget): + # Signals for media control + play_pause_requested = pyqtSignal() + stop_requested = pyqtSignal() + volume_changed = pyqtSignal(float) # Volume as percentage (0.0 to 1.0) + + def __init__(self, parent=None): + super().__init__(parent) + self.is_playing = False + self.is_expanded = False + self.current_track = None + self.setup_ui() + + def setup_ui(self): + self.setFixedHeight(60) # Start collapsed + self.setStyleSheet(""" + MediaPlayer { + background: #181818; + border: 1px solid #282828; + border-radius: 8px; + margin: 0 8px; + } + """) + + layout = QVBoxLayout(self) + layout.setContentsMargins(15, 8, 15, 8) + layout.setSpacing(8) + + # Always visible header with basic controls + self.header = self.create_header() + layout.addWidget(self.header) + + # Expandable content (hidden when collapsed) + self.expanded_content = self.create_expanded_content() + self.expanded_content.setVisible(False) + layout.addWidget(self.expanded_content) + + # No track message (shown when no music) + self.no_track_label = QLabel("No track playing") + self.no_track_label.setAlignment(Qt.AlignmentFlag.AlignCenter) + self.no_track_label.setStyleSheet("color: #666666; font-size: 11px; padding: 10px;") + layout.addWidget(self.no_track_label) + + def create_header(self): + header = QWidget() + layout = QHBoxLayout(header) + layout.setContentsMargins(0, 0, 0, 0) + layout.setSpacing(12) + + # Track info (expandable on click) + self.track_info = QLabel("No track") + self.track_info.setStyleSheet(""" + QLabel { + color: #ffffff; + font-size: 12px; + font-weight: 500; + background: transparent; + } + """) + self.track_info.setCursor(Qt.CursorShape.PointingHandCursor) + self.track_info.mousePressEvent = self.toggle_expansion + + # Play/pause button + self.play_pause_btn = QPushButton("â–ļī¸") + self.play_pause_btn.setFixedSize(32, 32) + self.play_pause_btn.setStyleSheet(""" + QPushButton { + background: rgba(29, 185, 84, 0.2); + border: 1px solid #1db954; + border-radius: 16px; + color: #1db954; + font-size: 12px; + font-weight: bold; + } + QPushButton:hover { + background: rgba(29, 185, 84, 0.3); + transform: scale(1.05); + } + QPushButton:pressed { + background: rgba(29, 185, 84, 0.4); + } + QPushButton:disabled { + background: rgba(100, 100, 100, 0.2); + border: 1px solid #666666; + color: #666666; + } + """) + self.play_pause_btn.clicked.connect(self.on_play_pause_clicked) + self.play_pause_btn.setEnabled(False) + + layout.addWidget(self.track_info) + layout.addStretch() + layout.addWidget(self.play_pause_btn) + + return header + + def create_expanded_content(self): + content = QWidget() + layout = QVBoxLayout(content) + layout.setContentsMargins(0, 5, 0, 0) + layout.setSpacing(8) + + # Artist and album info + self.artist_album_label = QLabel("Unknown Artist â€ĸ Unknown Album") + self.artist_album_label.setStyleSheet(""" + QLabel { + color: #b3b3b3; + font-size: 10px; + background: transparent; + } + """) + layout.addWidget(self.artist_album_label) + + # Control buttons + controls_layout = QHBoxLayout() + controls_layout.setContentsMargins(0, 0, 0, 0) + controls_layout.setSpacing(10) + + # Stop button + self.stop_btn = QPushButton("âšī¸") + self.stop_btn.setFixedSize(24, 24) + self.stop_btn.setStyleSheet(""" + QPushButton { + background: rgba(226, 33, 52, 0.2); + border: 1px solid #e22134; + border-radius: 12px; + color: #e22134; + font-size: 10px; + } + QPushButton:hover { + background: rgba(226, 33, 52, 0.3); + } + QPushButton:disabled { + background: rgba(100, 100, 100, 0.2); + border: 1px solid #666666; + color: #666666; + } + """) + self.stop_btn.clicked.connect(self.on_stop_clicked) + self.stop_btn.setEnabled(False) + + # Volume control + volume_layout = QHBoxLayout() + volume_layout.setSpacing(5) + + volume_icon = QLabel("🔊") + volume_icon.setStyleSheet("color: #b3b3b3; font-size: 10px;") + + self.volume_slider = QSlider(Qt.Orientation.Horizontal) + self.volume_slider.setRange(0, 100) + self.volume_slider.setValue(70) # Default 70% volume + self.volume_slider.setFixedWidth(60) + self.volume_slider.setStyleSheet(""" + QSlider::groove:horizontal { + border: none; + height: 3px; + background: #404040; + border-radius: 1px; + } + QSlider::handle:horizontal { + background: #b3b3b3; + border: none; + width: 8px; + height: 8px; + border-radius: 4px; + margin: -3px 0; + } + QSlider::sub-page:horizontal { + background: #b3b3b3; + border-radius: 1px; + } + """) + self.volume_slider.valueChanged.connect(self.on_volume_changed) + + volume_layout.addWidget(volume_icon) + volume_layout.addWidget(self.volume_slider) + + controls_layout.addWidget(self.stop_btn) + controls_layout.addStretch() + controls_layout.addLayout(volume_layout) + + layout.addLayout(controls_layout) + + return content + + def toggle_expansion(self, event=None): + """Toggle between collapsed and expanded view""" + if not self.current_track: + return + + self.is_expanded = not self.is_expanded + + if self.is_expanded: + self.setFixedHeight(120) + self.expanded_content.setVisible(True) + self.no_track_label.setVisible(False) + else: + self.setFixedHeight(60) + self.expanded_content.setVisible(False) + + def set_track_info(self, track_result): + """Update the media player with new track information""" + self.current_track = track_result + + # Update track name + track_name = getattr(track_result, 'title', None) or getattr(track_result, 'filename', 'Unknown Track') + if hasattr(track_result, 'filename'): + # Clean up filename for display + import os + track_name = os.path.splitext(os.path.basename(track_result.filename))[0] + + self.track_info.setText(track_name) + + # Update artist and album + artist = getattr(track_result, 'artist', 'Unknown Artist') + album = getattr(track_result, 'album', 'Unknown Album') + self.artist_album_label.setText(f"{artist} â€ĸ {album}") + + # Enable controls + self.play_pause_btn.setEnabled(True) + self.stop_btn.setEnabled(True) + + # Hide no track message and show player + self.no_track_label.setVisible(False) + + # Auto-expand when new track starts + if not self.is_expanded: + self.toggle_expansion() + + def set_playing_state(self, playing): + """Update play/pause button state""" + self.is_playing = playing + if playing: + self.play_pause_btn.setText("â¸ī¸") + else: + self.play_pause_btn.setText("â–ļī¸") + + def clear_track(self): + """Clear current track and reset to no track state""" + self.current_track = None + self.is_playing = False + + # Update UI + self.track_info.setText("No track") + self.artist_album_label.setText("Unknown Artist â€ĸ Unknown Album") + self.play_pause_btn.setText("â–ļī¸") + self.play_pause_btn.setEnabled(False) + self.stop_btn.setEnabled(False) + + # Show no track message + self.no_track_label.setVisible(True) + + # Collapse view + if self.is_expanded: + self.toggle_expansion() + + def on_play_pause_clicked(self): + """Handle play/pause button click""" + self.play_pause_requested.emit() + + def on_stop_clicked(self): + """Handle stop button click""" + self.stop_requested.emit() + + def on_volume_changed(self, value): + """Handle volume slider change""" + volume = value / 100.0 # Convert to 0.0-1.0 + self.volume_changed.emit(volume) + + class ModernSidebar(QWidget): page_changed = pyqtSignal(str) @@ -192,6 +462,13 @@ class ModernSidebar(QWidget): # Spacer layout.addItem(QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)) + # Media Player section + self.media_player = MediaPlayer() + layout.addWidget(self.media_player) + + # Small spacer between media player and status + layout.addItem(QSpacerItem(20, 10, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Fixed)) + # Status section status_section = self.create_status_section() layout.addWidget(status_section)