From 8e11d6258df3ba76ed44ca67d57622bdecb8a395 Mon Sep 17 00:00:00 2001 From: Broque Thomas Date: Mon, 28 Jul 2025 21:36:13 -0700 Subject: [PATCH] good --- .spotify_cache | 2 +- logs/app.log | 239 +++++++++++++++++++++ ui/__pycache__/sidebar.cpython-312.pyc | Bin 48100 -> 52517 bytes ui/sidebar.py | 276 ++++++++++++++++--------- 4 files changed, 416 insertions(+), 101 deletions(-) diff --git a/.spotify_cache b/.spotify_cache index 3703015c..a889ceef 100644 --- a/.spotify_cache +++ b/.spotify_cache @@ -1 +1 @@ -{"access_token": "BQB6squZ7SCnlhyV7JMzgjrYxuFnnJndk73GClKwZNZfnhuIOAQUZb-rwm_797BLGj83vYjKYcOd-4YUTpEH4hDGTgcGavc6Lh-R8JOIKdunsMoivUpH2eA7ai7-5JE2qrpEQ4fri3fz_NvbXsuCKiulTIpjM0LSURmKXQGwXgX2qzu2v61Rh0sghjL3Y3B3Xlj0LZWi2D-CMMPV7eQZ_sTEFAMiLRUO6E8nWtj6UJ3N5BBkb6XtiPcxSTDel5xf", "token_type": "Bearer", "expires_in": 3600, "scope": "user-library-read user-read-private playlist-read-private playlist-read-collaborative user-read-email", "expires_at": 1753760199, "refresh_token": "AQDmfQkPCGObfJeTUIbW1hAAwhSqkuHRA3Qh2dqVYMRh0eCkFMQgPNJDDzF8y-BiaVbj80zePkK_XSfYH1aJutMtNbnsqRKWuxP31BTrMc7pdUdbE7Fma4oH8wpDUKdG3MM"} \ No newline at end of file +{"access_token": "BQDoZCq5ttjLYCM8vOFk2pnsvARxII3YXm_zoucXgSLZSb9r0xgelTy1n_4mPlGbqWrdA2KaQwxWBBqq5S5qONTyVWHmuI-Ivuc7ZwmWBK3loX4gNw0XbHJi4FK47-kFbNsyI1Gi2cqLfFcIeEmtPJrhCB5zbG02g6aVTGh455q27Oy9JMKteL_hWnFUZXOYKHuZ4_KE4ePeJp-UMH-WInTNhxNCC7-0l3cm4eYyY7BSxVD4eHOhRCtf6_P-Pea9", "token_type": "Bearer", "expires_in": 3600, "scope": "user-library-read user-read-private playlist-read-private playlist-read-collaborative user-read-email", "expires_at": 1753767143, "refresh_token": "AQDmfQkPCGObfJeTUIbW1hAAwhSqkuHRA3Qh2dqVYMRh0eCkFMQgPNJDDzF8y-BiaVbj80zePkK_XSfYH1aJutMtNbnsqRKWuxP31BTrMc7pdUdbE7Fma4oH8wpDUKdG3MM"} \ No newline at end of file diff --git a/logs/app.log b/logs/app.log index 514c1eec..882c3e29 100644 --- a/logs/app.log +++ b/logs/app.log @@ -256875,3 +256875,242 @@ 2025-07-28 20:40:54 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: [{"endedAt":"2025-07-27T21:28:19.7264233Z","fileCount":13,"id":"41b335b7-58a3-4201-8506-22e0954564eb","isComplete":true,"lockedFileCount":0,"responseCount":12,"responses":[],"searchText":"Tommy Cash Baba Yaga","startedAt":"2025-07-27T21:28:02.1709869Z","state":"Completed, TimedOut","token":80},{"endedAt":"2025-07-27T21:28:20.4645342Z","fileCount":5,"id":"7e66f9a9-00ac-451b-a199-5f6a7f18930c","isComplete":true,"lockedFileCount":0,"responseCount":5,"responses":[],"searchText":"Tommy Cash SugaSuga"... 2025-07-28 20:40:54 - newmusic.soulseek_client - INFO - get_all_searches:957 - Retrieved 134 searches from slskd 2025-07-28 20:40:54 - newmusic.soulseek_client - DEBUG - maintain_search_history:1058 - Search count (134) within limit (200), no maintenance needed +2025-07-28 20:42:54 - newmusic.soulseek_client - DEBUG - get_all_searches:952 - Getting all searches with endpoint: searches +2025-07-28 20:42:54 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches +2025-07-28 20:42:54 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-28 20:42:54 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-28 20:42:54 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: [{"endedAt":"2025-07-27T21:28:19.7264233Z","fileCount":13,"id":"41b335b7-58a3-4201-8506-22e0954564eb","isComplete":true,"lockedFileCount":0,"responseCount":12,"responses":[],"searchText":"Tommy Cash Baba Yaga","startedAt":"2025-07-27T21:28:02.1709869Z","state":"Completed, TimedOut","token":80},{"endedAt":"2025-07-27T21:28:20.4645342Z","fileCount":5,"id":"7e66f9a9-00ac-451b-a199-5f6a7f18930c","isComplete":true,"lockedFileCount":0,"responseCount":5,"responses":[],"searchText":"Tommy Cash SugaSuga"... +2025-07-28 20:42:54 - newmusic.soulseek_client - INFO - get_all_searches:957 - Retrieved 134 searches from slskd +2025-07-28 20:42:54 - newmusic.soulseek_client - DEBUG - maintain_search_history:1058 - Search count (134) within limit (200), no maintenance needed +2025-07-28 20:44:54 - newmusic.soulseek_client - DEBUG - get_all_searches:952 - Getting all searches with endpoint: searches +2025-07-28 20:44:54 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches +2025-07-28 20:44:54 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-28 20:44:54 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-28 20:44:54 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: [{"endedAt":"2025-07-27T21:28:19.7264233Z","fileCount":13,"id":"41b335b7-58a3-4201-8506-22e0954564eb","isComplete":true,"lockedFileCount":0,"responseCount":12,"responses":[],"searchText":"Tommy Cash Baba Yaga","startedAt":"2025-07-27T21:28:02.1709869Z","state":"Completed, TimedOut","token":80},{"endedAt":"2025-07-27T21:28:20.4645342Z","fileCount":5,"id":"7e66f9a9-00ac-451b-a199-5f6a7f18930c","isComplete":true,"lockedFileCount":0,"responseCount":5,"responses":[],"searchText":"Tommy Cash SugaSuga"... +2025-07-28 20:44:54 - newmusic.soulseek_client - INFO - get_all_searches:957 - Retrieved 134 searches from slskd +2025-07-28 20:44:54 - newmusic.soulseek_client - DEBUG - maintain_search_history:1058 - Search count (134) within limit (200), no maintenance needed +2025-07-28 20:46:54 - newmusic.soulseek_client - DEBUG - get_all_searches:952 - Getting all searches with endpoint: searches +2025-07-28 20:46:54 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches +2025-07-28 20:46:54 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-28 20:46:54 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-28 20:46:54 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: [{"endedAt":"2025-07-27T21:28:19.7264233Z","fileCount":13,"id":"41b335b7-58a3-4201-8506-22e0954564eb","isComplete":true,"lockedFileCount":0,"responseCount":12,"responses":[],"searchText":"Tommy Cash Baba Yaga","startedAt":"2025-07-27T21:28:02.1709869Z","state":"Completed, TimedOut","token":80},{"endedAt":"2025-07-27T21:28:20.4645342Z","fileCount":5,"id":"7e66f9a9-00ac-451b-a199-5f6a7f18930c","isComplete":true,"lockedFileCount":0,"responseCount":5,"responses":[],"searchText":"Tommy Cash SugaSuga"... +2025-07-28 20:46:54 - newmusic.soulseek_client - INFO - get_all_searches:957 - Retrieved 134 searches from slskd +2025-07-28 20:46:54 - newmusic.soulseek_client - DEBUG - maintain_search_history:1058 - Search count (134) within limit (200), no maintenance needed +2025-07-28 20:48:54 - newmusic.soulseek_client - DEBUG - get_all_searches:952 - Getting all searches with endpoint: searches +2025-07-28 20:48:54 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches +2025-07-28 20:48:54 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-28 20:48:54 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-28 20:48:54 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: [{"endedAt":"2025-07-27T21:28:19.7264233Z","fileCount":13,"id":"41b335b7-58a3-4201-8506-22e0954564eb","isComplete":true,"lockedFileCount":0,"responseCount":12,"responses":[],"searchText":"Tommy Cash Baba Yaga","startedAt":"2025-07-27T21:28:02.1709869Z","state":"Completed, TimedOut","token":80},{"endedAt":"2025-07-27T21:28:20.4645342Z","fileCount":5,"id":"7e66f9a9-00ac-451b-a199-5f6a7f18930c","isComplete":true,"lockedFileCount":0,"responseCount":5,"responses":[],"searchText":"Tommy Cash SugaSuga"... +2025-07-28 20:48:54 - newmusic.soulseek_client - INFO - get_all_searches:957 - Retrieved 134 searches from slskd +2025-07-28 20:48:54 - newmusic.soulseek_client - DEBUG - maintain_search_history:1058 - Search count (134) within limit (200), no maintenance needed +2025-07-28 20:50:54 - newmusic.soulseek_client - DEBUG - get_all_searches:952 - Getting all searches with endpoint: searches +2025-07-28 20:50:54 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches +2025-07-28 20:50:54 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-28 20:50:54 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-28 20:50:54 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: [{"endedAt":"2025-07-27T21:28:19.7264233Z","fileCount":13,"id":"41b335b7-58a3-4201-8506-22e0954564eb","isComplete":true,"lockedFileCount":0,"responseCount":12,"responses":[],"searchText":"Tommy Cash Baba Yaga","startedAt":"2025-07-27T21:28:02.1709869Z","state":"Completed, TimedOut","token":80},{"endedAt":"2025-07-27T21:28:20.4645342Z","fileCount":5,"id":"7e66f9a9-00ac-451b-a199-5f6a7f18930c","isComplete":true,"lockedFileCount":0,"responseCount":5,"responses":[],"searchText":"Tommy Cash SugaSuga"... +2025-07-28 20:50:54 - newmusic.soulseek_client - INFO - get_all_searches:957 - Retrieved 134 searches from slskd +2025-07-28 20:50:54 - newmusic.soulseek_client - DEBUG - maintain_search_history:1058 - Search count (134) within limit (200), no maintenance needed +2025-07-28 20:52:54 - newmusic.soulseek_client - DEBUG - get_all_searches:952 - Getting all searches with endpoint: searches +2025-07-28 20:52:54 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches +2025-07-28 20:52:54 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-28 20:52:54 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-28 20:52:54 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: [{"endedAt":"2025-07-27T21:28:19.7264233Z","fileCount":13,"id":"41b335b7-58a3-4201-8506-22e0954564eb","isComplete":true,"lockedFileCount":0,"responseCount":12,"responses":[],"searchText":"Tommy Cash Baba Yaga","startedAt":"2025-07-27T21:28:02.1709869Z","state":"Completed, TimedOut","token":80},{"endedAt":"2025-07-27T21:28:20.4645342Z","fileCount":5,"id":"7e66f9a9-00ac-451b-a199-5f6a7f18930c","isComplete":true,"lockedFileCount":0,"responseCount":5,"responses":[],"searchText":"Tommy Cash SugaSuga"... +2025-07-28 20:52:54 - newmusic.soulseek_client - INFO - get_all_searches:957 - Retrieved 134 searches from slskd +2025-07-28 20:52:54 - newmusic.soulseek_client - DEBUG - maintain_search_history:1058 - Search count (134) within limit (200), no maintenance needed +2025-07-28 20:54:54 - newmusic.soulseek_client - DEBUG - get_all_searches:952 - Getting all searches with endpoint: searches +2025-07-28 20:54:54 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches +2025-07-28 20:54:54 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-28 20:54:54 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-28 20:54:54 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: [{"endedAt":"2025-07-27T21:28:19.7264233Z","fileCount":13,"id":"41b335b7-58a3-4201-8506-22e0954564eb","isComplete":true,"lockedFileCount":0,"responseCount":12,"responses":[],"searchText":"Tommy Cash Baba Yaga","startedAt":"2025-07-27T21:28:02.1709869Z","state":"Completed, TimedOut","token":80},{"endedAt":"2025-07-27T21:28:20.4645342Z","fileCount":5,"id":"7e66f9a9-00ac-451b-a199-5f6a7f18930c","isComplete":true,"lockedFileCount":0,"responseCount":5,"responses":[],"searchText":"Tommy Cash SugaSuga"... +2025-07-28 20:54:54 - newmusic.soulseek_client - INFO - get_all_searches:957 - Retrieved 134 searches from slskd +2025-07-28 20:54:54 - newmusic.soulseek_client - DEBUG - maintain_search_history:1058 - Search count (134) within limit (200), no maintenance needed +2025-07-28 20:56:54 - newmusic.soulseek_client - DEBUG - get_all_searches:952 - Getting all searches with endpoint: searches +2025-07-28 20:56:54 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches +2025-07-28 20:56:54 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-28 20:56:54 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-28 20:56:54 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: [{"endedAt":"2025-07-27T21:28:19.7264233Z","fileCount":13,"id":"41b335b7-58a3-4201-8506-22e0954564eb","isComplete":true,"lockedFileCount":0,"responseCount":12,"responses":[],"searchText":"Tommy Cash Baba Yaga","startedAt":"2025-07-27T21:28:02.1709869Z","state":"Completed, TimedOut","token":80},{"endedAt":"2025-07-27T21:28:20.4645342Z","fileCount":5,"id":"7e66f9a9-00ac-451b-a199-5f6a7f18930c","isComplete":true,"lockedFileCount":0,"responseCount":5,"responses":[],"searchText":"Tommy Cash SugaSuga"... +2025-07-28 20:56:54 - newmusic.soulseek_client - INFO - get_all_searches:957 - Retrieved 134 searches from slskd +2025-07-28 20:56:54 - newmusic.soulseek_client - DEBUG - maintain_search_history:1058 - Search count (134) within limit (200), no maintenance needed +2025-07-28 20:58:54 - newmusic.soulseek_client - DEBUG - get_all_searches:952 - Getting all searches with endpoint: searches +2025-07-28 20:58:54 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches +2025-07-28 20:58:54 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-28 20:58:54 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-28 20:58:54 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: [{"endedAt":"2025-07-27T21:28:19.7264233Z","fileCount":13,"id":"41b335b7-58a3-4201-8506-22e0954564eb","isComplete":true,"lockedFileCount":0,"responseCount":12,"responses":[],"searchText":"Tommy Cash Baba Yaga","startedAt":"2025-07-27T21:28:02.1709869Z","state":"Completed, TimedOut","token":80},{"endedAt":"2025-07-27T21:28:20.4645342Z","fileCount":5,"id":"7e66f9a9-00ac-451b-a199-5f6a7f18930c","isComplete":true,"lockedFileCount":0,"responseCount":5,"responses":[],"searchText":"Tommy Cash SugaSuga"... +2025-07-28 20:58:54 - newmusic.soulseek_client - INFO - get_all_searches:957 - Retrieved 134 searches from slskd +2025-07-28 20:58:54 - newmusic.soulseek_client - DEBUG - maintain_search_history:1058 - Search count (134) within limit (200), no maintenance needed +2025-07-28 21:00:54 - newmusic.soulseek_client - DEBUG - get_all_searches:952 - Getting all searches with endpoint: searches +2025-07-28 21:00:54 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches +2025-07-28 21:00:54 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-28 21:00:54 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-28 21:00:54 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: [{"endedAt":"2025-07-27T21:28:19.7264233Z","fileCount":13,"id":"41b335b7-58a3-4201-8506-22e0954564eb","isComplete":true,"lockedFileCount":0,"responseCount":12,"responses":[],"searchText":"Tommy Cash Baba Yaga","startedAt":"2025-07-27T21:28:02.1709869Z","state":"Completed, TimedOut","token":80},{"endedAt":"2025-07-27T21:28:20.4645342Z","fileCount":5,"id":"7e66f9a9-00ac-451b-a199-5f6a7f18930c","isComplete":true,"lockedFileCount":0,"responseCount":5,"responses":[],"searchText":"Tommy Cash SugaSuga"... +2025-07-28 21:00:54 - newmusic.soulseek_client - INFO - get_all_searches:957 - Retrieved 134 searches from slskd +2025-07-28 21:00:54 - newmusic.soulseek_client - DEBUG - maintain_search_history:1058 - Search count (134) within limit (200), no maintenance needed +2025-07-28 21:02:54 - newmusic.soulseek_client - DEBUG - get_all_searches:952 - Getting all searches with endpoint: searches +2025-07-28 21:02:54 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches +2025-07-28 21:02:54 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-28 21:02:54 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-28 21:02:54 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: [{"endedAt":"2025-07-27T21:28:19.7264233Z","fileCount":13,"id":"41b335b7-58a3-4201-8506-22e0954564eb","isComplete":true,"lockedFileCount":0,"responseCount":12,"responses":[],"searchText":"Tommy Cash Baba Yaga","startedAt":"2025-07-27T21:28:02.1709869Z","state":"Completed, TimedOut","token":80},{"endedAt":"2025-07-27T21:28:20.4645342Z","fileCount":5,"id":"7e66f9a9-00ac-451b-a199-5f6a7f18930c","isComplete":true,"lockedFileCount":0,"responseCount":5,"responses":[],"searchText":"Tommy Cash SugaSuga"... +2025-07-28 21:02:54 - newmusic.soulseek_client - INFO - get_all_searches:957 - Retrieved 134 searches from slskd +2025-07-28 21:02:54 - newmusic.soulseek_client - DEBUG - maintain_search_history:1058 - Search count (134) within limit (200), no maintenance needed +2025-07-28 21:04:54 - newmusic.soulseek_client - DEBUG - get_all_searches:952 - Getting all searches with endpoint: searches +2025-07-28 21:04:54 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches +2025-07-28 21:04:54 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-28 21:04:54 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-28 21:04:54 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: [{"endedAt":"2025-07-27T21:28:19.7264233Z","fileCount":13,"id":"41b335b7-58a3-4201-8506-22e0954564eb","isComplete":true,"lockedFileCount":0,"responseCount":12,"responses":[],"searchText":"Tommy Cash Baba Yaga","startedAt":"2025-07-27T21:28:02.1709869Z","state":"Completed, TimedOut","token":80},{"endedAt":"2025-07-27T21:28:20.4645342Z","fileCount":5,"id":"7e66f9a9-00ac-451b-a199-5f6a7f18930c","isComplete":true,"lockedFileCount":0,"responseCount":5,"responses":[],"searchText":"Tommy Cash SugaSuga"... +2025-07-28 21:04:54 - newmusic.soulseek_client - INFO - get_all_searches:957 - Retrieved 134 searches from slskd +2025-07-28 21:04:54 - newmusic.soulseek_client - DEBUG - maintain_search_history:1058 - Search count (134) within limit (200), no maintenance needed +2025-07-28 21:06:54 - newmusic.soulseek_client - DEBUG - get_all_searches:952 - Getting all searches with endpoint: searches +2025-07-28 21:06:54 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches +2025-07-28 21:06:54 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-28 21:06:54 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-28 21:06:54 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: [{"endedAt":"2025-07-27T21:28:19.7264233Z","fileCount":13,"id":"41b335b7-58a3-4201-8506-22e0954564eb","isComplete":true,"lockedFileCount":0,"responseCount":12,"responses":[],"searchText":"Tommy Cash Baba Yaga","startedAt":"2025-07-27T21:28:02.1709869Z","state":"Completed, TimedOut","token":80},{"endedAt":"2025-07-27T21:28:20.4645342Z","fileCount":5,"id":"7e66f9a9-00ac-451b-a199-5f6a7f18930c","isComplete":true,"lockedFileCount":0,"responseCount":5,"responses":[],"searchText":"Tommy Cash SugaSuga"... +2025-07-28 21:06:54 - newmusic.soulseek_client - INFO - get_all_searches:957 - Retrieved 134 searches from slskd +2025-07-28 21:06:54 - newmusic.soulseek_client - DEBUG - maintain_search_history:1058 - Search count (134) within limit (200), no maintenance needed +2025-07-28 21:08:54 - newmusic.soulseek_client - DEBUG - get_all_searches:952 - Getting all searches with endpoint: searches +2025-07-28 21:08:54 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches +2025-07-28 21:08:54 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-28 21:08:54 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-28 21:08:54 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: [{"endedAt":"2025-07-27T21:28:19.7264233Z","fileCount":13,"id":"41b335b7-58a3-4201-8506-22e0954564eb","isComplete":true,"lockedFileCount":0,"responseCount":12,"responses":[],"searchText":"Tommy Cash Baba Yaga","startedAt":"2025-07-27T21:28:02.1709869Z","state":"Completed, TimedOut","token":80},{"endedAt":"2025-07-27T21:28:20.4645342Z","fileCount":5,"id":"7e66f9a9-00ac-451b-a199-5f6a7f18930c","isComplete":true,"lockedFileCount":0,"responseCount":5,"responses":[],"searchText":"Tommy Cash SugaSuga"... +2025-07-28 21:08:54 - newmusic.soulseek_client - INFO - get_all_searches:957 - Retrieved 134 searches from slskd +2025-07-28 21:08:54 - newmusic.soulseek_client - DEBUG - maintain_search_history:1058 - Search count (134) within limit (200), no maintenance needed +2025-07-28 21:10:54 - newmusic.soulseek_client - DEBUG - get_all_searches:952 - Getting all searches with endpoint: searches +2025-07-28 21:10:54 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches +2025-07-28 21:10:54 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-28 21:10:54 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-28 21:10:54 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: [{"endedAt":"2025-07-27T21:28:19.7264233Z","fileCount":13,"id":"41b335b7-58a3-4201-8506-22e0954564eb","isComplete":true,"lockedFileCount":0,"responseCount":12,"responses":[],"searchText":"Tommy Cash Baba Yaga","startedAt":"2025-07-27T21:28:02.1709869Z","state":"Completed, TimedOut","token":80},{"endedAt":"2025-07-27T21:28:20.4645342Z","fileCount":5,"id":"7e66f9a9-00ac-451b-a199-5f6a7f18930c","isComplete":true,"lockedFileCount":0,"responseCount":5,"responses":[],"searchText":"Tommy Cash SugaSuga"... +2025-07-28 21:10:54 - newmusic.soulseek_client - INFO - get_all_searches:957 - Retrieved 134 searches from slskd +2025-07-28 21:10:54 - newmusic.soulseek_client - DEBUG - maintain_search_history:1058 - Search count (134) within limit (200), no maintenance needed +2025-07-28 21:12:24 - newmusic.main - INFO - change_page:278 - Changed to page: downloads +2025-07-28 21:12:26 - newmusic.main - INFO - change_page:278 - Changed to page: sync +2025-07-28 21:12:28 - newmusic.main - INFO - change_page:278 - Changed to page: dashboard +2025-07-28 21:12:30 - newmusic.main - INFO - change_page:278 - Changed to page: downloads +2025-07-28 21:12:30 - newmusic.main - INFO - change_page:278 - Changed to page: artists +2025-07-28 21:12:30 - newmusic.main - INFO - change_page:278 - Changed to page: settings +2025-07-28 21:12:54 - newmusic.soulseek_client - DEBUG - get_all_searches:952 - Getting all searches with endpoint: searches +2025-07-28 21:12:54 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches +2025-07-28 21:12:54 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-28 21:12:54 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-28 21:12:54 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: [{"endedAt":"2025-07-27T21:28:19.7264233Z","fileCount":13,"id":"41b335b7-58a3-4201-8506-22e0954564eb","isComplete":true,"lockedFileCount":0,"responseCount":12,"responses":[],"searchText":"Tommy Cash Baba Yaga","startedAt":"2025-07-27T21:28:02.1709869Z","state":"Completed, TimedOut","token":80},{"endedAt":"2025-07-27T21:28:20.4645342Z","fileCount":5,"id":"7e66f9a9-00ac-451b-a199-5f6a7f18930c","isComplete":true,"lockedFileCount":0,"responseCount":5,"responses":[],"searchText":"Tommy Cash SugaSuga"... +2025-07-28 21:12:54 - newmusic.soulseek_client - INFO - get_all_searches:957 - Retrieved 134 searches from slskd +2025-07-28 21:12:54 - newmusic.soulseek_client - DEBUG - maintain_search_history:1058 - Search count (134) within limit (200), no maintenance needed +2025-07-28 21:14:54 - newmusic.soulseek_client - DEBUG - get_all_searches:952 - Getting all searches with endpoint: searches +2025-07-28 21:14:54 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches +2025-07-28 21:14:54 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-28 21:14:54 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-28 21:14:54 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: [{"endedAt":"2025-07-27T21:28:19.7264233Z","fileCount":13,"id":"41b335b7-58a3-4201-8506-22e0954564eb","isComplete":true,"lockedFileCount":0,"responseCount":12,"responses":[],"searchText":"Tommy Cash Baba Yaga","startedAt":"2025-07-27T21:28:02.1709869Z","state":"Completed, TimedOut","token":80},{"endedAt":"2025-07-27T21:28:20.4645342Z","fileCount":5,"id":"7e66f9a9-00ac-451b-a199-5f6a7f18930c","isComplete":true,"lockedFileCount":0,"responseCount":5,"responses":[],"searchText":"Tommy Cash SugaSuga"... +2025-07-28 21:14:54 - newmusic.soulseek_client - INFO - get_all_searches:957 - Retrieved 134 searches from slskd +2025-07-28 21:14:54 - newmusic.soulseek_client - DEBUG - maintain_search_history:1058 - Search count (134) within limit (200), no maintenance needed +2025-07-28 21:16:54 - newmusic.soulseek_client - DEBUG - get_all_searches:952 - Getting all searches with endpoint: searches +2025-07-28 21:16:54 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches +2025-07-28 21:16:54 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-28 21:16:54 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-28 21:16:54 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: [{"endedAt":"2025-07-27T21:28:19.7264233Z","fileCount":13,"id":"41b335b7-58a3-4201-8506-22e0954564eb","isComplete":true,"lockedFileCount":0,"responseCount":12,"responses":[],"searchText":"Tommy Cash Baba Yaga","startedAt":"2025-07-27T21:28:02.1709869Z","state":"Completed, TimedOut","token":80},{"endedAt":"2025-07-27T21:28:20.4645342Z","fileCount":5,"id":"7e66f9a9-00ac-451b-a199-5f6a7f18930c","isComplete":true,"lockedFileCount":0,"responseCount":5,"responses":[],"searchText":"Tommy Cash SugaSuga"... +2025-07-28 21:16:54 - newmusic.soulseek_client - INFO - get_all_searches:957 - Retrieved 134 searches from slskd +2025-07-28 21:16:54 - newmusic.soulseek_client - DEBUG - maintain_search_history:1058 - Search count (134) within limit (200), no maintenance needed +2025-07-28 21:18:50 - newmusic.main - INFO - change_page:278 - Changed to page: sync +2025-07-28 21:18:51 - newmusic.main - INFO - change_page:278 - Changed to page: downloads +2025-07-28 21:18:51 - newmusic.main - INFO - change_page:278 - Changed to page: artists +2025-07-28 21:18:52 - newmusic.main - INFO - change_page:278 - Changed to page: settings +2025-07-28 21:18:53 - newmusic.main - INFO - change_page:278 - Changed to page: dashboard +2025-07-28 21:18:54 - newmusic.soulseek_client - DEBUG - get_all_searches:952 - Getting all searches with endpoint: searches +2025-07-28 21:18:54 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches +2025-07-28 21:18:54 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-28 21:18:54 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-28 21:18:54 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: [{"endedAt":"2025-07-27T21:28:19.7264233Z","fileCount":13,"id":"41b335b7-58a3-4201-8506-22e0954564eb","isComplete":true,"lockedFileCount":0,"responseCount":12,"responses":[],"searchText":"Tommy Cash Baba Yaga","startedAt":"2025-07-27T21:28:02.1709869Z","state":"Completed, TimedOut","token":80},{"endedAt":"2025-07-27T21:28:20.4645342Z","fileCount":5,"id":"7e66f9a9-00ac-451b-a199-5f6a7f18930c","isComplete":true,"lockedFileCount":0,"responseCount":5,"responses":[],"searchText":"Tommy Cash SugaSuga"... +2025-07-28 21:18:54 - newmusic.soulseek_client - INFO - get_all_searches:957 - Retrieved 134 searches from slskd +2025-07-28 21:18:54 - newmusic.soulseek_client - DEBUG - maintain_search_history:1058 - Search count (134) within limit (200), no maintenance needed +2025-07-28 21:19:34 - newmusic.main - INFO - change_page:278 - Changed to page: settings +2025-07-28 21:20:54 - newmusic.soulseek_client - DEBUG - get_all_searches:952 - Getting all searches with endpoint: searches +2025-07-28 21:20:54 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches +2025-07-28 21:20:54 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-28 21:20:54 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-28 21:20:54 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: [{"endedAt":"2025-07-27T21:28:19.7264233Z","fileCount":13,"id":"41b335b7-58a3-4201-8506-22e0954564eb","isComplete":true,"lockedFileCount":0,"responseCount":12,"responses":[],"searchText":"Tommy Cash Baba Yaga","startedAt":"2025-07-27T21:28:02.1709869Z","state":"Completed, TimedOut","token":80},{"endedAt":"2025-07-27T21:28:20.4645342Z","fileCount":5,"id":"7e66f9a9-00ac-451b-a199-5f6a7f18930c","isComplete":true,"lockedFileCount":0,"responseCount":5,"responses":[],"searchText":"Tommy Cash SugaSuga"... +2025-07-28 21:20:54 - newmusic.soulseek_client - INFO - get_all_searches:957 - Retrieved 134 searches from slskd +2025-07-28 21:20:54 - newmusic.soulseek_client - DEBUG - maintain_search_history:1058 - Search count (134) within limit (200), no maintenance needed +2025-07-28 21:22:54 - newmusic.soulseek_client - DEBUG - get_all_searches:952 - Getting all searches with endpoint: searches +2025-07-28 21:22:54 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches +2025-07-28 21:22:54 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-28 21:22:54 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-28 21:22:54 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: [{"endedAt":"2025-07-27T21:28:19.7264233Z","fileCount":13,"id":"41b335b7-58a3-4201-8506-22e0954564eb","isComplete":true,"lockedFileCount":0,"responseCount":12,"responses":[],"searchText":"Tommy Cash Baba Yaga","startedAt":"2025-07-27T21:28:02.1709869Z","state":"Completed, TimedOut","token":80},{"endedAt":"2025-07-27T21:28:20.4645342Z","fileCount":5,"id":"7e66f9a9-00ac-451b-a199-5f6a7f18930c","isComplete":true,"lockedFileCount":0,"responseCount":5,"responses":[],"searchText":"Tommy Cash SugaSuga"... +2025-07-28 21:22:54 - newmusic.soulseek_client - INFO - get_all_searches:957 - Retrieved 134 searches from slskd +2025-07-28 21:22:54 - newmusic.soulseek_client - DEBUG - maintain_search_history:1058 - Search count (134) within limit (200), no maintenance needed +2025-07-28 21:24:54 - newmusic.soulseek_client - DEBUG - get_all_searches:952 - Getting all searches with endpoint: searches +2025-07-28 21:24:54 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches +2025-07-28 21:24:54 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-28 21:24:54 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-28 21:24:54 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: [{"endedAt":"2025-07-27T21:28:19.7264233Z","fileCount":13,"id":"41b335b7-58a3-4201-8506-22e0954564eb","isComplete":true,"lockedFileCount":0,"responseCount":12,"responses":[],"searchText":"Tommy Cash Baba Yaga","startedAt":"2025-07-27T21:28:02.1709869Z","state":"Completed, TimedOut","token":80},{"endedAt":"2025-07-27T21:28:20.4645342Z","fileCount":5,"id":"7e66f9a9-00ac-451b-a199-5f6a7f18930c","isComplete":true,"lockedFileCount":0,"responseCount":5,"responses":[],"searchText":"Tommy Cash SugaSuga"... +2025-07-28 21:24:54 - newmusic.soulseek_client - INFO - get_all_searches:957 - Retrieved 134 searches from slskd +2025-07-28 21:24:54 - newmusic.soulseek_client - DEBUG - maintain_search_history:1058 - Search count (134) within limit (200), no maintenance needed +2025-07-28 21:26:54 - newmusic.soulseek_client - DEBUG - get_all_searches:952 - Getting all searches with endpoint: searches +2025-07-28 21:26:54 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches +2025-07-28 21:26:54 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-28 21:26:54 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-28 21:26:54 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: [{"endedAt":"2025-07-27T21:28:19.7264233Z","fileCount":13,"id":"41b335b7-58a3-4201-8506-22e0954564eb","isComplete":true,"lockedFileCount":0,"responseCount":12,"responses":[],"searchText":"Tommy Cash Baba Yaga","startedAt":"2025-07-27T21:28:02.1709869Z","state":"Completed, TimedOut","token":80},{"endedAt":"2025-07-27T21:28:20.4645342Z","fileCount":5,"id":"7e66f9a9-00ac-451b-a199-5f6a7f18930c","isComplete":true,"lockedFileCount":0,"responseCount":5,"responses":[],"searchText":"Tommy Cash SugaSuga"... +2025-07-28 21:26:54 - newmusic.soulseek_client - INFO - get_all_searches:957 - Retrieved 134 searches from slskd +2025-07-28 21:26:54 - newmusic.soulseek_client - DEBUG - maintain_search_history:1058 - Search count (134) within limit (200), no maintenance needed +2025-07-28 21:28:54 - newmusic.soulseek_client - DEBUG - get_all_searches:952 - Getting all searches with endpoint: searches +2025-07-28 21:28:54 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches +2025-07-28 21:28:54 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-28 21:28:54 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-28 21:28:54 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: [{"endedAt":"2025-07-27T21:28:19.7264233Z","fileCount":13,"id":"41b335b7-58a3-4201-8506-22e0954564eb","isComplete":true,"lockedFileCount":0,"responseCount":12,"responses":[],"searchText":"Tommy Cash Baba Yaga","startedAt":"2025-07-27T21:28:02.1709869Z","state":"Completed, TimedOut","token":80},{"endedAt":"2025-07-27T21:28:20.4645342Z","fileCount":5,"id":"7e66f9a9-00ac-451b-a199-5f6a7f18930c","isComplete":true,"lockedFileCount":0,"responseCount":5,"responses":[],"searchText":"Tommy Cash SugaSuga"... +2025-07-28 21:28:54 - newmusic.soulseek_client - INFO - get_all_searches:957 - Retrieved 134 searches from slskd +2025-07-28 21:28:54 - newmusic.soulseek_client - DEBUG - maintain_search_history:1058 - Search count (134) within limit (200), no maintenance needed +2025-07-28 21:28:54 - newmusic.main - INFO - change_page:278 - Changed to page: artists +2025-07-28 21:28:55 - newmusic.main - INFO - change_page:278 - Changed to page: downloads +2025-07-28 21:28:55 - newmusic.main - INFO - change_page:278 - Changed to page: sync +2025-07-28 21:28:55 - newmusic.main - INFO - change_page:278 - Changed to page: dashboard +2025-07-28 21:30:54 - newmusic.soulseek_client - DEBUG - get_all_searches:952 - Getting all searches with endpoint: searches +2025-07-28 21:30:54 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches +2025-07-28 21:30:54 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-28 21:30:54 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-28 21:30:54 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: [{"endedAt":"2025-07-27T21:28:19.7264233Z","fileCount":13,"id":"41b335b7-58a3-4201-8506-22e0954564eb","isComplete":true,"lockedFileCount":0,"responseCount":12,"responses":[],"searchText":"Tommy Cash Baba Yaga","startedAt":"2025-07-27T21:28:02.1709869Z","state":"Completed, TimedOut","token":80},{"endedAt":"2025-07-27T21:28:20.4645342Z","fileCount":5,"id":"7e66f9a9-00ac-451b-a199-5f6a7f18930c","isComplete":true,"lockedFileCount":0,"responseCount":5,"responses":[],"searchText":"Tommy Cash SugaSuga"... +2025-07-28 21:30:54 - newmusic.soulseek_client - INFO - get_all_searches:957 - Retrieved 134 searches from slskd +2025-07-28 21:30:54 - newmusic.soulseek_client - DEBUG - maintain_search_history:1058 - Search count (134) within limit (200), no maintenance needed +2025-07-28 21:31:59 - newmusic.main - INFO - closeEvent:295 - Closing application... +2025-07-28 21:31:59 - newmusic.main - INFO - closeEvent:300 - Cleaning up Downloads page threads... +2025-07-28 21:31:59 - newmusic.main - INFO - closeEvent:305 - Stopping status monitoring thread... +2025-07-28 21:32:02 - newmusic.main - INFO - closeEvent:310 - Stopping search maintenance timer... +2025-07-28 21:32:02 - newmusic.main - INFO - closeEvent:315 - Closing Soulseek client... +2025-07-28 21:32:02 - newmusic.main - ERROR - closeEvent:319 - Error closing Soulseek client: Event loop is closed +2025-07-28 21:32:02 - newmusic.main - INFO - closeEvent:321 - Application closed successfully +2025-07-28 21:32:18 - newmusic - INFO - setup_logging:57 - Logging initialized with level: DEBUG +2025-07-28 21:32:18 - newmusic.main - INFO - main:335 - Starting NewMusic application +2025-07-28 21:32:18 - newmusic.spotify_client - INFO - _setup_client:179 - Spotify client initialized (user info will be fetched when needed) +2025-07-28 21:32:18 - newmusic.soulseek_client - INFO - _setup_client:220 - Soulseek client configured with slskd at http://localhost:5030 +2025-07-28 21:32:19 - newmusic.spotify_client - INFO - _setup_client:179 - Spotify client initialized (user info will be fetched when needed) +2025-07-28 21:32:20 - newmusic.spotify_client - INFO - _setup_client:179 - Spotify client initialized (user info will be fetched when needed) +2025-07-28 21:32:20 - newmusic.soulseek_client - INFO - _setup_client:220 - Soulseek client configured with slskd at http://localhost:5030 +2025-07-28 21:32:20 - newmusic.main - INFO - change_page:278 - Changed to page: dashboard +2025-07-28 21:32:20 - newmusic.main - INFO - setup_media_player_connections:230 - Media player connections established between sidebar and downloads page +2025-07-28 21:32:20 - newmusic.main - INFO - setup_settings_connections:235 - Settings change connections established +2025-07-28 21:32:20 - newmusic.main - INFO - setup_search_maintenance:91 - Search maintenance timer started (every 2 minutes, keeps 200 most recent searches) +2025-07-28 21:32:20 - newmusic.plex_client - INFO - _find_music_library:129 - Found music library: Music +2025-07-28 21:32:20 - newmusic.plex_client - INFO - _setup_client:115 - Successfully connected to Plex server: PLEX-MACHINE +2025-07-28 21:32:23 - newmusic.main - INFO - change_page:278 - Changed to page: sync +2025-07-28 21:32:23 - newmusic.spotify_client - INFO - _ensure_user_id:195 - Successfully authenticated with Spotify as broquethomas +2025-07-28 21:32:23 - newmusic.main - INFO - change_page:278 - Changed to page: downloads +2025-07-28 21:32:23 - newmusic.spotify_client - INFO - get_user_playlists_metadata_only:256 - Retrieved 8 playlist metadata (first batch) +2025-07-28 21:32:24 - newmusic.main - INFO - change_page:278 - Changed to page: artists +2025-07-28 21:32:25 - newmusic.main - INFO - change_page:278 - Changed to page: settings +2025-07-28 21:32:26 - newmusic.main - INFO - change_page:278 - Changed to page: dashboard +2025-07-28 21:32:54 - newmusic.main - INFO - change_page:278 - Changed to page: artists +2025-07-28 21:32:55 - newmusic.main - INFO - change_page:278 - Changed to page: settings +2025-07-28 21:32:56 - newmusic.main - INFO - change_page:278 - Changed to page: downloads +2025-07-28 21:32:57 - newmusic.main - INFO - change_page:278 - Changed to page: sync +2025-07-28 21:32:58 - newmusic.main - INFO - change_page:278 - Changed to page: dashboard +2025-07-28 21:34:20 - newmusic.soulseek_client - DEBUG - get_all_searches:952 - Getting all searches with endpoint: searches +2025-07-28 21:34:20 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches +2025-07-28 21:34:20 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-28 21:34:20 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-28 21:34:20 - newmusic.soulseek_client - DEBUG - _make_request:255 - Response text: [{"endedAt":"2025-07-27T21:28:19.7264233Z","fileCount":13,"id":"41b335b7-58a3-4201-8506-22e0954564eb","isComplete":true,"lockedFileCount":0,"responseCount":12,"responses":[],"searchText":"Tommy Cash Baba Yaga","startedAt":"2025-07-27T21:28:02.1709869Z","state":"Completed, TimedOut","token":80},{"endedAt":"2025-07-27T21:28:20.4645342Z","fileCount":5,"id":"7e66f9a9-00ac-451b-a199-5f6a7f18930c","isComplete":true,"lockedFileCount":0,"responseCount":5,"responses":[],"searchText":"Tommy Cash SugaSuga"... +2025-07-28 21:34:20 - newmusic.soulseek_client - INFO - get_all_searches:957 - Retrieved 134 searches from slskd +2025-07-28 21:34:20 - newmusic.soulseek_client - DEBUG - maintain_search_history:1058 - Search count (134) within limit (200), no maintenance needed +2025-07-28 21:34:24 - newmusic.main - INFO - change_page:278 - Changed to page: settings +2025-07-28 21:34:24 - newmusic.main - INFO - change_page:278 - Changed to page: artists +2025-07-28 21:34:25 - newmusic.main - INFO - change_page:278 - Changed to page: downloads +2025-07-28 21:34:26 - newmusic.main - INFO - change_page:278 - Changed to page: sync +2025-07-28 21:34:26 - newmusic.main - INFO - change_page:278 - Changed to page: downloads +2025-07-28 21:34:26 - newmusic.main - INFO - change_page:278 - Changed to page: artists +2025-07-28 21:34:46 - newmusic.main - INFO - change_page:278 - Changed to page: settings +2025-07-28 21:34:46 - newmusic.main - INFO - change_page:278 - Changed to page: artists +2025-07-28 21:34:47 - newmusic.main - INFO - change_page:278 - Changed to page: dashboard diff --git a/ui/__pycache__/sidebar.cpython-312.pyc b/ui/__pycache__/sidebar.cpython-312.pyc index 0db58d23c01c16e0c4446a68c8208392a92d019d..e0867bd2e0f9dc36cbdbf13f3b667fa28d85f658 100644 GIT binary patch delta 5712 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 delta 4693 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 diff --git a/ui/sidebar.py b/ui/sidebar.py index 1f67a615..169c3472 100644 --- a/ui/sidebar.py +++ b/ui/sidebar.py @@ -138,31 +138,34 @@ class SidebarButton(QPushButton): self.setup_ui() def setup_ui(self): - self.setFixedHeight(50) - self.setFixedWidth(200) + self.setFixedHeight(52) + self.setFixedWidth(216) # Adjusted for new sidebar width self.setCursor(Qt.CursorShape.PointingHandCursor) layout = QHBoxLayout(self) - layout.setContentsMargins(20, 0, 20, 0) - layout.setSpacing(15) + layout.setContentsMargins(18, 0, 18, 0) + layout.setSpacing(16) - # Icon label + # Icon label with better styling self.icon_label = QLabel(self.icon_text) - self.icon_label.setFixedSize(24, 24) + self.icon_label.setFixedSize(28, 28) self.icon_label.setAlignment(Qt.AlignmentFlag.AlignCenter) self.icon_label.setStyleSheet(""" QLabel { - color: #b3b3b3; + color: rgba(255, 255, 255, 0.7); font-size: 16px; - font-weight: bold; - border-radius: 12px; - background: rgba(255, 255, 255, 0.1); + font-weight: 600; + border-radius: 14px; + background: qlineargradient(x1: 0, y1: 0, x2: 1, y2: 1, + stop: 0 rgba(255, 255, 255, 0.08), + stop: 1 rgba(255, 255, 255, 0.04)); + border: 1px solid rgba(255, 255, 255, 0.05); } """) - # Text label + # Text label with improved typography self.text_label = QLabel(self.text) - self.text_label.setFont(QFont("Arial", 11, QFont.Weight.Medium)) + self.text_label.setFont(QFont("SF Pro Text", 12, QFont.Weight.Medium)) layout.addWidget(self.icon_label) layout.addWidget(self.text_label) @@ -178,25 +181,41 @@ class SidebarButton(QPushButton): if self.is_active: self.setStyleSheet(""" SidebarButton { - background: rgba(29, 185, 84, 0.15); - border-left: 4px solid #1db954; - border-radius: 12px; + background: qlineargradient(x1: 0, y1: 0, x2: 1, y2: 1, + stop: 0 rgba(29, 185, 84, 0.18), + stop: 0.5 rgba(29, 185, 84, 0.12), + stop: 1 rgba(29, 185, 84, 0.08)); + border-left: 3px solid #1ed760; + border-radius: 16px; text-align: left; padding: 0px; + border: 1px solid rgba(29, 185, 84, 0.2); } SidebarButton:hover { - background: rgba(29, 185, 84, 0.25); - transform: scale(1.02); + background: qlineargradient(x1: 0, y1: 0, x2: 1, y2: 1, + stop: 0 rgba(29, 185, 84, 0.25), + stop: 0.5 rgba(29, 185, 84, 0.18), + stop: 1 rgba(29, 185, 84, 0.12)); + transform: translateX(4px); + border: 1px solid rgba(29, 185, 84, 0.3); } """) - self.text_label.setStyleSheet("color: #1db954; font-weight: bold; background: transparent;") + self.text_label.setStyleSheet(""" + color: #1ed760; + font-weight: 600; + background: transparent; + letter-spacing: 0.1px; + """) self.icon_label.setStyleSheet(""" QLabel { - color: #1db954; + color: #1ed760; font-size: 16px; - font-weight: bold; + font-weight: 700; border-radius: 14px; - background: rgba(29, 185, 84, 0.25); + background: qlineargradient(x1: 0, y1: 0, x2: 1, y2: 1, + stop: 0 rgba(29, 185, 84, 0.25), + stop: 1 rgba(30, 215, 96, 0.2)); + border: 1px solid rgba(29, 185, 84, 0.3); } """) else: @@ -204,23 +223,34 @@ class SidebarButton(QPushButton): SidebarButton { background: transparent; border: none; - border-radius: 12px; + border-radius: 16px; text-align: left; padding: 0px; } SidebarButton:hover { - background: rgba(255, 255, 255, 0.08); - border-left: 2px solid rgba(255, 255, 255, 0.3); + background: qlineargradient(x1: 0, y1: 0, x2: 1, y2: 1, + stop: 0 rgba(255, 255, 255, 0.06), + stop: 1 rgba(255, 255, 255, 0.03)); + border-left: 2px solid rgba(255, 255, 255, 0.2); + transform: translateX(2px); + border: 1px solid rgba(255, 255, 255, 0.08); } """) - self.text_label.setStyleSheet("color: #b3b3b3; background: transparent;") + self.text_label.setStyleSheet(""" + color: rgba(255, 255, 255, 0.8); + background: transparent; + letter-spacing: 0.1px; + """) self.icon_label.setStyleSheet(""" QLabel { - color: #b3b3b3; + color: rgba(255, 255, 255, 0.7); font-size: 16px; - font-weight: bold; + font-weight: 600; border-radius: 14px; - background: rgba(255, 255, 255, 0.08); + background: qlineargradient(x1: 0, y1: 0, x2: 1, y2: 1, + stop: 0 rgba(255, 255, 255, 0.08), + stop: 1 rgba(255, 255, 255, 0.04)); + border: 1px solid rgba(255, 255, 255, 0.05); } """) @@ -232,27 +262,28 @@ class StatusIndicator(QWidget): self.setup_ui() def setup_ui(self): - self.setFixedHeight(35) # Ensure enough height + self.setFixedHeight(38) # Slightly taller for better proportions layout = QHBoxLayout(self) - layout.setContentsMargins(15, 8, 15, 8) - layout.setSpacing(12) + layout.setContentsMargins(20, 8, 20, 8) + layout.setSpacing(14) - # Status dot with rounded background + # Status dot with more elegant design self.status_dot = QLabel("●") - self.status_dot.setFixedSize(16, 16) + self.status_dot.setFixedSize(18, 18) self.status_dot.setAlignment(Qt.AlignmentFlag.AlignCenter) self.status_dot.setStyleSheet(""" QLabel { - border-radius: 8px; - font-size: 12px; - font-weight: bold; + border-radius: 9px; + font-size: 10px; + font-weight: 700; + border: 1px solid rgba(255, 255, 255, 0.1); } """) - # Service name + # Service name with better typography self.service_label = QLabel(self.service_name) - self.service_label.setFont(QFont("Arial", 10, QFont.Weight.Medium)) - self.service_label.setMinimumWidth(80) # Ensure text doesn't get cut off + self.service_label.setFont(QFont("SF Pro Text", 10, QFont.Weight.Medium)) + self.service_label.setMinimumWidth(85) layout.addWidget(self.status_dot) layout.addWidget(self.service_label) @@ -265,25 +296,39 @@ class StatusIndicator(QWidget): if connected: self.status_dot.setStyleSheet(""" QLabel { - color: #1db954; - background: rgba(29, 185, 84, 0.15); - border-radius: 8px; - font-size: 12px; - font-weight: bold; + color: #1ed760; + background: qlineargradient(x1: 0, y1: 0, x2: 1, y2: 1, + stop: 0 rgba(29, 185, 84, 0.2), + stop: 1 rgba(30, 215, 96, 0.15)); + border-radius: 9px; + font-size: 10px; + font-weight: 700; + border: 1px solid rgba(29, 185, 84, 0.3); } """) - self.service_label.setStyleSheet("color: #ffffff; font-weight: 500;") + self.service_label.setStyleSheet(""" + color: rgba(255, 255, 255, 0.95); + font-weight: 500; + letter-spacing: 0.1px; + """) else: self.status_dot.setStyleSheet(""" QLabel { - color: #e22134; - background: rgba(226, 33, 52, 0.15); - border-radius: 8px; - font-size: 12px; - font-weight: bold; + color: #ff6b6b; + background: qlineargradient(x1: 0, y1: 0, x2: 1, y2: 1, + stop: 0 rgba(255, 107, 107, 0.15), + stop: 1 rgba(255, 107, 107, 0.1)); + border-radius: 9px; + font-size: 10px; + font-weight: 700; + border: 1px solid rgba(255, 107, 107, 0.2); } """) - self.service_label.setStyleSheet("color: #b3b3b3; font-weight: 400;") + self.service_label.setStyleSheet(""" + color: rgba(255, 255, 255, 0.5); + font-weight: 400; + letter-spacing: 0.1px; + """) class LoadingAnimation(QWidget): """Thin horizontal loading animation for media player with dual-mode capability""" @@ -466,27 +511,29 @@ class MediaPlayer(QWidget): self.setup_ui() def setup_ui(self): - self.setFixedHeight(65) # Start collapsed with more breathing room + self.setFixedHeight(70) # Slightly taller for better proportions self.setStyleSheet(""" MediaPlayer { background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, - stop: 0 #1e1e1e, - stop: 1 #141414); + stop: 0 rgba(255, 255, 255, 0.05), + stop: 0.3 rgba(255, 255, 255, 0.02), + stop: 1 transparent); border: 1px solid rgba(255, 255, 255, 0.08); - border-radius: 12px; - margin: 0 6px; + border-radius: 16px; + margin: 0 8px; } MediaPlayer:hover { - border: 1px solid rgba(255, 255, 255, 0.12); + border: 1px solid rgba(29, 185, 84, 0.15); background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, - stop: 0 #212121, - stop: 1 #171717); + stop: 0 rgba(29, 185, 84, 0.06), + stop: 0.3 rgba(255, 255, 255, 0.03), + stop: 1 transparent); } """) layout = QVBoxLayout(self) - layout.setContentsMargins(16, 10, 16, 10) - layout.setSpacing(10) + layout.setContentsMargins(18, 12, 18, 12) + layout.setSpacing(12) # Loading animation at the top self.loading_animation = LoadingAnimation() @@ -506,12 +553,13 @@ class MediaPlayer(QWidget): self.no_track_label.setAlignment(Qt.AlignmentFlag.AlignCenter) self.no_track_label.setStyleSheet(""" QLabel { - color: #6a6a6a; + color: rgba(255, 255, 255, 0.4); font-size: 11px; - font-weight: 400; - padding: 12px; + font-weight: 500; + padding: 14px; background: transparent; - letter-spacing: 0.5px; + letter-spacing: 0.3px; + font-family: 'SF Pro Text', -apple-system, sans-serif; } """) layout.addWidget(self.no_track_label) @@ -526,16 +574,17 @@ class MediaPlayer(QWidget): self.track_info = ScrollingLabel("No track") self.track_info.setStyleSheet(""" ScrollingLabel { - color: #ffffff; + color: rgba(255, 255, 255, 0.95); font-size: 13px; font-weight: 600; background: transparent; - font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; - letter-spacing: 0.2px; - padding: 2px 0px; + font-family: 'SF Pro Display', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; + letter-spacing: 0.1px; + padding: 3px 0px; } ScrollingLabel:hover { color: #1ed760; + font-weight: 700; } """) self.track_info.setCursor(Qt.CursorShape.PointingHandCursor) @@ -834,11 +883,16 @@ class ModernSidebar(QWidget): self.setup_ui() def setup_ui(self): - self.setFixedWidth(220) + self.setFixedWidth(240) # Slightly wider for better proportions self.setStyleSheet(""" ModernSidebar { - background: #121212; - border-right: 1px solid #282828; + background: qlineargradient(x1: 0, y1: 0, x2: 1, y2: 1, + stop: 0 #0d1117, + stop: 0.3 #121212, + stop: 1 #0a0a0a); + border-right: 1px solid rgba(29, 185, 84, 0.1); + border-top-right-radius: 12px; + border-bottom-right-radius: 12px; } """) @@ -870,29 +924,43 @@ class ModernSidebar(QWidget): def create_header(self): header = QWidget() - header.setFixedHeight(85) + header.setFixedHeight(95) header.setStyleSheet(""" QWidget { - background: #121212; - border-bottom: 1px solid #282828; - border-bottom-left-radius: 8px; - border-bottom-right-radius: 8px; + background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, + stop: 0 rgba(29, 185, 84, 0.08), + stop: 0.4 rgba(29, 185, 84, 0.03), + stop: 1 transparent); + border-bottom: 1px solid rgba(29, 185, 84, 0.15); + border-top-right-radius: 12px; } """) layout = QVBoxLayout(header) - layout.setContentsMargins(20, 22, 20, 22) - layout.setSpacing(3) + layout.setContentsMargins(24, 24, 24, 20) + layout.setSpacing(4) - # App name + # App name with gradient text effect app_name = QLabel("SoulSync") - app_name.setFont(QFont("Arial", 19, QFont.Weight.Bold)) - app_name.setStyleSheet("color: #ffffff; letter-spacing: -0.5px;") + app_name.setFont(QFont("SF Pro Display", 20, QFont.Weight.Bold)) + app_name.setStyleSheet(""" + color: qlineargradient(x1: 0, y1: 0, x2: 1, y2: 0, + stop: 0 #ffffff, + stop: 0.6 #1ed760, + stop: 1 #1db954); + letter-spacing: -0.8px; + font-weight: 700; + """) - # Subtitle + # Subtitle with better typography subtitle = QLabel("Music Sync & Manager") - subtitle.setFont(QFont("Arial", 10)) - subtitle.setStyleSheet("color: #b3b3b3; opacity: 0.8;") + subtitle.setFont(QFont("SF Pro Text", 10, QFont.Weight.Medium)) + subtitle.setStyleSheet(""" + color: rgba(255, 255, 255, 0.65); + letter-spacing: 0.2px; + font-weight: 500; + margin-top: 2px; + """) layout.addWidget(app_name) layout.addWidget(subtitle) @@ -903,13 +971,13 @@ class ModernSidebar(QWidget): nav_widget = QWidget() nav_widget.setStyleSheet(""" QWidget { - background: #121212; - border-radius: 8px; + background: transparent; + border-radius: 12px; } """) layout = QVBoxLayout(nav_widget) - layout.setContentsMargins(8, 20, 8, 20) - layout.setSpacing(6) + layout.setContentsMargins(12, 25, 12, 25) + layout.setSpacing(8) # Navigation buttons nav_items = [ @@ -933,24 +1001,32 @@ class ModernSidebar(QWidget): def create_status_section(self): status_widget = QWidget() - status_widget.setFixedHeight(140) # Increased height + status_widget.setFixedHeight(150) # Slightly taller for better proportions status_widget.setStyleSheet(""" QWidget { - background: #181818; - border-top: 1px solid #282828; - border-top-left-radius: 8px; - border-top-right-radius: 8px; + background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, + stop: 0 transparent, + stop: 0.3 rgba(255, 255, 255, 0.02), + stop: 1 rgba(255, 255, 255, 0.04)); + border-top: 1px solid rgba(255, 255, 255, 0.08); + border-bottom-right-radius: 12px; } """) layout = QVBoxLayout(status_widget) - layout.setContentsMargins(0, 18, 0, 18) # Better margins - layout.setSpacing(6) # Tighter spacing between items + layout.setContentsMargins(0, 20, 0, 20) + layout.setSpacing(8) - # Status title - status_title = QLabel("Connection Status") - status_title.setFont(QFont("Arial", 11, QFont.Weight.Bold)) - status_title.setStyleSheet("color: #ffffff; padding: 0 15px; margin-bottom: 5px;") + # Status title with better typography + status_title = QLabel("Service Status") + status_title.setFont(QFont("SF Pro Text", 11, QFont.Weight.Bold)) + status_title.setStyleSheet(""" + color: rgba(255, 255, 255, 0.9); + padding: 0 20px; + margin-bottom: 8px; + letter-spacing: 0.2px; + font-weight: 600; + """) layout.addWidget(status_title) # Status indicators