working great

This commit is contained in:
Broque Thomas 2025-07-10 22:53:24 -07:00
parent 99605de41a
commit 79d9fc5045
7 changed files with 1059 additions and 13 deletions

View file

@ -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"}
{"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"}

View file

@ -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

19
main.py
View file

@ -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,

View file

@ -26,11 +26,17 @@ class AudioPlayer(QMediaPlayer):
# Connect signals
self.mediaStatusChanged.connect(self._on_media_status_changed)
self.errorOccurred.connect(self._on_error_occurred)
self.playbackStateChanged.connect(self._on_playback_state_changed)
# Track current file
self.current_file_path = None
self.is_playing = False
def _on_playback_state_changed(self, state):
"""Keep is_playing flag synchronized with actual playback state"""
from PyQt6.QtMultimedia import QMediaPlayer
self.is_playing = (state == QMediaPlayer.PlaybackState.PlayingState)
def play_file(self, file_path):
"""Play an audio file from the given path"""
try:
@ -47,7 +53,7 @@ class AudioPlayer(QMediaPlayer):
# Start playback
self.play()
self.is_playing = True
# is_playing will be set automatically by _on_playback_state_changed
print(f"🎵 Started playing: {os.path.basename(file_path)}")
return True
@ -62,36 +68,42 @@ class AudioPlayer(QMediaPlayer):
"""Toggle between play and pause"""
if self.playbackState() == QMediaPlayer.PlaybackState.PlayingState:
self.pause()
self.is_playing = False
# is_playing will be set automatically by _on_playback_state_changed
return False # Now paused
else:
self.play()
self.is_playing = True
# is_playing will be set automatically by _on_playback_state_changed
return True # Now playing
def stop_playback(self):
"""Stop playback and reset"""
self.stop()
self.is_playing = False
# is_playing will be set automatically by _on_playback_state_changed
self.release_file()
def release_file(self):
"""Release the current file handle by clearing the media source"""
self.setSource(QUrl()) # Clear the media source to release file handle
self.current_file_path = None
print("🔓 Released audio file handle")
def _on_media_status_changed(self, status):
"""Handle media status changes"""
if status == QMediaPlayer.MediaStatus.EndOfMedia:
print("🎵 Playback finished")
self.is_playing = False
# is_playing will be set automatically by _on_playback_state_changed
self.playback_finished.emit()
elif status == QMediaPlayer.MediaStatus.InvalidMedia:
error_msg = "Invalid media file or unsupported format"
print(f"{error_msg}")
self.is_playing = False
# is_playing will be set automatically by _on_playback_state_changed
self.playback_error.emit(error_msg)
def _on_error_occurred(self, error, error_string):
"""Handle playback errors"""
error_msg = f"Audio playback error: {error_string}"
print(f"{error_msg}")
self.is_playing = False
# is_playing will be set automatically by _on_playback_state_changed
self.playback_error.emit(error_msg)
class DownloadThread(QThread):
@ -2099,6 +2111,14 @@ class TabbedDownloadManager(QTabWidget):
return self.active_queue.download_items
class DownloadsPage(QWidget):
# Signals for media player communication
track_started = pyqtSignal(object) # Track result object
track_paused = pyqtSignal()
track_resumed = pyqtSignal()
track_stopped = pyqtSignal()
track_finished = pyqtSignal()
track_position_updated = pyqtSignal(float, float) # current_position, duration in seconds
def __init__(self, soulseek_client=None, parent=None):
super().__init__(parent)
self.soulseek_client = soulseek_client
@ -3045,17 +3065,43 @@ class DownloadsPage(QWidget):
print(f"Failed to start album download: {str(e)}")
def start_stream(self, search_result, result_item=None):
"""Start streaming a search result using StreamingThread"""
"""Start streaming a search result using StreamingThread or toggle if same track"""
try:
# Check if this is the same track that's currently playing
current_track_id = getattr(self, 'current_track_id', None)
new_track_id = f"{search_result.username}:{search_result.filename}"
if current_track_id == new_track_id and self.currently_playing_button == result_item:
# Same track clicked - toggle playback
print(f"Toggling playback for: {search_result.filename}")
if self.audio_player.toggle_playback():
# Now playing
result_item.set_playing_state()
self.track_resumed.emit()
print("🎵 Resumed playback")
else:
# Now paused
result_item.set_loading_state() # Use loading as "paused" state
self.track_paused.emit()
print("⏸️ Paused playback")
return
print(f"Starting stream: {search_result.filename} from {search_result.username}")
# Stop any currently playing audio and reset previous button
# Different track - stop current and start new
if self.currently_playing_button:
self.audio_player.stop_playback()
self.currently_playing_button.reset_play_state()
# Track the new currently playing button
# Track the new currently playing button and track
self.currently_playing_button = result_item
self.current_track_id = new_track_id
self.current_track_result = search_result
# Clear Stream folder before starting new stream
self.clear_stream_folder()
# Check if file is a valid audio type
audio_extensions = ['.mp3', '.flac', '.ogg', '.aac', '.wma', '.wav']
@ -3128,6 +3174,9 @@ class DownloadsPage(QWidget):
# Set button to playing state
if self.currently_playing_button:
self.currently_playing_button.set_playing_state()
# Emit track started signal for sidebar media player
if hasattr(self, 'current_track_result') and self.current_track_result:
self.track_started.emit(self.current_track_result)
else:
print(f"❌ Failed to start audio playback")
# Reset button on failure
@ -3189,6 +3238,16 @@ class DownloadsPage(QWidget):
if self.currently_playing_button:
self.currently_playing_button.reset_play_state()
self.currently_playing_button = None
# Emit track finished signal for sidebar media player
self.track_finished.emit()
# Clear Stream folder when playback finishes
self.clear_stream_folder()
# Clear track state
self.current_track_id = None
self.current_track_result = None
def on_audio_playback_error(self, error_msg):
"""Handle audio playback errors"""
@ -3197,6 +3256,83 @@ class DownloadsPage(QWidget):
if self.currently_playing_button:
self.currently_playing_button.reset_play_state()
self.currently_playing_button = None
# Emit track stopped signal for sidebar media player
self.track_stopped.emit()
# Clear Stream folder when playback errors
self.clear_stream_folder()
# Clear track state
self.current_track_id = None
self.current_track_result = None
def handle_sidebar_play_pause(self):
"""Handle play/pause request from sidebar media player"""
# Use the actual QMediaPlayer state instead of manual flag
from PyQt6.QtMultimedia import QMediaPlayer
if self.audio_player.playbackState() == QMediaPlayer.PlaybackState.PlayingState:
self.audio_player.pause()
# is_playing will be set automatically by _on_playback_state_changed
if self.currently_playing_button:
self.currently_playing_button.set_loading_state() # Use as "paused" state
self.track_paused.emit()
print("⏸️ Paused from sidebar")
else:
self.audio_player.play()
# is_playing will be set automatically by _on_playback_state_changed
if self.currently_playing_button:
self.currently_playing_button.set_playing_state()
self.track_resumed.emit()
print("🎵 Resumed from sidebar")
def handle_sidebar_stop(self):
"""Handle stop request from sidebar media player"""
self.audio_player.stop_playback()
if self.currently_playing_button:
self.currently_playing_button.reset_play_state()
self.currently_playing_button = None
# Emit track stopped signal
self.track_stopped.emit()
# Clear Stream folder when stopping
self.clear_stream_folder()
# Clear track state
self.current_track_id = None
self.current_track_result = None
print("⏹️ Stopped from sidebar")
def handle_sidebar_volume(self, volume):
"""Handle volume change from sidebar media player"""
self.audio_player.audio_output.setVolume(volume)
print(f"🔊 Volume set to {int(volume * 100)}% from sidebar")
def clear_stream_folder(self):
"""Clear all files from the Stream folder to prevent playing wrong files"""
try:
# First, release any file handles from the audio player
if hasattr(self, 'audio_player') and self.audio_player:
self.audio_player.release_file()
print("🔓 Released audio player file handle before clearing")
project_root = os.path.dirname(os.path.dirname(os.path.dirname(__file__))) # Go up from ui/pages/
stream_folder = os.path.join(project_root, 'Stream')
if os.path.exists(stream_folder):
for filename in os.listdir(stream_folder):
file_path = os.path.join(stream_folder, filename)
if os.path.isfile(file_path):
try:
os.remove(file_path)
print(f"🗑️ Cleared old stream file: {filename}")
except Exception as e:
print(f"⚠️ Could not remove stream file {filename}: {e}")
except Exception as e:
print(f"⚠️ Error clearing stream folder: {e}")
def on_download_completed(self, message, download_item):
"""Handle successful download start"""

