From 79d9fc5045fddf28ccc6ac427e5a1326ad706285 Mon Sep 17 00:00:00 2001 From: Broque Thomas Date: Thu, 10 Jul 2025 22:53:24 -0700 Subject: [PATCH] working great --- .spotify_cache | 2 +- logs/app.log | 614 ++++++++++++++++++ main.py | 19 + ui/__pycache__/sidebar.cpython-312.pyc | Bin 15490 -> 27996 bytes .../__pycache__/downloads.cpython-312.pyc | Bin 174671 -> 181075 bytes ui/pages/downloads.py | 156 ++++- ui/sidebar.py | 281 +++++++- 7 files changed, 1059 insertions(+), 13 deletions(-) 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 9ffac9b1a14d9d924701fdeb477ae2d0e5df8ec3..730f5f84d8ff10a2055cd85dfc5d07cdbcdfe2f4 100644 GIT binary patch delta 10047 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 B04e|g delta 2243 zcmb7FU2GIp6rQ{P-JiDGZkMv#mZccl;s0OCUt6FBgtl9Xt!$C$?9Q|uy0csE%mQtU zC58tgFVq{NK_8T;5ivnoAAK+}#s?E(LXE)?%ZgXZU^vYDF9!`bzs#KL;ovPL&sR$7q!X80!oe>nb>bl~@(1MVv;aU%9y(%eb zqg?9)ZP^pr1rvVJ7ns3)qHp@2ltXm09BC&|Zgr4FHxaozG`!2d?o@DB%Y-flEf3RX zCmTiAC>xDz;dy}gN#uTa478$~#?i=w_kv^vHABkeb2&9*stP|(blI0eGfg1y_%4tV ziNtC9h&pz+CJC96^ul6qH0~tLOkem#<1%oX!NQqI0(6Q|x&nTw8(}TNI@T7enc9Hj zMuY&uCWIFe_zUs8LWW9DXc^V!iEcq_CBjyOZ2(pUaMz{fG`*k?Xo@*Xx1(tXnnHzf zMK)E*FlDn~&^FMO_z?sr@_9415BMxDt~>2q*@qhk5qJVeK$@pkdU~rskFx8FF7zP3 zbT|5y(Y+||LwE^cKSGH;dH|P45xNk%0iNUv--#yKwZv+ht7Ne;Sx?d>maJf=K&hHD zrEz&gwY=$qY36f=&6Lw-DuFRLN!VDAIfBJxv@5TuG}osoYFehNBnckOl%$UYcA>;2Num$;5P$qXN>2Ar9XoguzcO>$*zK-W#}^Yb80U+%$5%>>)_?c zNq#y}>V-YeRGH=4na?V`s-SOp!pG68on0Jk4DeKs!Fn>z!g7tzzQuO}`(^NVsH+=C zL`S3_-FaRfkVLoWqzbE)Zj#;XH)%;ZhBQi)v4ulzj(-IOA~5 zV=O4Y;P_Qw>*VWj1(Ke2HoOiYCd0ez&{{s1=(Af2JDo0PpR1|O|L0BVWGT5M+c~_U z2H(I6*?syry>r8HJEd{<*>JPNLyA8QM~U4b=h^JY>|x$}9;#wEys+igOjS4dn6!e} zD^g}u&W*ssxKv#;=cn3v^!238oTMp~!NR~ofWbC5g3q#TT7#pBup?To0%^d%2tJ9Z z#BOO{ZM_IO`YytI2-w;4u|GtG1Yr5+E~LxjPsC?G9BXx~AuK%BJ;fR3m#BDlfCMoN zpCTWi^mvqDwb3zzafGu7e7t;$(sRd48Z8Ky;A?aO{B=gSRb5~8PKLFfKJd`xa@WoV zV{UPFGrK>wI>^&P|8B9Ct;n`aS;6E)ueoVeuemEvReN6Z1Vi9N%MmI7tiZh6o`Pl% z>M+`>5ULR(2w1U{k32l%vOxKHjUfN++otE0LRQ^DufmeR*XR+12H_7UA>@&RkPh-l dKzzXQu8{muNV2HDG~DkXE$8<<6!4b^{11h~_YD95 diff --git a/ui/pages/__pycache__/downloads.cpython-312.pyc b/ui/pages/__pycache__/downloads.cpython-312.pyc index b87e5201cb4527a4be5357eab0a5e2f3c8c9d7ba..6d7f5f2b4e27e4b3ced2545ce5827be26b021fa8 100644 GIT binary patch delta 25728 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