From 8c3dc349d7b598a54e75939e3945916b6f88027c Mon Sep 17 00:00:00 2001 From: Broque Thomas Date: Fri, 11 Jul 2025 08:06:25 -0700 Subject: [PATCH] fix --- .spotify_cache | 2 +- logs/app.log | 461 ++++++++++++++++++ ui/__pycache__/sidebar.cpython-312.pyc | Bin 31616 -> 38471 bytes .../__pycache__/downloads.cpython-312.pyc | Bin 184472 -> 194910 bytes ui/pages/downloads.py | 222 +++++++++ ui/sidebar.py | 144 +++++- 6 files changed, 823 insertions(+), 6 deletions(-) diff --git a/.spotify_cache b/.spotify_cache index 4aee6a19..305aea02 100644 --- a/.spotify_cache +++ b/.spotify_cache @@ -1 +1 @@ -{"access_token": "BQAnlTqyfXziRaMqwvGnusJTk8HX8PQO7h7skueDFGgyxUn9_pD2U7YOQywX_NRaXTaIuU0olIGaF2hLmeooJDzCaQHK3bAayAREvPY2wQjkHB3dPZET9uH8CERAMmFqgL1CJ2dWcBtr-BUZ65sSo6Hbzs9w-kZXfiQ-DGAjJJ00hEBfgreoIo2agvLzfTASzFKgaVz8zmkeRWW1Cts4KGRgmsSp5hQWAzgnl6a3pEck6vbuf2yYpv1IcbOtg3Xn", "token_type": "Bearer", "expires_in": 3600, "scope": "user-library-read user-read-private playlist-read-private playlist-read-collaborative user-read-email", "expires_at": 1752218694, "refresh_token": "AQDmfQkPCGObfJeTUIbW1hAAwhSqkuHRA3Qh2dqVYMRh0eCkFMQgPNJDDzF8y-BiaVbj80zePkK_XSfYH1aJutMtNbnsqRKWuxP31BTrMc7pdUdbE7Fma4oH8wpDUKdG3MM"} \ No newline at end of file +{"access_token": "BQDg-UvdG9Cg2b6uScu5GMr49h2NQs3hisp8Qd-h7LgE0-cABcg3ElBEVT6UhY-M5URiIGZl6HnW1HQQss7-rogHCR4GR_wn8D8XcMwUK9W__BJG0PARsuxej-4BK7yW021owhYwbju5QYYSF8WurRiDiq4llUEcTwfNoaWel_h4HPOxYKuAUsRmiru37cbcdCinNB5zmuYqYQWxa7VaXYQBJ9kml_7Wp42X9O01pn3XpmDEsrUIoG-umg1P8c14", "token_type": "Bearer", "expires_in": 3600, "scope": "user-library-read user-read-private playlist-read-private playlist-read-collaborative user-read-email", "expires_at": 1752249818, "refresh_token": "AQDmfQkPCGObfJeTUIbW1hAAwhSqkuHRA3Qh2dqVYMRh0eCkFMQgPNJDDzF8y-BiaVbj80zePkK_XSfYH1aJutMtNbnsqRKWuxP31BTrMc7pdUdbE7Fma4oH8wpDUKdG3MM"} \ No newline at end of file diff --git a/logs/app.log b/logs/app.log index f73c808d..748aea0c 100644 --- a/logs/app.log +++ b/logs/app.log @@ -15749,3 +15749,464 @@ 2025-07-10 23:28:05 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 201 2025-07-10 23:28:05 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: ... 2025-07-10 23:28:05 - newmusic.soulseek_client - INFO - download:667 - [SUCCESS] Started download: not public\copy me\Virtual Mage - Astral Chill.mp3 from Ultravod +2025-07-10 23:34:30 - newmusic.main - INFO - closeEvent:171 - Closing application... +2025-07-10 23:34:30 - newmusic.main - INFO - closeEvent:176 - Cleaning up Downloads page threads... +2025-07-10 23:34:30 - newmusic.main - INFO - closeEvent:181 - Stopping status monitoring thread... +2025-07-10 23:34:33 - newmusic.main - INFO - closeEvent:186 - Closing Soulseek client... +2025-07-10 23:34:33 - newmusic.main - INFO - closeEvent:192 - Application closed successfully +2025-07-11 08:03:37 - newmusic - INFO - setup_logging:57 - Logging initialized with level: DEBUG +2025-07-11 08:03:37 - newmusic.main - INFO - main:206 - Starting NewMusic application +2025-07-11 08:03:38 - newmusic.spotify_client - INFO - _setup_client:84 - Successfully authenticated with Spotify as broquethomas +2025-07-11 08:03:38 - newmusic.plex_client - INFO - _find_music_library:98 - Found music library: Music +2025-07-11 08:03:38 - newmusic.plex_client - INFO - _setup_client:84 - Successfully connected to Plex server: PLEX-MACHINE +2025-07-11 08:03:38 - newmusic.soulseek_client - INFO - _setup_client:220 - Soulseek client configured with slskd at http://localhost:5030 +2025-07-11 08:03:39 - newmusic.main - INFO - change_page:158 - Changed to page: dashboard +2025-07-11 08:03:39 - newmusic.main - INFO - setup_media_player_connections:145 - Media player connections established between sidebar and downloads page +2025-07-11 08:03:40 - newmusic.spotify_client - INFO - get_user_playlists:106 - Fetching tracks for playlist: Aether +2025-07-11 08:03:40 - newmusic.spotify_client - INFO - get_user_playlists:106 - Fetching tracks for playlist: Favorite Artists +2025-07-11 08:03:41 - newmusic.main - INFO - change_page:158 - Changed to page: downloads +2025-07-11 08:03:42 - newmusic.spotify_client - INFO - get_user_playlists:106 - Fetching tracks for playlist: Brittnea +2025-07-11 08:03:43 - newmusic.spotify_client - INFO - get_user_playlists:106 - Fetching tracks for playlist: Baleigh +2025-07-11 08:03:45 - newmusic.spotify_client - INFO - get_user_playlists:106 - Fetching tracks for playlist: Extra Music +2025-07-11 08:03:46 - newmusic.spotify_client - INFO - get_user_playlists:106 - Fetching tracks for playlist: Maggi Main +2025-07-11 08:03:50 - newmusic.soulseek_client - INFO - search:551 - Starting search for: 'Virtual mage' +2025-07-11 08:03:50 - newmusic.soulseek_client - DEBUG - search:561 - Search data: {'searchText': 'Virtual mage', 'timeout': 30000, 'filterResponses': True, 'minimumResponseFileCount': 1, 'minimumPeerUploadSpeed': 0} +2025-07-11 08:03:50 - newmusic.soulseek_client - DEBUG - search:562 - Making POST request to: http://localhost:5030/api/v0/searches +2025-07-11 08:03:50 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making POST request to: http://localhost:5030/api/v0/searches +2025-07-11 08:03:50 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-11 08:03:50 - newmusic.soulseek_client - DEBUG - _make_request:245 - JSON payload: {'searchText': 'Virtual mage', 'timeout': 30000, 'filterResponses': True, 'minimumResponseFileCount': 1, 'minimumPeerUploadSpeed': 0} +2025-07-11 08:03:50 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-11 08:03:50 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: {"fileCount":0,"id":"3f9907af-fb14-4d99-b6b4-cdcc6e4b0022","isComplete":false,"lockedFileCount":0,"responseCount":0,"responses":[],"searchText":"Virtual mage","startedAt":"2025-07-11T15:03:50.6470948Z","state":"InProgress","token":359}... +2025-07-11 08:03:50 - newmusic.soulseek_client - INFO - search:575 - Search initiated with ID: 3f9907af-fb14-4d99-b6b4-cdcc6e4b0022 +2025-07-11 08:03:50 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 1/20) - elapsed: 0.0s +2025-07-11 08:03:50 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/3f9907af-fb14-4d99-b6b4-cdcc6e4b0022/responses +2025-07-11 08:03:50 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-11 08:03:50 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-11 08:03:50 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: []... +2025-07-11 08:03:51 - newmusic.spotify_client - INFO - get_user_playlists:106 - Fetching tracks for playlist: Broque Main +2025-07-11 08:03:52 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 2/20) - elapsed: 1.5s +2025-07-11 08:03:52 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/3f9907af-fb14-4d99-b6b4-cdcc6e4b0022/responses +2025-07-11 08:03:52 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-11 08:03:52 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-11 08:03:52 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: []... +2025-07-11 08:03:54 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 3/20) - elapsed: 3.0s +2025-07-11 08:03:54 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/3f9907af-fb14-4d99-b6b4-cdcc6e4b0022/responses +2025-07-11 08:03:54 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-11 08:03:54 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-11 08:03:54 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: []... +2025-07-11 08:03:55 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 4/20) - elapsed: 4.5s +2025-07-11 08:03:55 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/3f9907af-fb14-4d99-b6b4-cdcc6e4b0022/responses +2025-07-11 08:03:55 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-11 08:03:56 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-11 08:03:56 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: []... +2025-07-11 08:03:57 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 5/20) - elapsed: 6.0s +2025-07-11 08:03:57 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/3f9907af-fb14-4d99-b6b4-cdcc6e4b0022/responses +2025-07-11 08:03:57 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-11 08:03:58 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-11 08:03:58 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: []... +2025-07-11 08:03:58 - newmusic.spotify_client - INFO - get_user_playlists:113 - Retrieved 7 playlists +2025-07-11 08:03:59 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 6/20) - elapsed: 7.5s +2025-07-11 08:03:59 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/3f9907af-fb14-4d99-b6b4-cdcc6e4b0022/responses +2025-07-11 08:03:59 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-11 08:03:59 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-11 08:03:59 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: []... +2025-07-11 08:04:01 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 7/20) - elapsed: 9.0s +2025-07-11 08:04:01 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/3f9907af-fb14-4d99-b6b4-cdcc6e4b0022/responses +2025-07-11 08:04:01 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-11 08:04:01 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-11 08:04:01 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: []... +2025-07-11 08:04:03 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 8/20) - elapsed: 10.5s +2025-07-11 08:04:03 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/3f9907af-fb14-4d99-b6b4-cdcc6e4b0022/responses +2025-07-11 08:04:03 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-11 08:04:03 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-11 08:04:03 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: []... +2025-07-11 08:04:04 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 9/20) - elapsed: 12.0s +2025-07-11 08:04:04 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/3f9907af-fb14-4d99-b6b4-cdcc6e4b0022/responses +2025-07-11 08:04:04 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-11 08:04:05 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-11 08:04:05 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: []... +2025-07-11 08:04:06 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 10/20) - elapsed: 13.5s +2025-07-11 08:04:06 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/3f9907af-fb14-4d99-b6b4-cdcc6e4b0022/responses +2025-07-11 08:04:06 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-11 08:04:06 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-11 08:04:06 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: []... +2025-07-11 08:04:08 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 11/20) - elapsed: 15.0s +2025-07-11 08:04:08 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/3f9907af-fb14-4d99-b6b4-cdcc6e4b0022/responses +2025-07-11 08:04:08 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-11 08:04:08 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-11 08:04:08 - 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-11 08:04:08 - newmusic.soulseek_client - INFO - search:597 - Found 25 new responses (25 total) at 15.0s +2025-07-11 08:04:08 - newmusic.soulseek_client - DEBUG - _process_search_responses:345 - Processing 25 user responses +2025-07-11 08:04:08 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Letham has 3 files +2025-07-11 08:04:08 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User nightmare_dronemk12 has 3 files +2025-07-11 08:04:08 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Ultravod has 9 files +2025-07-11 08:04:08 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User drchzbrgr has 5 files +2025-07-11 08:04:08 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User zeroscan has 2 files +2025-07-11 08:04:08 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Satani-Vitales has 3 files +2025-07-11 08:04:08 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User koalabeer has 3 files +2025-07-11 08:04:08 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Kaya-Sem has 1 files +2025-07-11 08:04:08 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User belthane has 3 files +2025-07-11 08:04:08 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User RuuqoHoosk has 346 files +2025-07-11 08:04:08 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User exsanguinidraculae has 2 files +2025-07-11 08:04:08 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User HomotopicCensorship has 3 files +2025-07-11 08:04:08 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Dax_VR has 10 files +2025-07-11 08:04:08 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User raspberry2 has 10 files +2025-07-11 08:04:08 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User KindaRatchet has 1 files +2025-07-11 08:04:08 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User thinkibettergo has 1 files +2025-07-11 08:04:08 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Seyti has 10 files +2025-07-11 08:04:08 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User kloud has 1 files +2025-07-11 08:04:08 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Ahab has 3 files +2025-07-11 08:04:08 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User ruszok has 1 files +2025-07-11 08:04:08 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User soulshookt has 3 files +2025-07-11 08:04:08 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User ofoijacussa has 0 files +2025-07-11 08:04:08 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User leonardoclk has 3 files +2025-07-11 08:04:08 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User aajzugikamlzcr has 1 files +2025-07-11 08:04:08 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Shooby has 6 files +2025-07-11 08:04:08 - newmusic.soulseek_client - INFO - _process_search_responses:399 - Found 9 individual tracks and 7 albums +2025-07-11 08:04:08 - newmusic.soulseek_client - DEBUG - _process_search_responses:400 - Album detection details: 16 potential albums processed +2025-07-11 08:04:08 - 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-11 08:04:08 - 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-11 08:04:08 - newmusic.soulseek_client - DEBUG - _process_search_responses:402 - Album: Ultravod/FLACs/by genre/synthwave/va - Relaxing Synthwave Top 105 (2021) -> 1 tracks +2025-07-11 08:04:08 - newmusic.soulseek_client - INFO - search:617 - Processed results: 9 tracks, 7 albums +2025-07-11 08:04:10 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 12/20) - elapsed: 16.5s +2025-07-11 08:04:10 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/3f9907af-fb14-4d99-b6b4-cdcc6e4b0022/responses +2025-07-11 08:04:10 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-11 08:04:10 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-11 08:04:10 - 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-11 08:04:10 - newmusic.soulseek_client - DEBUG - search:624 - No new responses, total still: 25 +2025-07-11 08:04:11 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 13/20) - elapsed: 18.0s +2025-07-11 08:04:11 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/3f9907af-fb14-4d99-b6b4-cdcc6e4b0022/responses +2025-07-11 08:04:11 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-11 08:04:12 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-11 08:04:12 - 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-11 08:04:12 - newmusic.soulseek_client - DEBUG - search:624 - No new responses, total still: 25 +2025-07-11 08:04:13 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 14/20) - elapsed: 19.5s +2025-07-11 08:04:13 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/3f9907af-fb14-4d99-b6b4-cdcc6e4b0022/responses +2025-07-11 08:04:13 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-11 08:04:13 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-11 08:04:13 - 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-11 08:04:13 - newmusic.soulseek_client - DEBUG - search:624 - No new responses, total still: 25 +2025-07-11 08:04:15 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 15/20) - elapsed: 21.0s +2025-07-11 08:04:15 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/3f9907af-fb14-4d99-b6b4-cdcc6e4b0022/responses +2025-07-11 08:04:15 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-11 08:04:15 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-11 08:04:15 - 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-11 08:04:15 - newmusic.soulseek_client - DEBUG - search:624 - No new responses, total still: 25 +2025-07-11 08:04:17 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 16/20) - elapsed: 22.5s +2025-07-11 08:04:17 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/3f9907af-fb14-4d99-b6b4-cdcc6e4b0022/responses +2025-07-11 08:04:17 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-11 08:04:17 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-11 08:04:17 - 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-11 08:04:17 - newmusic.soulseek_client - DEBUG - search:624 - No new responses, total still: 25 +2025-07-11 08:04:19 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 17/20) - elapsed: 24.0s +2025-07-11 08:04:19 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/3f9907af-fb14-4d99-b6b4-cdcc6e4b0022/responses +2025-07-11 08:04:19 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-11 08:04:19 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-11 08:04:19 - 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-11 08:04:19 - newmusic.soulseek_client - DEBUG - search:624 - No new responses, total still: 25 +2025-07-11 08:04:20 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 18/20) - elapsed: 25.5s +2025-07-11 08:04:20 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/3f9907af-fb14-4d99-b6b4-cdcc6e4b0022/responses +2025-07-11 08:04:20 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-11 08:04:21 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-11 08:04:21 - 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-11 08:04:21 - newmusic.soulseek_client - DEBUG - search:624 - No new responses, total still: 25 +2025-07-11 08:04:22 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 19/20) - elapsed: 27.0s +2025-07-11 08:04:22 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/3f9907af-fb14-4d99-b6b4-cdcc6e4b0022/responses +2025-07-11 08:04:22 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-11 08:04:22 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-11 08:04: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-11 08:04:22 - newmusic.soulseek_client - DEBUG - search:624 - No new responses, total still: 25 +2025-07-11 08:04:24 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 20/20) - elapsed: 28.5s +2025-07-11 08:04:24 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/3f9907af-fb14-4d99-b6b4-cdcc6e4b0022/responses +2025-07-11 08:04:24 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-11 08:04:24 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-11 08:04:24 - 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-11 08:04:24 - newmusic.soulseek_client - DEBUG - search:624 - No new responses, total still: 25 +2025-07-11 08:04:24 - newmusic.soulseek_client - INFO - search:632 - Search completed. Final results: 9 tracks and 7 albums for query: Virtual mage +2025-07-11 08:04:56 - newmusic.soulseek_client - INFO - search:551 - Starting search for: 'kendrick album' +2025-07-11 08:04:56 - newmusic.soulseek_client - DEBUG - search:561 - Search data: {'searchText': 'kendrick album', 'timeout': 30000, 'filterResponses': True, 'minimumResponseFileCount': 1, 'minimumPeerUploadSpeed': 0} +2025-07-11 08:04:56 - newmusic.soulseek_client - DEBUG - search:562 - Making POST request to: http://localhost:5030/api/v0/searches +2025-07-11 08:04:56 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making POST request to: http://localhost:5030/api/v0/searches +2025-07-11 08:04:56 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-11 08:04:56 - newmusic.soulseek_client - DEBUG - _make_request:245 - JSON payload: {'searchText': 'kendrick album', 'timeout': 30000, 'filterResponses': True, 'minimumResponseFileCount': 1, 'minimumPeerUploadSpeed': 0} +2025-07-11 08:04:57 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-11 08:04:57 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: {"fileCount":0,"id":"2e421821-0c8e-4933-b422-351c5a1ac2a7","isComplete":false,"lockedFileCount":0,"responseCount":0,"responses":[],"searchText":"kendrick album","startedAt":"2025-07-11T15:04:57.1308418Z","state":"InProgress","token":360}... +2025-07-11 08:04:57 - newmusic.soulseek_client - INFO - search:575 - Search initiated with ID: 2e421821-0c8e-4933-b422-351c5a1ac2a7 +2025-07-11 08:04:57 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 1/20) - elapsed: 0.0s +2025-07-11 08:04:57 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/2e421821-0c8e-4933-b422-351c5a1ac2a7/responses +2025-07-11 08:04:57 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-11 08:04:57 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-11 08:04:57 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: []... +2025-07-11 08:04:58 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 2/20) - elapsed: 1.5s +2025-07-11 08:04:58 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/2e421821-0c8e-4933-b422-351c5a1ac2a7/responses +2025-07-11 08:04:58 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: [{"fileCount":1,"files":[{"bitRate":320,"code":1,"extension":"","filename":"@@itaam\\Music\\Lonely Island, The\\The Wack Album\\YOLO (Feat. Adam Lecine & Kendrick Lamar).mp3","length":184,"size":8078537,"isLocked":false}],"hasFreeUploadSlot":false,"lockedFileCount":0,"lockedFiles":[],"queueLength":2,"token":360,"uploadSpeed":1205092,"username":"batmaster"},{"fileCount":1,"files":[{"bitRate":320,"code":1,"extension":"","filename":"@@qsapo\\Music\\Black Panther_ The Album\\09 King's Dead (Feat. Ke... +2025-07-11 08:04:59 - newmusic.soulseek_client - INFO - search:597 - Found 249 new responses (249 total) at 1.5s +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:345 - Processing 249 user responses +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User batmaster has 1 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User superlozer has 1 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User doodledrip has 18 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User macro has 58 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User dreem has 6 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User unbrellafiasco has 3 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User AntStark has 2 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Ozwaht has 1 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User The Locutus has 14 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User itmustbeacamel has 15 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User jeskola333 has 4 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User winivb has 15 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Reemerge6193 has 15 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User dubs. has 4 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User churchofozzy1 has 1 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User bswslskd has 3 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User cy1der has 14 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User turbochamp has 1 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User yukosan666 has 16 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Bian has 15 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User legodano has 14 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User afronaut has 8 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User reemo4250 has 1 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User superluminaire has 14 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User AfterlinePerformed has 7 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User fourthgear has 2 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User 936707 has 2 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User JTE1817 has 16 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User snakeplisken has 1 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User brihar22 has 0 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User djjeremy has 1 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User _kyle_1 has 14 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User gandr003 has 26 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User UglyQuail has 15 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Viridi2413 has 35 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User vfoxm has 1 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User DigidocTN has 1 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Unstoppable5378 has 2 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User jakemastay has 4 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User fkid has 0 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Audio_Dope2 has 10 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User dreamer has 5 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User catawawa has 14 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User mindreader has 35 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User lpma has 1 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User clf2008 has 85 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User SlavicFire has 20 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Obadtzxo has 1 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User camuskys has 1 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User 3030 has 1 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User davesv has 1 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User geraldo876 has 14 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User togapepperashi has 16 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Biotwist has 1 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User twiztor has 1 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User cleffable has 14 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User bigkahuna30267 has 1 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User OPOC has 1 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User musica101 has 19 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User cyman has 16 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User bigFlyingFan has 1 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User moef has 1 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User loko11 has 3 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User elipsedeclipse has 5 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User erasethesanity has 0 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User kerobaros has 217 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User MacchiaLux has 3 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User sumb0dy has 22 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User DraculaGottfried has 2 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User rooooool has 24 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User cadorette has 5 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User dmoe has 5 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User dracbf has 17 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Biffs_Media has 13 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User tehfuture has 15 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Neverwhere X has 2 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User xcixxorx has 1 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Lac3rat3d has 1 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User dunce has 1 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Pancho_Pantera has 12 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User nightmare_dronemk12 has 1 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Trevyboo has 1 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Satani-Vitales has 12 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User pulp066 has 1 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User isaacsw has 2 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User ricardoastley has 4 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User feff.rosenstock has 1 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User sevenarts has 15 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User TurtleMasterVIIX has 15 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User oblama has 150 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Rolex has 14 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User petejwhizz has 19 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User up4mayhem has 29 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User SoulHunterWolf has 5 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Tor_McCool has 0 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User gdtek has 21 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User AwesomeAustn has 1 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User iiprisma has 6 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User campee has 1 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Foe4 has 1 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User iaman00b has 1 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User alitamachine has 17 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User ssb497 has 86 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Lundon44 has 5 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User thlayli_x has 28 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User nihilnt has 1 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User FelixMeow76 has 1 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User jimtybobert has 1 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User zxcfx has 18 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User guineahorn has 14 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User filfilfil has 1 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User rblotnicky has 20 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User save20families has 12 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User hotchair has 76 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User assaub has 7 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User theoddhermit has 15 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User SonicRings has 5 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User z161314885664123 has 19 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User XY0 has 1 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User leitunggeist has 1 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User BeatscapeLounge has 5 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User stormcynk has 1 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User h23234 has 10 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User pulpbank has 1 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Booyahw has 1 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User greenandredandlil has 14 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User HELVETE has 1 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User copperstairs has 93 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User TerryDavis has 10 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User technosux has 1 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Pauper1722 has 236 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User khaoohs has 26 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User zerox17virus has 1 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Basiv has 5 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User guppies16 has 3 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User popw1061 has 76 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User JurassicDave87 has 1 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Davidless has 1 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User wrabbit has 15 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User bsdc has 1 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User helicopterOutside has 150 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User tbdbitl1 has 18 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User RandomZero has 38 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Datasmurf has 8 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User asoulfor30silver has 1 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Dovelas has 1 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User messiah165 has 300 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User ReadyPlayer420 has 2 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User formerbusboy has 1 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User itmightbemikey has 5 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User wingler has 5 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User ta_face_esti has 27 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User maneuve has 0 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User BurakkuKami has 17 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Marxist has 30 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Me&MyDemons has 2 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User dioestar has 2 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User miniblock has 7 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Asterlina has 18 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User astromuff has 2 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User cytokinetic has 2 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User oier26 has 11 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User algernon has 3 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Dj Nico has 0 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User conyeezy has 15 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User DrAsphyxia has 3 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User TheFakeRws has 32 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User MusicLarry has 14 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User ParadiseLost has 16 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User GetFixedBoi has 26 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Esnaider has 15 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User MyMindIsBlowing has 0 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User chimchooree has 1 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User alilstinky has 15 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User trek7008 has 1 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User pocket6464 has 2 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Deadbolt1209 has 15 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Chicken_Biscuit has 20 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User greendot has 1 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User SunbeamShine has 3 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User hyntwn has 1 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User darkling23 has 3 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User +-+ has 3 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User OPIOM has 0 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User kfs1986 has 1 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Marliacea has 16 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User nikegeo has 1 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User ilikedmyoldname has 1 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User kino_ has 17 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User jamon1234 has 6 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User brookerthetrailerparkboy has 1 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User lossless1024 has 2 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User boogo_steel has 50 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Lord_Anakyn has 37 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User GentooIsBased has 1 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Handbanana has 0 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User FlowerSunRain has 5 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User von_ubelmann has 1 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User ValdikSS2 has 1 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User SlowDay has 2 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User amd90 has 1 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Lions Den has 2 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User axnxa has 0 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User BlaBla7800 has 3 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User fakedbatman has 1 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User estebanz has 1 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User KingGomi has 2 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User breakone9r has 7 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User cktc has 50 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User olorin_117 has 15 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User parasomia has 14 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User BoinkBonk has 18 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User tunnik has 2 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User waddaw has 2 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User denali83 has 1 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User michaelwave has 14 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User lckdscl has 1 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Ziz_yall has 15 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Ordo has 1 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User aa_anima has 15 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User hardkorr has 75 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Thaliboy has 5 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User gustave1984 has 15 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Speedball52 has 5 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User JonBreeze has 1 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User lightandcoffee has 1 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User richmilnix has 14 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User emayess has 14 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User dwtn81 has 1 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User IMregoR has 0 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User FLASHBACK6070 has 2 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User SxSlka has 16 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Snow~ has 6 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User alexherrero has 2 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Zeonic89 has 2 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User floralbeat has 17 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User murdercitydevil has 4 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User frenchsteph has 3 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User nixgoat has 1 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User zinnac has 19 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User reverwinsskt has 4 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User sataNathan has 1 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User kysnono has 8 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User khudea has 0 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User severedxties has 6 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User maicasajusta has 0 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Lisandrx has 11 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User BeeDee3 has 19 files +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User tsubasa has 30 files +2025-07-11 08:04:59 - newmusic.soulseek_client - INFO - _process_search_responses:399 - Found 157 individual tracks and 209 albums +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:400 - Album detection details: 366 potential albums processed +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:402 - Album: batmaster/@@itaam/Music/Lonely Island, The/The Wack Album -> 1 tracks +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:402 - Album: superlozer/@@qsapo/Music/Black Panther_ The Album -> 1 tracks +2025-07-11 08:04:59 - newmusic.soulseek_client - DEBUG - _process_search_responses:402 - Album: doodledrip/@@gqvex/Music/Dom Kennedy/Dom Kennedy - Yellow Album -> 1 tracks +2025-07-11 08:04:59 - newmusic.soulseek_client - INFO - search:617 - Processed results: 157 tracks, 209 albums +2025-07-11 08:04:59 - newmusic.soulseek_client - INFO - search:621 - Early termination: Found 249 responses, stopping search +2025-07-11 08:04:59 - newmusic.soulseek_client - INFO - search:632 - Search completed. Final results: 157 tracks and 209 albums for query: kendrick album +2025-07-11 08:05:16 - newmusic.soulseek_client - DEBUG - download:645 - Attempting to download: @@itaam\Music\Lonely Island, The\The Wack Album\YOLO (Feat. Adam Lecine & Kendrick Lamar).mp3 from batmaster (size: 8078537) +2025-07-11 08:05:16 - newmusic.soulseek_client - DEBUG - download:658 - Using web interface API format: [{'filename': '@@itaam\\Music\\Lonely Island, The\\The Wack Album\\YOLO (Feat. Adam Lecine & Kendrick Lamar).mp3', 'size': 8078537, 'path': 'E:\\Broque Projects\\newMusic\\downloads'}] +2025-07-11 08:05:16 - newmusic.soulseek_client - DEBUG - download:662 - Trying web interface endpoint: transfers/downloads/batmaster +2025-07-11 08:05:16 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making POST request to: http://localhost:5030/api/v0/transfers/downloads/batmaster +2025-07-11 08:05:16 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-11 08:05:16 - newmusic.soulseek_client - DEBUG - _make_request:245 - JSON payload: [{'filename': '@@itaam\\Music\\Lonely Island, The\\The Wack Album\\YOLO (Feat. Adam Lecine & Kendrick Lamar).mp3', 'size': 8078537, 'path': 'E:\\Broque Projects\\newMusic\\downloads'}] +2025-07-11 08:05:16 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 201 +2025-07-11 08:05:16 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: ... +2025-07-11 08:05:16 - newmusic.soulseek_client - INFO - download:667 - [SUCCESS] Started download: @@itaam\Music\Lonely Island, The\The Wack Album\YOLO (Feat. Adam Lecine & Kendrick Lamar).mp3 from batmaster diff --git a/ui/__pycache__/sidebar.cpython-312.pyc b/ui/__pycache__/sidebar.cpython-312.pyc index b9f0329ac257ee61bcb91224b5590f037623219a..ebc79871d1af2773c4db1ccd42742d8f34449f79 100644 GIT binary patch delta 8787 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 E54z4)G5`Po diff --git a/ui/pages/downloads.py b/ui/pages/downloads.py index e98f6e08..5e071ffc 100644 --- a/ui/pages/downloads.py +++ b/ui/pages/downloads.py @@ -2285,6 +2285,11 @@ class DownloadsPage(QWidget): search_container = self.create_elegant_search_bar() layout.addWidget(search_container) + # Filter Controls (initially hidden until we have results) + self.filter_container = self.create_filter_controls() + self.filter_container.setVisible(False) # Hide until we have search results + layout.addWidget(self.filter_container) + # Search Status with better visual feedback self.search_status = QLabel("Ready to search • Enter artist, song, or album name") self.search_status.setFont(QFont("Arial", 11)) @@ -2447,6 +2452,211 @@ class DownloadsPage(QWidget): return container + def create_filter_controls(self): + """Create elegant filter controls for Albums vs Singles""" + container = QFrame() + container.setFixedHeight(55) + container.setStyleSheet(""" + QFrame { + background: qlineargradient(x1:0, y1:0, x2:0, y2:1, + stop:0 rgba(45, 45, 45, 0.6), + stop:1 rgba(35, 35, 35, 0.8)); + border-radius: 10px; + border: 1px solid rgba(80, 80, 80, 0.25); + } + """) + + layout = QHBoxLayout(container) + layout.setContentsMargins(16, 8, 16, 8) + layout.setSpacing(8) + + # Filter label + filter_label = QLabel("Filter:") + filter_label.setStyleSheet(""" + QLabel { + color: rgba(255, 255, 255, 0.8); + font-size: 12px; + font-weight: 600; + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; + letter-spacing: 0.3px; + } + """) + + # Initialize filter state + self.current_filter = "all" # "all", "albums", "singles" + + # Filter buttons with toggle behavior + self.filter_all_btn = QPushButton("All") + self.filter_albums_btn = QPushButton("Albums") + self.filter_singles_btn = QPushButton("Singles") + + # Store buttons for easy access + self.filter_buttons = { + "all": self.filter_all_btn, + "albums": self.filter_albums_btn, + "singles": self.filter_singles_btn + } + + # Connect button signals + self.filter_all_btn.clicked.connect(lambda: self.set_filter("all")) + self.filter_albums_btn.clicked.connect(lambda: self.set_filter("albums")) + self.filter_singles_btn.clicked.connect(lambda: self.set_filter("singles")) + + # Apply styling to all buttons + for btn_key, btn in self.filter_buttons.items(): + btn.setFixedHeight(32) + btn.setMinimumWidth(65) + self.update_filter_button_style(btn, btn_key == "all") # "All" starts active + + layout.addWidget(filter_label) + layout.addWidget(self.filter_all_btn) + layout.addWidget(self.filter_albums_btn) + layout.addWidget(self.filter_singles_btn) + layout.addStretch() + + return container + + def update_filter_button_style(self, button, is_active): + """Update the visual style of filter buttons based on active state""" + if is_active: + button.setStyleSheet(""" + QPushButton { + background: qlineargradient(x1:0, y1:0, x2:0, y2:1, + stop:0 #1ed760, + stop:1 #1db954); + border: none; + border-radius: 16px; + color: #000000; + font-size: 11px; + font-weight: 700; + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; + padding: 0 12px; + } + QPushButton:hover { + background: qlineargradient(x1:0, y1:0, x2:0, y2:1, + stop:0 #1fdf64, + stop:1 #1ed760); + transform: scale(1.02); + } + QPushButton:pressed { + background: qlineargradient(x1:0, y1:0, x2:0, y2:1, + stop:0 #1ca851, + stop:1 #169c46); + transform: scale(0.98); + } + """) + else: + button.setStyleSheet(""" + QPushButton { + background: qlineargradient(x1:0, y1:0, x2:0, y2:1, + stop:0 rgba(80, 80, 80, 0.4), + stop:1 rgba(60, 60, 60, 0.6)); + border: 1px solid rgba(120, 120, 120, 0.3); + border-radius: 16px; + color: rgba(255, 255, 255, 0.8); + font-size: 11px; + font-weight: 500; + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; + padding: 0 12px; + } + QPushButton:hover { + background: qlineargradient(x1:0, y1:0, x2:0, y2:1, + stop:0 rgba(100, 100, 100, 0.5), + stop:1 rgba(80, 80, 80, 0.7)); + border: 1px solid rgba(140, 140, 140, 0.4); + color: rgba(255, 255, 255, 0.9); + transform: scale(1.02); + } + QPushButton:pressed { + background: qlineargradient(x1:0, y1:0, x2:0, y2:1, + stop:0 rgba(60, 60, 60, 0.6), + stop:1 rgba(40, 40, 40, 0.8)); + transform: scale(0.98); + } + """) + + def set_filter(self, filter_type): + """Set the active filter and update UI""" + self.current_filter = filter_type + + # Update button styles + for btn_key, btn in self.filter_buttons.items(): + self.update_filter_button_style(btn, btn_key == filter_type) + + # Apply the filter to current results + self.apply_filter() + + def apply_filter(self): + """Apply the current filter to search results""" + if not hasattr(self, '_temp_tracks') or not hasattr(self, '_temp_albums'): + return + + # Get the filtered results based on current filter + if self.current_filter == "all": + filtered_results = self._temp_albums + self._temp_tracks + elif self.current_filter == "albums": + filtered_results = self._temp_albums + elif self.current_filter == "singles": + filtered_results = self._temp_tracks + else: + filtered_results = self._temp_albums + self._temp_tracks + + # Clear current display + self.clear_search_results() + self.displayed_results = 0 + + # Show filtered results (respecting pagination) + remaining_slots = self.results_per_page + results_to_show = filtered_results[:remaining_slots] + + # Temporarily disable layout updates for smoother batch loading + self.search_results_widget.setUpdatesEnabled(False) + + for result in results_to_show: + if isinstance(result, AlbumResult): + # Create expandable album result item + result_item = AlbumResultItem(result) + result_item.album_download_requested.connect(self.start_album_download) + result_item.track_download_requested.connect(self.start_download) + result_item.track_stream_requested.connect(lambda search_result, track_item: self.start_stream(search_result, track_item)) + else: + # Create individual track result item + result_item = SearchResultItem(result) + result_item.download_requested.connect(self.start_download) + result_item.stream_requested.connect(lambda search_result, item=result_item: self.start_stream(search_result, item)) + result_item.expansion_requested.connect(self.handle_expansion_request) + + # Insert before the stretch + insert_position = self.search_results_layout.count() - 1 + self.search_results_layout.insertWidget(insert_position, result_item) + + self.displayed_results = len(results_to_show) + + # Re-enable layout updates + self.search_results_widget.setUpdatesEnabled(True) + + # Update status to show filter results + total_albums = len(self._temp_albums) + total_tracks = len(self._temp_tracks) + total_filtered = len(filtered_results) + + if self.current_filter == "all": + filter_status = f"Showing all {total_filtered} results" + elif self.current_filter == "albums": + filter_status = f"Showing {total_albums} albums" + elif self.current_filter == "singles": + filter_status = f"Showing {total_tracks} singles" + else: + filter_status = f"Showing {total_filtered} results" + + # Update the search status to reflect filtering + if total_filtered > 0: + if total_filtered > self.results_per_page: + filter_status += f" (showing first {len(results_to_show)})" + self.search_status.setText(f"✨ {filter_status} • {total_albums} albums, {total_tracks} singles") + else: + self.search_status.setText(f"No results found for '{self.current_filter}' filter") + def create_collapsible_controls_panel(self): """Create a compact, elegant controls panel""" panel = QFrame() @@ -2741,6 +2951,13 @@ class DownloadsPage(QWidget): self.is_loading_more = False self.currently_expanded_item = None # Reset expanded state + # Reset filter to "all" and hide filter controls + self.current_filter = "all" + if hasattr(self, 'filter_buttons'): + for btn_key, btn in self.filter_buttons.items(): + self.update_filter_button_style(btn, btn_key == "all") + self.filter_container.setVisible(False) + # Enhanced searching state with animation self.search_btn.setText("🔍 Searching...") self.search_btn.setEnabled(False) @@ -2893,6 +3110,8 @@ class DownloadsPage(QWidget): self.update_search_status("😔 No results found • Try a different search term or artist name", "#ffa500") else: self.update_search_status(f"✨ Search completed • Found {self.displayed_results} total results", "#1db954") + # Hide filter controls when no results + self.filter_container.setVisible(False) return # Update status with album/track breakdown @@ -2907,6 +3126,9 @@ class DownloadsPage(QWidget): result_summary = " • ".join(status_parts) if status_parts else f"{total_results} results" + # Show filter controls when we have results + self.filter_container.setVisible(True) + # Update status based on whether there are more results to load if self.displayed_results < total_results: remaining = total_results - self.displayed_results diff --git a/ui/sidebar.py b/ui/sidebar.py index 8c6b9b47..fcb12d57 100644 --- a/ui/sidebar.py +++ b/ui/sidebar.py @@ -1,7 +1,133 @@ from PyQt6.QtWidgets import (QWidget, QVBoxLayout, QHBoxLayout, QPushButton, QLabel, QFrame, QSizePolicy, QSpacerItem, QSlider, QProgressBar) from PyQt6.QtCore import Qt, pyqtSignal, QPropertyAnimation, QEasingCurve, QRect, QTimer -from PyQt6.QtGui import QFont, QPalette, QIcon, QPixmap, QPainter +from PyQt6.QtGui import QFont, QPalette, QIcon, QPixmap, QPainter, QFontMetrics + +class ScrollingLabel(QLabel): + """A label that smoothly scrolls text horizontally when it's too long to fit""" + + def __init__(self, text="", parent=None): + super().__init__(parent) + self.full_text = text + self.scroll_offset = 0 + self.text_width = 0 + self.should_scroll = False + self.is_scrolling = False + self.scroll_speed = 30 # pixels per second + + # Animation timer + self.scroll_timer = QTimer() + self.scroll_timer.timeout.connect(self.update_scroll) + + # Pause timer for smooth start/stop + self.pause_timer = QTimer() + self.pause_timer.setSingleShot(True) + self.pause_timer.timeout.connect(self.start_scroll_animation) + + # Set initial properties + self.setAlignment(Qt.AlignmentFlag.AlignLeft | Qt.AlignmentFlag.AlignVCenter) + self.update_text_metrics() + + def setText(self, text): + """Override setText to handle scroll calculations""" + self.full_text = text + self.scroll_offset = 0 + self.update_text_metrics() + super().setText(text) + + def update_text_metrics(self): + """Calculate if text needs scrolling and start animation if needed""" + if not self.full_text: + self.should_scroll = False + self.stop_scrolling() + return + + font_metrics = QFontMetrics(self.font()) + self.text_width = font_metrics.horizontalAdvance(self.full_text) + available_width = self.width() - 20 # Account for padding + + self.should_scroll = self.text_width > available_width and available_width > 0 + + if self.should_scroll and not self.is_scrolling: + # Start scrolling after a pause + self.pause_timer.start(1500) # 1.5 second pause before scrolling + elif not self.should_scroll: + self.stop_scrolling() + + def start_scroll_animation(self): + """Start the continuous scrolling animation""" + if self.should_scroll and not self.is_scrolling: + self.is_scrolling = True + self.scroll_timer.start(50) # Update every 50ms for smooth animation + + def stop_scrolling(self): + """Stop scrolling and reset position""" + self.scroll_timer.stop() + self.pause_timer.stop() + self.is_scrolling = False + self.scroll_offset = 0 + self.update() + + def update_scroll(self): + """Update scroll position for animation""" + if not self.should_scroll: + self.stop_scrolling() + return + + available_width = self.width() - 20 + max_scroll = self.text_width - available_width + 30 # Extra padding at end + + # Move scroll position + self.scroll_offset += 2 # 2 pixels per frame + + # Reset when we've scrolled past the end + if self.scroll_offset > max_scroll: + self.scroll_offset = -50 # Start from off-screen left + + self.update() + + def paintEvent(self, event): + """Custom paint event to draw scrolling text""" + if not self.should_scroll or not self.is_scrolling: + # Use default painting for non-scrolling text + super().paintEvent(event) + return + + painter = QPainter(self) + painter.setRenderHint(QPainter.RenderHint.Antialiasing) + + # Set font and color from stylesheet + painter.setFont(self.font()) + + # Get text color from current style + painter.setPen(self.palette().color(QPalette.ColorRole.WindowText)) + + # Draw text at scroll offset position + text_rect = self.rect() + text_rect.adjust(10, 0, -10, 0) # Account for padding + + painter.drawText(text_rect.x() - self.scroll_offset, text_rect.y(), + text_rect.width() + self.text_width, text_rect.height(), + Qt.AlignmentFlag.AlignLeft | Qt.AlignmentFlag.AlignVCenter, + self.full_text) + + def resizeEvent(self, event): + """Handle resize to recalculate scrolling needs""" + super().resizeEvent(event) + self.update_text_metrics() + + def enterEvent(self, event): + """Start scrolling on hover""" + super().enterEvent(event) + if self.should_scroll and not self.is_scrolling: + self.start_scroll_animation() + + def leaveEvent(self, event): + """Optionally stop scrolling when mouse leaves (can be customized)""" + super().leaveEvent(event) + # Note: We continue scrolling even after mouse leaves for better UX + # You can uncomment the line below if you want it to stop on mouse leave + # self.stop_scrolling() class SidebarButton(QPushButton): def __init__(self, text: str, icon_text: str = "", parent=None): @@ -225,10 +351,10 @@ class MediaPlayer(QWidget): layout.setContentsMargins(0, 0, 0, 0) layout.setSpacing(12) - # Track info (expandable on click) - self.track_info = QLabel("No track") + # Track info (expandable on click) - now with scrolling for long titles + self.track_info = ScrollingLabel("No track") self.track_info.setStyleSheet(""" - QLabel { + ScrollingLabel { color: #ffffff; font-size: 13px; font-weight: 600; @@ -237,7 +363,7 @@ class MediaPlayer(QWidget): letter-spacing: 0.2px; padding: 2px 0px; } - QLabel:hover { + ScrollingLabel:hover { color: #1ed760; } """) @@ -464,14 +590,22 @@ class MediaPlayer(QWidget): self.is_playing = playing if playing: self.play_pause_btn.setText("⏸") + # Start scrolling animation when playing + if self.track_info.should_scroll and not self.track_info.is_scrolling: + self.track_info.start_scroll_animation() else: self.play_pause_btn.setText("▶") + # Optionally stop scrolling when paused (can be customized) + # self.track_info.stop_scrolling() def clear_track(self): """Clear current track and reset to no track state""" self.current_track = None self.is_playing = False + # Stop any scrolling animation + self.track_info.stop_scrolling() + # Update UI self.track_info.setText("No track") self.artist_album_label.setText("Unknown Artist • Unknown Album")