From f11af0d207ae6cb70d403d0031583c66c9cbddb9 Mon Sep 17 00:00:00 2001 From: Broque Thomas Date: Mon, 14 Jul 2025 20:12:39 -0700 Subject: [PATCH] more better --- .spotify_cache | 2 +- logs/app.log | 496 ++++++++++++++++++ .../__pycache__/downloads.cpython-312.pyc | Bin 440214 -> 444107 bytes ui/pages/downloads.py | 150 ++++-- 4 files changed, 612 insertions(+), 36 deletions(-) diff --git a/.spotify_cache b/.spotify_cache index c87c8aed..a1f26700 100644 --- a/.spotify_cache +++ b/.spotify_cache @@ -1 +1 @@ -{"access_token": "BQBL7Raj7Urrt1zo-GMFVGrLMtq-ytp9u8wvZ0vie6JJWk77ileGQLgHizS_Hdvrb4xA3PJYYZd2r08RWAZwkFMhFwfhQH9YKS8W_BCHrVo_RVcVmZrOhhgdlhba28WXvL8rQCl50kM7oU1RuFqyprw2oy3wPbv1bkwHPM638nzV8u1tHAd8aNeYojYWvaWvd3i8iKYcnit3zccprYDXW8b-In-G75vxhP7cj4Dg-oRU-58CGRxGBocKKDh0R5Vk", "token_type": "Bearer", "expires_in": 3600, "scope": "user-library-read user-read-private playlist-read-private playlist-read-collaborative user-read-email", "expires_at": 1752548677, "refresh_token": "AQDmfQkPCGObfJeTUIbW1hAAwhSqkuHRA3Qh2dqVYMRh0eCkFMQgPNJDDzF8y-BiaVbj80zePkK_XSfYH1aJutMtNbnsqRKWuxP31BTrMc7pdUdbE7Fma4oH8wpDUKdG3MM"} \ No newline at end of file +{"access_token": "BQAoBCNon57_ih6Khq-nA0tBnFW0IWA4uEka856I_dtGt-nOqmSstBM_ssM7X9hurgWbTsVrqgeCuacOS8zPGB4Vb3KNtECfPE9tVPW01VI3RfXaeqkslqwZnFvV4enVIwRO3UBEJQ5dzZZiLbZO7bZRQD-er1r0dDiugiQIsN-2oZbbm_uj8mXXhLaqGNCCYNXvQYUjFXlycuXGSnodqHVN0cR10jjA2IqGq13ypLg3n7tmrzkg1e2Jw3DTCosX", "token_type": "Bearer", "expires_in": 3600, "scope": "user-library-read user-read-private playlist-read-private playlist-read-collaborative user-read-email", "expires_at": 1752552315, "refresh_token": "AQDmfQkPCGObfJeTUIbW1hAAwhSqkuHRA3Qh2dqVYMRh0eCkFMQgPNJDDzF8y-BiaVbj80zePkK_XSfYH1aJutMtNbnsqRKWuxP31BTrMc7pdUdbE7Fma4oH8wpDUKdG3MM"} \ No newline at end of file diff --git a/logs/app.log b/logs/app.log index 46dab4b4..b9d0d929 100644 --- a/logs/app.log +++ b/logs/app.log @@ -19307,3 +19307,499 @@ 2025-07-14 19:54:37 - newmusic.main - INFO - closeEvent:186 - Stopping status monitoring thread... 2025-07-14 19:54:39 - newmusic.main - INFO - closeEvent:191 - Closing Soulseek client... 2025-07-14 19:54:39 - newmusic.main - INFO - closeEvent:197 - Application closed successfully +2025-07-14 20:05:15 - newmusic - INFO - setup_logging:57 - Logging initialized with level: DEBUG +2025-07-14 20:05:15 - newmusic.main - INFO - main:211 - Starting NewMusic application +2025-07-14 20:05:15 - newmusic.spotify_client - INFO - _setup_client:179 - Successfully authenticated with Spotify as broquethomas +2025-07-14 20:05:15 - newmusic.plex_client - INFO - _find_music_library:98 - Found music library: Music +2025-07-14 20:05:15 - newmusic.plex_client - INFO - _setup_client:84 - Successfully connected to Plex server: PLEX-MACHINE +2025-07-14 20:05:15 - newmusic.soulseek_client - INFO - _setup_client:220 - Soulseek client configured with slskd at http://localhost:5030 +2025-07-14 20:05:15 - newmusic.spotify_client - INFO - _setup_client:179 - Successfully authenticated with Spotify as broquethomas +2025-07-14 20:05:16 - newmusic.main - INFO - change_page:163 - Changed to page: dashboard +2025-07-14 20:05:16 - newmusic.main - INFO - setup_media_player_connections:150 - Media player connections established between sidebar and downloads page +2025-07-14 20:05:17 - newmusic.spotify_client - INFO - get_user_playlists:201 - Fetching tracks for playlist: Aether +2025-07-14 20:05:17 - newmusic.spotify_client - INFO - get_user_playlists:201 - Fetching tracks for playlist: Favorite Artists +2025-07-14 20:05:18 - newmusic.main - INFO - change_page:163 - Changed to page: downloads +2025-07-14 20:05:19 - newmusic.spotify_client - INFO - get_user_playlists:201 - Fetching tracks for playlist: Brittnea +2025-07-14 20:05:20 - newmusic.soulseek_client - INFO - search:551 - Starting search for: 'demon days' +2025-07-14 20:05:20 - newmusic.soulseek_client - DEBUG - search:561 - Search data: {'searchText': 'demon days', 'timeout': 30000, 'filterResponses': True, 'minimumResponseFileCount': 1, 'minimumPeerUploadSpeed': 0} +2025-07-14 20:05:20 - newmusic.soulseek_client - DEBUG - search:562 - Making POST request to: http://localhost:5030/api/v0/searches +2025-07-14 20:05:20 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making POST request to: http://localhost:5030/api/v0/searches +2025-07-14 20:05:20 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-14 20:05:20 - newmusic.soulseek_client - DEBUG - _make_request:245 - JSON payload: {'searchText': 'demon days', 'timeout': 30000, 'filterResponses': True, 'minimumResponseFileCount': 1, 'minimumPeerUploadSpeed': 0} +2025-07-14 20:05:20 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-14 20:05:20 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: {"fileCount":0,"id":"0516bc58-4810-4075-a2fc-6c07f1e17a09","isComplete":false,"lockedFileCount":0,"responseCount":0,"responses":[],"searchText":"demon days","startedAt":"2025-07-15T03:05:20.4442868Z","state":"InProgress","token":9675}... +2025-07-14 20:05:20 - newmusic.soulseek_client - INFO - search:575 - Search initiated with ID: 0516bc58-4810-4075-a2fc-6c07f1e17a09 +2025-07-14 20:05:20 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 1/20) - elapsed: 0.0s +2025-07-14 20:05:20 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/0516bc58-4810-4075-a2fc-6c07f1e17a09/responses +2025-07-14 20:05:20 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-14 20:05:20 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-14 20:05:20 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: []... +2025-07-14 20:05:21 - newmusic.spotify_client - INFO - get_user_playlists:201 - Fetching tracks for playlist: Baleigh +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - search:585 - Polling for results (attempt 2/20) - elapsed: 1.5s +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches/0516bc58-4810-4075-a2fc-6c07f1e17a09/responses +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: [{"fileCount":33,"files":[{"bitDepth":16,"code":1,"extension":"","filename":"@@ddptt\\Music\\G\\Gorillaz\\[2005] Gorillaz - Demon Days - [flac]\\01 - IntroAU - Demon Days.flac","length":63,"sampleRate":44100,"size":5807012,"isLocked":false},{"code":1,"extension":"","filename":"@@ddptt\\Music\\G\\Gorillaz\\[2005] Gorillaz - Demon Days - [flac]\\01 - IntroAU - Demon Days.lrc","size":594,"isLocked":false},{"bitDepth":16,"code":1,"extension":"","filename":"@@ddptt\\Music\\G\\Gorillaz\\[2005] Gorilla... +2025-07-14 20:05:22 - newmusic.soulseek_client - INFO - search:597 - Found 250 new responses (250 total) at 1.5s +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:345 - Processing 250 user responses +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User TroubleMoth has 33 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User zaniel has 15 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User bounceman has 7 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User opula has 16 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User toyotaae86 has 21 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User sumb0dy has 36 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User mysticgarden has 17 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Jansten has 29 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Flimhumabber has 30 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Shootman2 has 16 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Fuzy554 has 31 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User ElChano has 17 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User penicilling has 16 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Yeenr has 15 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User darbus has 17 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Styrene-7201 has 16 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User stonecoldjaneausten has 15 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User moleman has 16 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User sebdot has 16 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User TheActionIsGo... has 15 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User M3H9X has 30 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Sonder has 15 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User CmotDribbler has 15 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User DeafWired has 15 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Jookly has 15 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User k_huntington has 16 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User zerolexi_koshu has 15 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User lilprincess_uwu has 16 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User numian_vibration has 16 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User bigfudge has 64 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User gibertron has 1 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User biygas1 has 17 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User thegreengiant has 17 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User AnorexicSnorlax has 1 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User okaygirly has 15 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User TooMuchDog has 16 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User adoghello has 16 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User scruffalump has 16 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Nedrept has 1 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User badbanker has 19 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User 111aaa222aaa333aaa has 1 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User t1nt1n1969 has 36 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User bingodv has 17 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User dvcky has 17 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Nick7777777 has 1 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User detroit dogs has 0 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User bertoxiv has 17 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User BurakkuKami has 15 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User lexystardust has 30 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User ta_face_esti has 19 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User arin_akshun has 1 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User amwo has 16 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Unwrapped3759 has 15 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User switch32 has 17 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User not winter has 15 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Sbonzo has 1 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Pavlov1955 has 17 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Reemerge6193 has 16 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User jakeholmes has 1 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User WanderLemming has 17 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User jeffycool has 19 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User northbjorn has 20 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User XY0 has 30 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User xjbx has 0 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Datasmurf has 15 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Godzilla1 has 1 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User hoodieninja has 15 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User GruntusAromalog has 15 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User gravematthews has 1 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User The Locutus has 15 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User fearkills has 15 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User justasillywolfy has 17 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User S.T.A.L.K.E.R has 15 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User cloudosphere has 1 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User pukebrain has 16 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Neitze has 31 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User catkickr has 15 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User RuNe_N00b has 16 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User chibiotaku has 22 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User reemo4250 has 31 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Nilo has 1 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Dorstlesser has 15 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User darknessandfire has 13 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User tttetos has 15 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User wrapt_in_plastik has 19 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User glint has 16 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User ClobrWafls has 15 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User poutchouli has 17 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Music_Is_Ok_I_Guess has 15 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User devteamster has 17 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User mickstilwell has 17 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User eggy has 15 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User downloader200 has 2 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User chewi105 has 15 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User ChaosMerely has 15 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User catawawa has 16 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User jaxxthesynth has 13 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User heyheyfrapfrap has 15 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User glitchedneopet has 1 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User p8757181 has 16 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User noisedyke has 19 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User JackCloudie has 21 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Lao_Man_E has 72 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User TrevorBrooking has 15 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User farmdestroyer has 1 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User xbreeddarby has 19 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User catpunx has 1 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User superlotek has 17 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User paulfunyun has 17 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User CirkuitShane has 25 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Shyft has 1 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User vellius has 15 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Freddie Boyd has 1 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User cibaz has 3 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User EJW has 49 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User miko_mission has 20 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User velmen has 18 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User unsealed has 15 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Svenir has 1 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User cyanmuskox has 17 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User bluecar5556 has 21 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User casualevils has 1 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User takoou has 16 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User thep50 has 16 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User TotallyNotLuna has 1 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User BigGuy38372 has 17 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User mazinkaiser has 16 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User techllama has 25 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User xjshawx has 2 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User CosmicC has 2 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Matticus has 16 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User ILL2DEF has 15 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User mon5termatt-dc has 32 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User kb4 has 1 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User thisdogissomessedup has 16 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Gkirin has 21 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User FornevermorE has 10 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User atlas_core has 46 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User bleebobreebo has 17 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User invartho has 15 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User fudge has 16 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User wingler has 18 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Ultravod has 27 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Whoregan's Heroes has 0 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User HenryDorsetCase has 15 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User dunce has 30 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User rirics has 18 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User brihar22 has 0 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User dreamer has 18 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User povodesanto has 1 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User CherrySeed has 19 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User twiztor has 15 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Shadiness9250 has 18 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User BarrelOBees has 1 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User OPOC has 17 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Ptet has 17 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Totally_Lame has 19 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Thylarox has 82 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User 22wetdogs has 1 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Belcerebon has 15 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User HJ_ has 17 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Cherribi has 17 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User LeFaucon has 38 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Lil Intro Vert has 1 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User BlackSkies has 15 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User quisps has 16 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User chcoha has 15 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User scmstr has 16 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Knight_Bewion has 21 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User melancoliax has 15 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User mewt has 22 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Infernal Love has 1 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User MOBIUS__DRIP has 17 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User top23breaks has 1 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User dethkube has 27 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User thatfunkymonkey has 18 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User gr1moire has 16 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User maplethreetimes has 15 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User ben1am has 3 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User montr0n has 16 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User germinal-velocity has 15 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User plusreed has 20 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User steelepdx has 2 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User varocker has 1 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User msq123 has 16 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User PLAGUER has 15 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User clownpatrol6666 has 1 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User thelogikalone has 15 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User admin192205 has 16 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User theoddhermit has 16 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User SuperSushi has 31 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User t.e.shandy has 32 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User notbdz has 15 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User 9thChevron has 40 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User polop148 has 15 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User safire has 16 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User godking has 16 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User HomotopicCensorship has 4 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User dnbxxx has 0 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User theworldofmusic has 19 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Soul716 has 1 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Graffmark1977! has 18 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User ORA2J2 has 18 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User DonacDum has 16 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User xtenda has 31 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Turd Ferg has 15 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User GetFixedBoi has 16 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User tonyzur has 16 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User numSkull31 has 16 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User etaylor86 has 1 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User slushie3008 has 15 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User fern911 has 15 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Goatzone has 16 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Psybinary has 1 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User huion74 has 15 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User goldiekat has 0 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User emohenestee has 30 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User musica101 has 16 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User jojobungle has 16 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User rogerhuxley has 15 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User PoisonousSnout has 31 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User WithYouInRockland2 has 17 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User lemasterc has 15 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Redemes has 16 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User tso55 has 11 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User bennyliquid has 3 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User larsinio has 20 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User FishHelmetCopy has 15 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User BillyStinkyPit911 has 15 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User venividiveni has 19 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User catboybilly has 15 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User dubs. has 15 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User ./mkk has 16 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User yauch701 has 16 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Mr_Tooduloo has 20 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User SoulHunterWolf has 6 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User hrsart has 15 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User sophvvvv has 20 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User fileformatpng has 1 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User karlmalone has 18 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User tempest.lich has 3 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Basiv has 16 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Arkainnihx has 15 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User Milkshakes00 has 15 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User helicopterOutside has 45 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User radd_shreddy has 15 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User oneairmilepoint has 15 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User BANLOCKEDFILES has 0 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User rexdart has 36 files +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:353 - User dreem has 16 files +2025-07-14 20:05:22 - newmusic.soulseek_client - INFO - _process_search_responses:399 - Found 94 individual tracks and 228 albums +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:400 - Album detection details: 307 potential albums processed +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:402 - Album: TroubleMoth/@@ddptt/Music/G/Gorillaz/[2005] Gorillaz - Demon Days - [flac] -> 15 tracks +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:402 - Album: zaniel/@@oitap/Music/Gorillaz/Demon Days -> 15 tracks +2025-07-14 20:05:22 - newmusic.soulseek_client - DEBUG - _process_search_responses:402 - Album: bounceman/@@nefob/Organized Tracks/Gorillaz/Demon Days -> 7 tracks +2025-07-14 20:05:22 - newmusic.soulseek_client - INFO - search:617 - Processed results: 94 tracks, 228 albums +2025-07-14 20:05:22 - newmusic.soulseek_client - INFO - search:621 - Early termination: Found 250 responses, stopping search +2025-07-14 20:05:22 - newmusic.soulseek_client - INFO - search:632 - Search completed. Final results: 94 tracks and 228 albums for query: demon days +2025-07-14 20:05:22 - newmusic.spotify_client - INFO - get_user_playlists:201 - Fetching tracks for playlist: Extra Music +2025-07-14 20:05:23 - newmusic.spotify_client - INFO - get_user_playlists:201 - Fetching tracks for playlist: Maggi Main +2025-07-14 20:05:28 - newmusic.spotify_client - INFO - get_user_playlists:201 - Fetching tracks for playlist: Broque Main +2025-07-14 20:05:36 - newmusic.spotify_client - INFO - get_user_playlists:208 - Retrieved 7 playlists +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - download:645 - Attempting to download: @@mfapl\Music (320)\Gorillaz\Demon Days\01 Intro.mp3 from M3H9X (size: 2592144) +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - download:658 - Using web interface API format: [{'filename': '@@mfapl\\Music (320)\\Gorillaz\\Demon Days\\01 Intro.mp3', 'size': 2592144, 'path': 'E:\\Broque Projects\\newMusic\\downloads'}] +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - download:662 - Trying web interface endpoint: transfers/downloads/M3H9X +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making POST request to: http://localhost:5030/api/v0/transfers/downloads/M3H9X +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - _make_request:245 - JSON payload: [{'filename': '@@mfapl\\Music (320)\\Gorillaz\\Demon Days\\01 Intro.mp3', 'size': 2592144, 'path': 'E:\\Broque Projects\\newMusic\\downloads'}] +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - download:645 - Attempting to download: @@mfapl\Music (320)\Gorillaz\Demon Days\02 Last Living Souls.mp3 from M3H9X (size: 7681866) +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - download:658 - Using web interface API format: [{'filename': '@@mfapl\\Music (320)\\Gorillaz\\Demon Days\\02 Last Living Souls.mp3', 'size': 7681866, 'path': 'E:\\Broque Projects\\newMusic\\downloads'}] +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - download:662 - Trying web interface endpoint: transfers/downloads/M3H9X +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making POST request to: http://localhost:5030/api/v0/transfers/downloads/M3H9X +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - _make_request:245 - JSON payload: [{'filename': '@@mfapl\\Music (320)\\Gorillaz\\Demon Days\\02 Last Living Souls.mp3', 'size': 7681866, 'path': 'E:\\Broque Projects\\newMusic\\downloads'}] +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - download:645 - Attempting to download: @@mfapl\Music (320)\Gorillaz\Demon Days\03 Kids With Guns.mp3 from M3H9X (size: 9099786) +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - download:658 - Using web interface API format: [{'filename': '@@mfapl\\Music (320)\\Gorillaz\\Demon Days\\03 Kids With Guns.mp3', 'size': 9099786, 'path': 'E:\\Broque Projects\\newMusic\\downloads'}] +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - download:662 - Trying web interface endpoint: transfers/downloads/M3H9X +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making POST request to: http://localhost:5030/api/v0/transfers/downloads/M3H9X +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - _make_request:245 - JSON payload: [{'filename': '@@mfapl\\Music (320)\\Gorillaz\\Demon Days\\03 Kids With Guns.mp3', 'size': 9099786, 'path': 'E:\\Broque Projects\\newMusic\\downloads'}] +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - download:645 - Attempting to download: @@mfapl\Music (320)\Gorillaz\Demon Days\04 O Green World.mp3 from M3H9X (size: 10944029) +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - download:658 - Using web interface API format: [{'filename': '@@mfapl\\Music (320)\\Gorillaz\\Demon Days\\04 O Green World.mp3', 'size': 10944029, 'path': 'E:\\Broque Projects\\newMusic\\downloads'}] +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - download:662 - Trying web interface endpoint: transfers/downloads/M3H9X +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making POST request to: http://localhost:5030/api/v0/transfers/downloads/M3H9X +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - _make_request:245 - JSON payload: [{'filename': '@@mfapl\\Music (320)\\Gorillaz\\Demon Days\\04 O Green World.mp3', 'size': 10944029, 'path': 'E:\\Broque Projects\\newMusic\\downloads'}] +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - download:645 - Attempting to download: @@mfapl\Music (320)\Gorillaz\Demon Days\05 Dirty Harry.mp3 from M3H9X (size: 9018278) +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - download:658 - Using web interface API format: [{'filename': '@@mfapl\\Music (320)\\Gorillaz\\Demon Days\\05 Dirty Harry.mp3', 'size': 9018278, 'path': 'E:\\Broque Projects\\newMusic\\downloads'}] +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - download:662 - Trying web interface endpoint: transfers/downloads/M3H9X +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making POST request to: http://localhost:5030/api/v0/transfers/downloads/M3H9X +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - _make_request:245 - JSON payload: [{'filename': '@@mfapl\\Music (320)\\Gorillaz\\Demon Days\\05 Dirty Harry.mp3', 'size': 9018278, 'path': 'E:\\Broque Projects\\newMusic\\downloads'}] +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - download:645 - Attempting to download: @@mfapl\Music (320)\Gorillaz\Demon Days\06 Feel Good Inc..mp3 from M3H9X (size: 8912795) +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - download:658 - Using web interface API format: [{'filename': '@@mfapl\\Music (320)\\Gorillaz\\Demon Days\\06 Feel Good Inc..mp3', 'size': 8912795, 'path': 'E:\\Broque Projects\\newMusic\\downloads'}] +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - download:662 - Trying web interface endpoint: transfers/downloads/M3H9X +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making POST request to: http://localhost:5030/api/v0/transfers/downloads/M3H9X +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - _make_request:245 - JSON payload: [{'filename': '@@mfapl\\Music (320)\\Gorillaz\\Demon Days\\06 Feel Good Inc..mp3', 'size': 8912795, 'path': 'E:\\Broque Projects\\newMusic\\downloads'}] +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - download:645 - Attempting to download: @@mfapl\Music (320)\Gorillaz\Demon Days\07 El Maana.mp3 from M3H9X (size: 9267031) +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - download:658 - Using web interface API format: [{'filename': '@@mfapl\\Music (320)\\Gorillaz\\Demon Days\\07 El Maana.mp3', 'size': 9267031, 'path': 'E:\\Broque Projects\\newMusic\\downloads'}] +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - download:662 - Trying web interface endpoint: transfers/downloads/M3H9X +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making POST request to: http://localhost:5030/api/v0/transfers/downloads/M3H9X +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - _make_request:245 - JSON payload: [{'filename': '@@mfapl\\Music (320)\\Gorillaz\\Demon Days\\07 El Maana.mp3', 'size': 9267031, 'path': 'E:\\Broque Projects\\newMusic\\downloads'}] +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - download:645 - Attempting to download: @@mfapl\Music (320)\Gorillaz\Demon Days\08 Every Planet We Reach Is Dead.mp3 from M3H9X (size: 11796769) +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - download:658 - Using web interface API format: [{'filename': '@@mfapl\\Music (320)\\Gorillaz\\Demon Days\\08 Every Planet We Reach Is Dead.mp3', 'size': 11796769, 'path': 'E:\\Broque Projects\\newMusic\\downloads'}] +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - download:662 - Trying web interface endpoint: transfers/downloads/M3H9X +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making POST request to: http://localhost:5030/api/v0/transfers/downloads/M3H9X +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - _make_request:245 - JSON payload: [{'filename': '@@mfapl\\Music (320)\\Gorillaz\\Demon Days\\08 Every Planet We Reach Is Dead.mp3', 'size': 11796769, 'path': 'E:\\Broque Projects\\newMusic\\downloads'}] +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - download:645 - Attempting to download: @@mfapl\Music (320)\Gorillaz\Demon Days\09 November Has Come.mp3 from M3H9X (size: 6510580) +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - download:658 - Using web interface API format: [{'filename': '@@mfapl\\Music (320)\\Gorillaz\\Demon Days\\09 November Has Come.mp3', 'size': 6510580, 'path': 'E:\\Broque Projects\\newMusic\\downloads'}] +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - download:662 - Trying web interface endpoint: transfers/downloads/M3H9X +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making POST request to: http://localhost:5030/api/v0/transfers/downloads/M3H9X +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - _make_request:245 - JSON payload: [{'filename': '@@mfapl\\Music (320)\\Gorillaz\\Demon Days\\09 November Has Come.mp3', 'size': 6510580, 'path': 'E:\\Broque Projects\\newMusic\\downloads'}] +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - download:645 - Attempting to download: @@mfapl\Music (320)\Gorillaz\Demon Days\10 All Alone.mp3 from M3H9X (size: 8468658) +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - download:658 - Using web interface API format: [{'filename': '@@mfapl\\Music (320)\\Gorillaz\\Demon Days\\10 All Alone.mp3', 'size': 8468658, 'path': 'E:\\Broque Projects\\newMusic\\downloads'}] +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - download:662 - Trying web interface endpoint: transfers/downloads/M3H9X +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making POST request to: http://localhost:5030/api/v0/transfers/downloads/M3H9X +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - _make_request:245 - JSON payload: [{'filename': '@@mfapl\\Music (320)\\Gorillaz\\Demon Days\\10 All Alone.mp3', 'size': 8468658, 'path': 'E:\\Broque Projects\\newMusic\\downloads'}] +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - download:645 - Attempting to download: @@mfapl\Music (320)\Gorillaz\Demon Days\11 White Light.mp3 from M3H9X (size: 5203427) +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - download:658 - Using web interface API format: [{'filename': '@@mfapl\\Music (320)\\Gorillaz\\Demon Days\\11 White Light.mp3', 'size': 5203427, 'path': 'E:\\Broque Projects\\newMusic\\downloads'}] +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - download:662 - Trying web interface endpoint: transfers/downloads/M3H9X +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making POST request to: http://localhost:5030/api/v0/transfers/downloads/M3H9X +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - _make_request:245 - JSON payload: [{'filename': '@@mfapl\\Music (320)\\Gorillaz\\Demon Days\\11 White Light.mp3', 'size': 5203427, 'path': 'E:\\Broque Projects\\newMusic\\downloads'}] +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - download:645 - Attempting to download: @@mfapl\Music (320)\Gorillaz\Demon Days\12 DARE.mp3 from M3H9X (size: 9838580) +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - download:658 - Using web interface API format: [{'filename': '@@mfapl\\Music (320)\\Gorillaz\\Demon Days\\12 DARE.mp3', 'size': 9838580, 'path': 'E:\\Broque Projects\\newMusic\\downloads'}] +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - download:662 - Trying web interface endpoint: transfers/downloads/M3H9X +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making POST request to: http://localhost:5030/api/v0/transfers/downloads/M3H9X +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - _make_request:245 - JSON payload: [{'filename': '@@mfapl\\Music (320)\\Gorillaz\\Demon Days\\12 DARE.mp3', 'size': 9838580, 'path': 'E:\\Broque Projects\\newMusic\\downloads'}] +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - download:645 - Attempting to download: @@mfapl\Music (320)\Gorillaz\Demon Days\13 Fire Coming Out Of The Monkey's Head.mp3 from M3H9X (size: 7923346) +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - download:658 - Using web interface API format: [{'filename': "@@mfapl\\Music (320)\\Gorillaz\\Demon Days\\13 Fire Coming Out Of The Monkey's Head.mp3", 'size': 7923346, 'path': 'E:\\Broque Projects\\newMusic\\downloads'}] +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - download:662 - Trying web interface endpoint: transfers/downloads/M3H9X +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making POST request to: http://localhost:5030/api/v0/transfers/downloads/M3H9X +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - _make_request:245 - JSON payload: [{'filename': "@@mfapl\\Music (320)\\Gorillaz\\Demon Days\\13 Fire Coming Out Of The Monkey's Head.mp3", 'size': 7923346, 'path': 'E:\\Broque Projects\\newMusic\\downloads'}] +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - download:645 - Attempting to download: @@mfapl\Music (320)\Gorillaz\Demon Days\14 Don't Get Lost In Heaven.mp3 from M3H9X (size: 4881553) +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - download:658 - Using web interface API format: [{'filename': "@@mfapl\\Music (320)\\Gorillaz\\Demon Days\\14 Don't Get Lost In Heaven.mp3", 'size': 4881553, 'path': 'E:\\Broque Projects\\newMusic\\downloads'}] +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - download:662 - Trying web interface endpoint: transfers/downloads/M3H9X +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making POST request to: http://localhost:5030/api/v0/transfers/downloads/M3H9X +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - _make_request:245 - JSON payload: [{'filename': "@@mfapl\\Music (320)\\Gorillaz\\Demon Days\\14 Don't Get Lost In Heaven.mp3", 'size': 4881553, 'path': 'E:\\Broque Projects\\newMusic\\downloads'}] +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - download:645 - Attempting to download: @@mfapl\Music (320)\Gorillaz\Demon Days\15 Demon Days.mp3 from M3H9X (size: 10821770) +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - download:658 - Using web interface API format: [{'filename': '@@mfapl\\Music (320)\\Gorillaz\\Demon Days\\15 Demon Days.mp3', 'size': 10821770, 'path': 'E:\\Broque Projects\\newMusic\\downloads'}] +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - download:662 - Trying web interface endpoint: transfers/downloads/M3H9X +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making POST request to: http://localhost:5030/api/v0/transfers/downloads/M3H9X +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-14 20:08:42 - newmusic.soulseek_client - DEBUG - _make_request:245 - JSON payload: [{'filename': '@@mfapl\\Music (320)\\Gorillaz\\Demon Days\\15 Demon Days.mp3', 'size': 10821770, 'path': 'E:\\Broque Projects\\newMusic\\downloads'}] +2025-07-14 20:08:43 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 201 +2025-07-14 20:08:43 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: ... +2025-07-14 20:08:43 - newmusic.soulseek_client - INFO - download:667 - [SUCCESS] Started download: @@mfapl\Music (320)\Gorillaz\Demon Days\02 Last Living Souls.mp3 from M3H9X +2025-07-14 20:08:43 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 201 +2025-07-14 20:08:43 - newmusic.soulseek_client - DEBUG - download:677 - No ID in response, using filename as fallback: {} +2025-07-14 20:08:43 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: ... +2025-07-14 20:08:43 - newmusic.soulseek_client - INFO - download:667 - [SUCCESS] Started download: @@mfapl\Music (320)\Gorillaz\Demon Days\09 November Has Come.mp3 from M3H9X +2025-07-14 20:08:43 - newmusic.soulseek_client - DEBUG - download:677 - No ID in response, using filename as fallback: {} +2025-07-14 20:08:43 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 201 +2025-07-14 20:08:43 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: ... +2025-07-14 20:08:43 - newmusic.soulseek_client - INFO - download:667 - [SUCCESS] Started download: @@mfapl\Music (320)\Gorillaz\Demon Days\01 Intro.mp3 from M3H9X +2025-07-14 20:08:43 - newmusic.soulseek_client - DEBUG - download:677 - No ID in response, using filename as fallback: {} +2025-07-14 20:08:43 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 201 +2025-07-14 20:08:43 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: ... +2025-07-14 20:08:43 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 201 +2025-07-14 20:08:43 - newmusic.soulseek_client - INFO - download:667 - [SUCCESS] Started download: @@mfapl\Music (320)\Gorillaz\Demon Days\14 Don't Get Lost In Heaven.mp3 from M3H9X +2025-07-14 20:08:43 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: ... +2025-07-14 20:08:43 - newmusic.soulseek_client - DEBUG - download:677 - No ID in response, using filename as fallback: {} +2025-07-14 20:08:43 - newmusic.soulseek_client - INFO - download:667 - [SUCCESS] Started download: @@mfapl\Music (320)\Gorillaz\Demon Days\10 All Alone.mp3 from M3H9X +2025-07-14 20:08:43 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 201 +2025-07-14 20:08:43 - newmusic.soulseek_client - DEBUG - download:677 - No ID in response, using filename as fallback: {} +2025-07-14 20:08:43 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: ... +2025-07-14 20:08:43 - newmusic.soulseek_client - INFO - download:667 - [SUCCESS] Started download: @@mfapl\Music (320)\Gorillaz\Demon Days\13 Fire Coming Out Of The Monkey's Head.mp3 from M3H9X +2025-07-14 20:08:43 - newmusic.soulseek_client - DEBUG - download:677 - No ID in response, using filename as fallback: {} +2025-07-14 20:08:43 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 201 +2025-07-14 20:08:43 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: ... +2025-07-14 20:08:43 - newmusic.soulseek_client - INFO - download:667 - [SUCCESS] Started download: @@mfapl\Music (320)\Gorillaz\Demon Days\06 Feel Good Inc..mp3 from M3H9X +2025-07-14 20:08:43 - newmusic.soulseek_client - DEBUG - download:677 - No ID in response, using filename as fallback: {} +2025-07-14 20:08:43 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 201 +2025-07-14 20:08:43 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: ... +2025-07-14 20:08:43 - newmusic.soulseek_client - INFO - download:667 - [SUCCESS] Started download: @@mfapl\Music (320)\Gorillaz\Demon Days\15 Demon Days.mp3 from M3H9X +2025-07-14 20:08:43 - newmusic.soulseek_client - DEBUG - download:677 - No ID in response, using filename as fallback: {} +2025-07-14 20:08:43 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 201 +2025-07-14 20:08:43 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: ... +2025-07-14 20:08:43 - newmusic.soulseek_client - INFO - download:667 - [SUCCESS] Started download: @@mfapl\Music (320)\Gorillaz\Demon Days\12 DARE.mp3 from M3H9X +2025-07-14 20:08:43 - newmusic.soulseek_client - DEBUG - download:677 - No ID in response, using filename as fallback: {} +2025-07-14 20:08:43 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 201 +2025-07-14 20:08:43 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: ... +2025-07-14 20:08:43 - newmusic.soulseek_client - INFO - download:667 - [SUCCESS] Started download: @@mfapl\Music (320)\Gorillaz\Demon Days\04 O Green World.mp3 from M3H9X +2025-07-14 20:08:43 - newmusic.soulseek_client - DEBUG - download:677 - No ID in response, using filename as fallback: {} +2025-07-14 20:08:43 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 201 +2025-07-14 20:08:43 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: ... +2025-07-14 20:08:43 - newmusic.soulseek_client - INFO - download:667 - [SUCCESS] Started download: @@mfapl\Music (320)\Gorillaz\Demon Days\07 El Maana.mp3 from M3H9X +2025-07-14 20:08:43 - newmusic.soulseek_client - DEBUG - download:677 - No ID in response, using filename as fallback: {} +2025-07-14 20:08:43 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 201 +2025-07-14 20:08:43 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: ... +2025-07-14 20:08:43 - newmusic.soulseek_client - INFO - download:667 - [SUCCESS] Started download: @@mfapl\Music (320)\Gorillaz\Demon Days\08 Every Planet We Reach Is Dead.mp3 from M3H9X +2025-07-14 20:08:43 - newmusic.soulseek_client - DEBUG - download:677 - No ID in response, using filename as fallback: {} +2025-07-14 20:08:44 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 201 +2025-07-14 20:08:44 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: ... +2025-07-14 20:08:44 - newmusic.soulseek_client - INFO - download:667 - [SUCCESS] Started download: @@mfapl\Music (320)\Gorillaz\Demon Days\05 Dirty Harry.mp3 from M3H9X +2025-07-14 20:08:44 - newmusic.soulseek_client - DEBUG - download:677 - No ID in response, using filename as fallback: {} +2025-07-14 20:08:44 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/transfers/downloads +2025-07-14 20:08:44 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-14 20:08:44 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 201 +2025-07-14 20:08:44 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: ... +2025-07-14 20:08:44 - newmusic.soulseek_client - INFO - download:667 - [SUCCESS] Started download: @@mfapl\Music (320)\Gorillaz\Demon Days\11 White Light.mp3 from M3H9X +2025-07-14 20:08:44 - newmusic.soulseek_client - DEBUG - download:677 - No ID in response, using filename as fallback: {} +2025-07-14 20:08:44 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 201 +2025-07-14 20:08:44 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: ... +2025-07-14 20:08:44 - newmusic.soulseek_client - INFO - download:667 - [SUCCESS] Started download: @@mfapl\Music (320)\Gorillaz\Demon Days\03 Kids With Guns.mp3 from M3H9X +2025-07-14 20:08:44 - newmusic.soulseek_client - DEBUG - download:677 - No ID in response, using filename as fallback: {} +2025-07-14 20:08:44 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-14 20:08:44 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: [{"username":"M3H9X","directories":[{"directory":"@@mfapl\\Music (320)\\Gorillaz\\Demon Days","fileCount":15,"files":[{"id":"245839e8-e44d-41e9-bb10-51d0daacb5f6","username":"M3H9X","direction":"Download","filename":"@@mfapl\\Music (320)\\Gorillaz\\Demon Days\\04 O Green World.mp3","size":10944029,"startOffset":0,"state":"Queued, Remotely","stateDescription":"Queued, Remotely","requestedAt":"2025-07-15T03:08:43.1893054","enqueuedAt":"2025-07-15T03:08:43.7677246","bytesTransferred":0,"averageSpee... +2025-07-14 20:08:46 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/transfers/downloads +2025-07-14 20:08:46 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-14 20:08:46 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-14 20:08:46 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: [{"username":"M3H9X","directories":[{"directory":"@@mfapl\\Music (320)\\Gorillaz\\Demon Days","fileCount":15,"files":[{"id":"245839e8-e44d-41e9-bb10-51d0daacb5f6","username":"M3H9X","direction":"Download","filename":"@@mfapl\\Music (320)\\Gorillaz\\Demon Days\\04 O Green World.mp3","size":10944029,"startOffset":0,"state":"Initializing","stateDescription":"Initializing","requestedAt":"2025-07-15T03:08:43.1893054","enqueuedAt":"2025-07-15T03:08:46.1616635","bytesTransferred":0,"averageSpeed":0,"by... +2025-07-14 20:08:48 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/transfers/downloads +2025-07-14 20:08:48 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-14 20:08:48 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-14 20:08:48 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: [{"username":"M3H9X","directories":[{"directory":"@@mfapl\\Music (320)\\Gorillaz\\Demon Days","fileCount":15,"files":[{"id":"245839e8-e44d-41e9-bb10-51d0daacb5f6","username":"M3H9X","direction":"Download","filename":"@@mfapl\\Music (320)\\Gorillaz\\Demon Days\\04 O Green World.mp3","size":10944029,"startOffset":0,"state":"Completed, Succeeded","stateDescription":"Completed, Succeeded","requestedAt":"2025-07-15T03:08:43.1893054","enqueuedAt":"2025-07-15T03:08:46.1616635","startedAt":"2025-07-15T0... +2025-07-14 20:08:50 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/transfers/downloads +2025-07-14 20:08:50 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-14 20:08:50 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-14 20:08:50 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: [{"username":"M3H9X","directories":[{"directory":"@@mfapl\\Music (320)\\Gorillaz\\Demon Days","fileCount":15,"files":[{"id":"245839e8-e44d-41e9-bb10-51d0daacb5f6","username":"M3H9X","direction":"Download","filename":"@@mfapl\\Music (320)\\Gorillaz\\Demon Days\\04 O Green World.mp3","size":10944029,"startOffset":0,"state":"Completed, Succeeded","stateDescription":"Completed, Succeeded","requestedAt":"2025-07-15T03:08:43.1893054","enqueuedAt":"2025-07-15T03:08:46.1616635","startedAt":"2025-07-15T0... +2025-07-14 20:08:52 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/transfers/downloads +2025-07-14 20:08:52 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-14 20:08:52 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-14 20:08:52 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: [{"username":"M3H9X","directories":[{"directory":"@@mfapl\\Music (320)\\Gorillaz\\Demon Days","fileCount":15,"files":[{"id":"245839e8-e44d-41e9-bb10-51d0daacb5f6","username":"M3H9X","direction":"Download","filename":"@@mfapl\\Music (320)\\Gorillaz\\Demon Days\\04 O Green World.mp3","size":10944029,"startOffset":0,"state":"Completed, Succeeded","stateDescription":"Completed, Succeeded","requestedAt":"2025-07-15T03:08:43.1893054","enqueuedAt":"2025-07-15T03:08:46.1616635","startedAt":"2025-07-15T0... +2025-07-14 20:08:54 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/transfers/downloads +2025-07-14 20:08:54 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-14 20:08:54 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-14 20:08:54 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: [{"username":"M3H9X","directories":[{"directory":"@@mfapl\\Music (320)\\Gorillaz\\Demon Days","fileCount":15,"files":[{"id":"245839e8-e44d-41e9-bb10-51d0daacb5f6","username":"M3H9X","direction":"Download","filename":"@@mfapl\\Music (320)\\Gorillaz\\Demon Days\\04 O Green World.mp3","size":10944029,"startOffset":0,"state":"Completed, Succeeded","stateDescription":"Completed, Succeeded","requestedAt":"2025-07-15T03:08:43.1893054","enqueuedAt":"2025-07-15T03:08:46.1616635","startedAt":"2025-07-15T0... +2025-07-14 20:08:56 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/transfers/downloads +2025-07-14 20:08:56 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-14 20:08:56 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-14 20:08:56 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: [{"username":"M3H9X","directories":[{"directory":"@@mfapl\\Music (320)\\Gorillaz\\Demon Days","fileCount":15,"files":[{"id":"245839e8-e44d-41e9-bb10-51d0daacb5f6","username":"M3H9X","direction":"Download","filename":"@@mfapl\\Music (320)\\Gorillaz\\Demon Days\\04 O Green World.mp3","size":10944029,"startOffset":0,"state":"Completed, Succeeded","stateDescription":"Completed, Succeeded","requestedAt":"2025-07-15T03:08:43.1893054","enqueuedAt":"2025-07-15T03:08:46.1616635","startedAt":"2025-07-15T0... +2025-07-14 20:08:58 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/transfers/downloads +2025-07-14 20:08:58 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-14 20:08:58 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-14 20:08:58 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: [{"username":"M3H9X","directories":[{"directory":"@@mfapl\\Music (320)\\Gorillaz\\Demon Days","fileCount":15,"files":[{"id":"245839e8-e44d-41e9-bb10-51d0daacb5f6","username":"M3H9X","direction":"Download","filename":"@@mfapl\\Music (320)\\Gorillaz\\Demon Days\\04 O Green World.mp3","size":10944029,"startOffset":0,"state":"Completed, Succeeded","stateDescription":"Completed, Succeeded","requestedAt":"2025-07-15T03:08:43.1893054","enqueuedAt":"2025-07-15T03:08:46.1616635","startedAt":"2025-07-15T0... +2025-07-14 20:09:00 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/transfers/downloads +2025-07-14 20:09:00 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-14 20:09:00 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-14 20:09:00 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: [{"username":"M3H9X","directories":[{"directory":"@@mfapl\\Music (320)\\Gorillaz\\Demon Days","fileCount":15,"files":[{"id":"245839e8-e44d-41e9-bb10-51d0daacb5f6","username":"M3H9X","direction":"Download","filename":"@@mfapl\\Music (320)\\Gorillaz\\Demon Days\\04 O Green World.mp3","size":10944029,"startOffset":0,"state":"Completed, Succeeded","stateDescription":"Completed, Succeeded","requestedAt":"2025-07-15T03:08:43.1893054","enqueuedAt":"2025-07-15T03:08:46.1616635","startedAt":"2025-07-15T0... +2025-07-14 20:09:02 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/transfers/downloads +2025-07-14 20:09:02 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-14 20:09:02 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-14 20:09:02 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: [{"username":"M3H9X","directories":[{"directory":"@@mfapl\\Music (320)\\Gorillaz\\Demon Days","fileCount":15,"files":[{"id":"245839e8-e44d-41e9-bb10-51d0daacb5f6","username":"M3H9X","direction":"Download","filename":"@@mfapl\\Music (320)\\Gorillaz\\Demon Days\\04 O Green World.mp3","size":10944029,"startOffset":0,"state":"Completed, Succeeded","stateDescription":"Completed, Succeeded","requestedAt":"2025-07-15T03:08:43.1893054","enqueuedAt":"2025-07-15T03:08:46.1616635","startedAt":"2025-07-15T0... +2025-07-14 20:09:04 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/transfers/downloads +2025-07-14 20:09:04 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-14 20:09:04 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-14 20:09:04 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: [{"username":"M3H9X","directories":[{"directory":"@@mfapl\\Music (320)\\Gorillaz\\Demon Days","fileCount":15,"files":[{"id":"245839e8-e44d-41e9-bb10-51d0daacb5f6","username":"M3H9X","direction":"Download","filename":"@@mfapl\\Music (320)\\Gorillaz\\Demon Days\\04 O Green World.mp3","size":10944029,"startOffset":0,"state":"Completed, Succeeded","stateDescription":"Completed, Succeeded","requestedAt":"2025-07-15T03:08:43.1893054","enqueuedAt":"2025-07-15T03:08:46.1616635","startedAt":"2025-07-15T0... +2025-07-14 20:12:31 - newmusic.main - INFO - closeEvent:176 - Closing application... +2025-07-14 20:12:31 - newmusic.main - INFO - closeEvent:181 - Cleaning up Downloads page threads... +2025-07-14 20:12:31 - newmusic.main - INFO - closeEvent:186 - Stopping status monitoring thread... +2025-07-14 20:12:33 - newmusic.main - INFO - closeEvent:191 - Closing Soulseek client... +2025-07-14 20:12:33 - newmusic.main - INFO - closeEvent:197 - Application closed successfully diff --git a/ui/pages/__pycache__/downloads.cpython-312.pyc b/ui/pages/__pycache__/downloads.cpython-312.pyc index 2873d69c4a2487ef245167dc9f47faf9bf8eac59..9729f02993aeaf3922376fd7dcb618662eea02d2 100644 GIT binary patch delta 57008 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 x6ljJ2xHMR2` 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 {organized_path}") + + # Update the download item status and progress on main thread + download_item.update_status( + status='completed', + progress=100, + download_speed=0, + file_path=organized_path + ) + + # Move completed items to finished queue on main thread + print(f"[DEBUG] Moving completed download '{download_item.title}' to finished queue") + self.download_queue.move_to_finished(download_item) + + def _on_download_completion_error(self, download_item, error_message): + """Handle error in background download processing""" + print(f"❌ Background processing failed for '{download_item.title}': {error_message}") + + # Still mark as completed but with original path, move to finished queue + download_item.update_status( + status='completed', + progress=100, + download_speed=0, + file_path=download_item.file_path # Keep original path on error + ) + + # Move to finished queue even on error + print(f"[DEBUG] Moving download '{download_item.title}' to finished queue after error") + self.download_queue.move_to_finished(download_item) + def update_download_status(self): """Poll slskd API for download status updates (QTimer callback) - FIXED VERSION""" if not self.soulseek_client or not self.download_queue.download_items: @@ -8573,40 +8646,43 @@ class DownloadsPage(QWidget): # Check if this is a matched download and process accordingly print(f"🔍 Checking download item '{download_item.title}' for matched artist...") - if hasattr(download_item, 'matched_artist'): - print(f" ✅ Has matched_artist attribute: {download_item.matched_artist}") - if download_item.matched_artist: - print(f"🎯 Processing matched download for '{download_item.title}' by '{download_item.matched_artist.name}'") - try: - # Add a small delay to ensure file is fully written - import time - time.sleep(1) - - # Organize the file into Transfer folder structure - organized_path = self._organize_matched_download(download_item, absolute_file_path) - if organized_path: - absolute_file_path = organized_path - except Exception as e: - print(f"❌ Error organizing matched download: {e}") - # Continue with normal process if organization fails - else: - print(f" ⚠️ matched_artist is None or empty") - else: - print(f" ❌ No matched_artist attribute found") - # Let's also check all attributes of the download item for debugging - print(f" 📋 Download item attributes: {[attr for attr in dir(download_item) if not attr.startswith('_')]}") + if hasattr(download_item, 'matched_artist') and download_item.matched_artist: + print(f"🎯 Queuing background processing for matched download: '{download_item.title}' by '{download_item.matched_artist.name}'") - # Update the download item status and progress BEFORE moving - download_item.update_status( - status=new_status, - progress=100, # Force 100% for completed downloads - download_speed=int(avg_speed), - file_path=absolute_file_path - ) - # Move completed items to finished queue - print(f"[DEBUG] Moving completed download '{download_item.title}' to finished queue") - self.download_queue.move_to_finished(download_item) - continue + # Create background worker to handle the heavy processing + worker = DownloadCompletionWorker( + download_item=download_item, + absolute_file_path=absolute_file_path, + organize_func=self._organize_matched_download + ) + + # Connect worker signals to handlers + worker.signals.completed.connect(self._on_download_completion_finished) + worker.signals.error.connect(self._on_download_completion_error) + + # Submit to thread pool for background processing + self.completion_thread_pool.start(worker) + + # Don't process further here - worker will handle completion + continue + else: + # Non-matched download - process normally on main thread + if hasattr(download_item, 'matched_artist'): + print(f" ⚠️ matched_artist is None or empty") + else: + print(f" ❌ No matched_artist attribute found") + + # Update the download item status and progress for normal downloads + download_item.update_status( + status=new_status, + progress=100, # Force 100% for completed downloads + download_speed=int(avg_speed), + file_path=absolute_file_path + ) + # Move completed items to finished queue + print(f"[DEBUG] Moving normal completed download '{download_item.title}' to finished queue") + self.download_queue.move_to_finished(download_item) + continue elif 'Cancelled' in state or 'Canceled' in state: new_status = 'cancelled' # Update the download item status BEFORE moving @@ -9205,9 +9281,13 @@ class DownloadsPage(QWidget): def cleanup_resources(self): """Clean up resources when page is destroyed""" try: - # Shutdown thread pool + # Shutdown thread pools if hasattr(self, 'api_thread_pool'): self.api_thread_pool.shutdown(wait=False) print("🧹 API thread pool shutdown") + + if hasattr(self, 'completion_thread_pool'): + self.completion_thread_pool.waitForDone(3000) # Wait up to 3 seconds for completion + print("🧹 Completion thread pool shutdown") except Exception as e: print(f"❌ Error during resource cleanup: {e}") \ No newline at end of file