View file

@ -1,6 +1,6 @@
from PyQt6.QtWidgets import (QWidget, QVBoxLayout, QHBoxLayout, QPushButton,
QLabel, QFrame, QSizePolicy, QSpacerItem)
from PyQt6.QtCore import Qt, pyqtSignal, QPropertyAnimation, QEasingCurve, QRect
QLabel, QFrame, QSizePolicy, QSpacerItem, QSlider, QProgressBar)
from PyQt6.QtCore import Qt, pyqtSignal, QPropertyAnimation, QEasingCurve, QRect, QTimer
from PyQt6.QtGui import QFont, QPalette, QIcon, QPixmap, QPainter
class SidebarButton(QPushButton):
@ -159,6 +159,276 @@ class StatusIndicator(QWidget):
""")
self.service_label.setStyleSheet("color: #b3b3b3; font-weight: 400;")
class MediaPlayer(QWidget):
# Signals for media control
play_pause_requested = pyqtSignal()
stop_requested = pyqtSignal()
volume_changed = pyqtSignal(float) # Volume as percentage (0.0 to 1.0)
def __init__(self, parent=None):
super().__init__(parent)
self.is_playing = False
self.is_expanded = False
self.current_track = None
self.setup_ui()
def setup_ui(self):
self.setFixedHeight(60) # Start collapsed
self.setStyleSheet("""
MediaPlayer {
background: #181818;
border: 1px solid #282828;
border-radius: 8px;
margin: 0 8px;
}
""")
layout = QVBoxLayout(self)
layout.setContentsMargins(15, 8, 15, 8)
layout.setSpacing(8)
# Always visible header with basic controls
self.header = self.create_header()
layout.addWidget(self.header)
# Expandable content (hidden when collapsed)
self.expanded_content = self.create_expanded_content()
self.expanded_content.setVisible(False)
layout.addWidget(self.expanded_content)
# No track message (shown when no music)
self.no_track_label = QLabel("No track playing")
self.no_track_label.setAlignment(Qt.AlignmentFlag.AlignCenter)
self.no_track_label.setStyleSheet("color: #666666; font-size: 11px; padding: 10px;")
layout.addWidget(self.no_track_label)
def create_header(self):
header = QWidget()
layout = QHBoxLayout(header)
layout.setContentsMargins(0, 0, 0, 0)
layout.setSpacing(12)
# Track info (expandable on click)
self.track_info = QLabel("No track")
self.track_info.setStyleSheet("""
QLabel {
color: #ffffff;
font-size: 12px;
font-weight: 500;
background: transparent;
}
""")
self.track_info.setCursor(Qt.CursorShape.PointingHandCursor)
self.track_info.mousePressEvent = self.toggle_expansion
# Play/pause button
self.play_pause_btn = QPushButton("▶️")
self.play_pause_btn.setFixedSize(32, 32)
self.play_pause_btn.setStyleSheet("""
QPushButton {
background: rgba(29, 185, 84, 0.2);
border: 1px solid #1db954;
border-radius: 16px;
color: #1db954;
font-size: 12px;
font-weight: bold;
}
QPushButton:hover {
background: rgba(29, 185, 84, 0.3);
transform: scale(1.05);
}
QPushButton:pressed {
background: rgba(29, 185, 84, 0.4);
}
QPushButton:disabled {
background: rgba(100, 100, 100, 0.2);
border: 1px solid #666666;
color: #666666;
}
""")
self.play_pause_btn.clicked.connect(self.on_play_pause_clicked)
self.play_pause_btn.setEnabled(False)
layout.addWidget(self.track_info)
layout.addStretch()
layout.addWidget(self.play_pause_btn)
return header
def create_expanded_content(self):
content = QWidget()
layout = QVBoxLayout(content)
layout.setContentsMargins(0, 5, 0, 0)
layout.setSpacing(8)
# Artist and album info
self.artist_album_label = QLabel("Unknown Artist • Unknown Album")
self.artist_album_label.setStyleSheet("""
QLabel {
color: #b3b3b3;
font-size: 10px;
background: transparent;
}
""")
layout.addWidget(self.artist_album_label)
# Control buttons
controls_layout = QHBoxLayout()
controls_layout.setContentsMargins(0, 0, 0, 0)
controls_layout.setSpacing(10)
# Stop button
self.stop_btn = QPushButton("⏹️")
self.stop_btn.setFixedSize(24, 24)
self.stop_btn.setStyleSheet("""
QPushButton {
background: rgba(226, 33, 52, 0.2);
border: 1px solid #e22134;
border-radius: 12px;
color: #e22134;
font-size: 10px;
}
QPushButton:hover {
background: rgba(226, 33, 52, 0.3);
}
QPushButton:disabled {
background: rgba(100, 100, 100, 0.2);
border: 1px solid #666666;
color: #666666;
}
""")
self.stop_btn.clicked.connect(self.on_stop_clicked)
self.stop_btn.setEnabled(False)
# Volume control
volume_layout = QHBoxLayout()
volume_layout.setSpacing(5)
volume_icon = QLabel("🔊")
volume_icon.setStyleSheet("color: #b3b3b3; font-size: 10px;")
self.volume_slider = QSlider(Qt.Orientation.Horizontal)
self.volume_slider.setRange(0, 100)
self.volume_slider.setValue(70) # Default 70% volume
self.volume_slider.setFixedWidth(60)
self.volume_slider.setStyleSheet("""
QSlider::groove:horizontal {
border: none;
height: 3px;
background: #404040;
border-radius: 1px;
}
QSlider::handle:horizontal {
background: #b3b3b3;
border: none;
width: 8px;
height: 8px;
border-radius: 4px;
margin: -3px 0;
}
QSlider::sub-page:horizontal {
background: #b3b3b3;
border-radius: 1px;
}
""")
self.volume_slider.valueChanged.connect(self.on_volume_changed)
volume_layout.addWidget(volume_icon)
volume_layout.addWidget(self.volume_slider)
controls_layout.addWidget(self.stop_btn)
controls_layout.addStretch()
controls_layout.addLayout(volume_layout)
layout.addLayout(controls_layout)
return content
def toggle_expansion(self, event=None):
"""Toggle between collapsed and expanded view"""
if not self.current_track:
return
self.is_expanded = not self.is_expanded
if self.is_expanded:
self.setFixedHeight(120)
self.expanded_content.setVisible(True)
self.no_track_label.setVisible(False)
else:
self.setFixedHeight(60)
self.expanded_content.setVisible(False)
def set_track_info(self, track_result):
"""Update the media player with new track information"""
self.current_track = track_result
# Update track name
track_name = getattr(track_result, 'title', None) or getattr(track_result, 'filename', 'Unknown Track')
if hasattr(track_result, 'filename'):
# Clean up filename for display
import os
track_name = os.path.splitext(os.path.basename(track_result.filename))[0]
self.track_info.setText(track_name)
# Update artist and album
artist = getattr(track_result, 'artist', 'Unknown Artist')
album = getattr(track_result, 'album', 'Unknown Album')
self.artist_album_label.setText(f"{artist}{album}")
# Enable controls
self.play_pause_btn.setEnabled(True)
self.stop_btn.setEnabled(True)
# Hide no track message and show player
self.no_track_label.setVisible(False)
# Auto-expand when new track starts
if not self.is_expanded:
self.toggle_expansion()
def set_playing_state(self, playing):
"""Update play/pause button state"""
self.is_playing = playing
if playing:
self.play_pause_btn.setText("⏸️")
else:
self.play_pause_btn.setText("▶️")
def clear_track(self):
"""Clear current track and reset to no track state"""
self.current_track = None
self.is_playing = False
# Update UI
self.track_info.setText("No track")
self.artist_album_label.setText("Unknown Artist • Unknown Album")
self.play_pause_btn.setText("▶️")
self.play_pause_btn.setEnabled(False)
self.stop_btn.setEnabled(False)
# Show no track message
self.no_track_label.setVisible(True)
# Collapse view
if self.is_expanded:
self.toggle_expansion()
def on_play_pause_clicked(self):
"""Handle play/pause button click"""
self.play_pause_requested.emit()
def on_stop_clicked(self):
"""Handle stop button click"""
self.stop_requested.emit()
def on_volume_changed(self, value):
"""Handle volume slider change"""
volume = value / 100.0 # Convert to 0.0-1.0
self.volume_changed.emit(volume)
class ModernSidebar(QWidget):
page_changed = pyqtSignal(str)
@ -192,6 +462,13 @@ class ModernSidebar(QWidget):
# Spacer
layout.addItem(QSpacerItem(20, 40, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding))
# Media Player section
self.media_player = MediaPlayer()
layout.addWidget(self.media_player)
# Small spacer between media player and status
layout.addItem(QSpacerItem(20, 10, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Fixed))
# Status section
status_section = self.create_status_section()
layout.addWidget(status_section)