From d4d19015c915114b8260ea7609b73042528791f4 Mon Sep 17 00:00:00 2001 From: Broque Thomas Date: Sun, 27 Jul 2025 21:07:30 -0700 Subject: [PATCH] check is valid --- logs/app.log | 233 +++++++++++++++++++ ui/pages/__pycache__/artists.cpython-312.pyc | Bin 196168 -> 197355 bytes ui/pages/artists.py | 48 +++- 3 files changed, 276 insertions(+), 5 deletions(-) diff --git a/logs/app.log b/logs/app.log index d772c4f8..b28c161a 100644 --- a/logs/app.log +++ b/logs/app.log @@ -176287,3 +176287,236 @@ 2025-07-27 20:44:34 - newmusic.plex_client - DEBUG - search_albums:526 - Found 1 albums matching query: album='Graduation', artist='kanye west' 2025-07-27 20:44:34 - newmusic.plex_client - DEBUG - search_albums:526 - Found 1 albums matching query: album='Late Registration', artist='kanye west' 2025-07-27 20:44:34 - newmusic.plex_client - DEBUG - search_albums:526 - Found 1 albums matching query: album='The College Dropout', artist='kanye west' +2025-07-27 20:45:56 - newmusic.soulseek_client - DEBUG - get_all_searches:952 - Getting all searches with endpoint: searches +2025-07-27 20:45:56 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches +2025-07-27 20:45:56 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-27 20:45:56 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-27 20:45:56 - 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-27 20:45:56 - newmusic.soulseek_client - INFO - get_all_searches:957 - Retrieved 50 searches from slskd +2025-07-27 20:45:56 - newmusic.soulseek_client - DEBUG - maintain_search_history:1058 - Search count (50) within limit (200), no maintenance needed +2025-07-27 20:47:53 - newmusic.main - INFO - closeEvent:246 - Closing application... +2025-07-27 20:47:53 - newmusic.main - INFO - closeEvent:251 - Cleaning up Downloads page threads... +2025-07-27 20:47:53 - newmusic.main - INFO - closeEvent:256 - Stopping status monitoring thread... +2025-07-27 20:47:54 - newmusic.main - INFO - closeEvent:261 - Stopping search maintenance timer... +2025-07-27 20:47:54 - newmusic.main - INFO - closeEvent:266 - Closing Soulseek client... +2025-07-27 20:47:54 - newmusic.main - INFO - closeEvent:272 - Application closed successfully +2025-07-27 20:47:57 - newmusic - INFO - setup_logging:57 - Logging initialized with level: DEBUG +2025-07-27 20:47:57 - newmusic.main - INFO - main:286 - Starting NewMusic application +2025-07-27 20:47:57 - newmusic.spotify_client - INFO - _setup_client:179 - Spotify client initialized (user info will be fetched when needed) +2025-07-27 20:47:57 - newmusic.soulseek_client - INFO - _setup_client:220 - Soulseek client configured with slskd at http://localhost:5030 +2025-07-27 20:47:57 - newmusic.spotify_client - INFO - _setup_client:179 - Spotify client initialized (user info will be fetched when needed) +2025-07-27 20:47:57 - newmusic.spotify_client - INFO - _setup_client:179 - Spotify client initialized (user info will be fetched when needed) +2025-07-27 20:47:57 - newmusic.soulseek_client - INFO - _setup_client:220 - Soulseek client configured with slskd at http://localhost:5030 +2025-07-27 20:47:57 - newmusic.main - INFO - change_page:233 - Changed to page: dashboard +2025-07-27 20:47:57 - newmusic.main - INFO - setup_media_player_connections:205 - Media player connections established between sidebar and downloads page +2025-07-27 20:47:57 - newmusic.main - INFO - setup_settings_connections:210 - Settings change connections established +2025-07-27 20:47:57 - newmusic.main - INFO - setup_search_maintenance:86 - Search maintenance timer started (every 2 minutes, keeps 200 most recent searches) +2025-07-27 20:47:58 - newmusic.plex_client - INFO - _find_music_library:127 - Found music library: Music +2025-07-27 20:47:58 - newmusic.plex_client - INFO - _setup_client:113 - Successfully connected to Plex server: PLEX-MACHINE +2025-07-27 20:47:58 - newmusic.main - INFO - change_page:233 - Changed to page: downloads +2025-07-27 20:47:59 - newmusic.main - INFO - change_page:233 - Changed to page: sync +2025-07-27 20:47:59 - newmusic.spotify_client - INFO - _ensure_user_id:195 - Successfully authenticated with Spotify as broquethomas +2025-07-27 20:48:00 - newmusic.spotify_client - INFO - get_user_playlists_metadata_only:256 - Retrieved 8 playlist metadata (first batch) +2025-07-27 20:48:01 - newmusic.main - INFO - change_page:233 - Changed to page: artists +2025-07-27 20:48:05 - newmusic.spotify_client - INFO - get_artist_albums:452 - Retrieved 17 albums for artist 5K4W6rqBFWDnAN6FQUkS6x +2025-07-27 20:48:05 - newmusic.plex_client - INFO - _find_music_library:127 - Found music library: Music +2025-07-27 20:48:05 - newmusic.plex_client - INFO - _setup_client:113 - Successfully connected to Plex server: PLEX-MACHINE +2025-07-27 20:48:05 - newmusic.plex_client - DEBUG - search_albums:526 - Found 0 albums matching query: album='DONDA 2', artist='donda' +2025-07-27 20:48:05 - newmusic.plex_client - DEBUG - search_albums:526 - Found 0 albums matching query: album='DONDA 2', artist='' +2025-07-27 20:48:06 - newmusic.plex_client - DEBUG - search_albums:526 - Found 0 albums matching query: album='DONDA 2', artist='kanye west' +2025-07-27 20:48:06 - newmusic.plex_client - DEBUG - search_albums:526 - Found 0 albums matching query: album='DONDA 2', artist='' +2025-07-27 20:48:06 - newmusic.plex_client - DEBUG - search_albums:526 - Found 0 albums matching query: album='VULTURES 2', artist='y$' +2025-07-27 20:48:06 - newmusic.plex_client - DEBUG - search_albums:526 - Found 0 albums matching query: album='VULTURES 2', artist='' +2025-07-27 20:48:06 - newmusic.plex_client - DEBUG - search_albums:526 - Found 0 albums matching query: album='VULTURES 2', artist='kanye west' +2025-07-27 20:48:06 - newmusic.plex_client - DEBUG - search_albums:526 - Found 0 albums matching query: album='VULTURES 2', artist='' +2025-07-27 20:48:06 - newmusic.plex_client - DEBUG - search_albums:526 - Found 0 albums matching query: album='VULTURES 1', artist='y$' +2025-07-27 20:48:06 - newmusic.plex_client - DEBUG - search_albums:526 - Found 0 albums matching query: album='VULTURES 1', artist='' +2025-07-27 20:48:06 - newmusic.plex_client - DEBUG - search_albums:526 - Found 0 albums matching query: album='VULTURES 1', artist='kanye west' +2025-07-27 20:48:06 - newmusic.plex_client - DEBUG - search_albums:526 - Found 0 albums matching query: album='VULTURES 1', artist='' +2025-07-27 20:48:06 - newmusic.plex_client - DEBUG - search_albums:526 - Found 1 albums matching query: album='Donda (Deluxe)', artist='kanye west' +2025-07-27 20:48:06 - newmusic.plex_client - DEBUG - search_albums:526 - Found 0 albums matching query: album='donda deluxe', artist='kanye west' +2025-07-27 20:48:06 - newmusic.plex_client - DEBUG - search_albums:526 - Found 0 albums matching query: album='donda deluxe', artist='' +2025-07-27 20:48:06 - newmusic.plex_client - DEBUG - search_albums:526 - Found 1 albums matching query: album='Donda', artist='kanye west' +2025-07-27 20:48:06 - newmusic.plex_client - DEBUG - search_albums:526 - Found 1 albums matching query: album='JESUS IS KING', artist='kanye west' +2025-07-27 20:48:06 - newmusic.plex_client - DEBUG - search_albums:526 - Found 0 albums matching query: album='KIDS SEE GHOSTS', artist='kids see ghosts' +2025-07-27 20:48:06 - newmusic.plex_client - DEBUG - search_albums:526 - Found 0 albums matching query: album='KIDS SEE GHOSTS', artist='' +2025-07-27 20:48:06 - newmusic.plex_client - DEBUG - search_albums:526 - Found 0 albums matching query: album='KIDS SEE GHOSTS', artist='kanye west' +2025-07-27 20:48:06 - newmusic.plex_client - DEBUG - search_albums:526 - Found 0 albums matching query: album='KIDS SEE GHOSTS', artist='' +2025-07-27 20:48:06 - newmusic.plex_client - DEBUG - search_albums:526 - Found 2 albums matching query: album='ye', artist='kanye west' +2025-07-27 20:48:06 - newmusic.plex_client - DEBUG - search_albums:526 - Found 1 albums matching query: album='The Life Of Pablo', artist='kanye west' +2025-07-27 20:48:06 - newmusic.plex_client - DEBUG - search_albums:526 - Found 1 albums matching query: album='Yeezus', artist='kanye west' +2025-07-27 20:48:06 - newmusic.plex_client - DEBUG - search_albums:526 - Found 1 albums matching query: album='Watch The Throne (Deluxe)', artist='jay-z' +2025-07-27 20:48:07 - newmusic.plex_client - DEBUG - search_albums:526 - Found 0 albums matching query: album='watch the throne deluxe', artist='jay-z' +2025-07-27 20:48:07 - newmusic.plex_client - DEBUG - search_albums:526 - Found 0 albums matching query: album='watch the throne deluxe', artist='' +2025-07-27 20:48:07 - newmusic.plex_client - DEBUG - search_albums:526 - Found 0 albums matching query: album='Watch The Throne (Deluxe)', artist='kanye west' +2025-07-27 20:48:07 - newmusic.plex_client - DEBUG - search_albums:526 - Found 0 albums matching query: album='Watch The Throne (Deluxe)', artist='' +2025-07-27 20:48:07 - newmusic.plex_client - DEBUG - search_albums:526 - Found 0 albums matching query: album='watch the throne deluxe', artist='kanye west' +2025-07-27 20:48:07 - newmusic.plex_client - DEBUG - search_albums:526 - Found 0 albums matching query: album='watch the throne deluxe', artist='' +2025-07-27 20:48:07 - newmusic.plex_client - DEBUG - search_albums:526 - Found 1 albums matching query: album='Watch The Throne', artist='jay-z' +2025-07-27 20:48:07 - newmusic.plex_client - DEBUG - search_albums:526 - Found 0 albums matching query: album='Watch The Throne', artist='kanye west' +2025-07-27 20:48:07 - newmusic.plex_client - DEBUG - search_albums:526 - Found 0 albums matching query: album='Watch The Throne', artist='' +2025-07-27 20:48:07 - newmusic.plex_client - DEBUG - search_albums:526 - Found 1 albums matching query: album='My Beautiful Dark Twisted Fantasy', artist='kanye west' +2025-07-27 20:48:07 - newmusic.plex_client - DEBUG - search_albums:526 - Found 1 albums matching query: album='808s & Heartbreak', artist='kanye west' +2025-07-27 20:48:07 - newmusic.plex_client - DEBUG - search_albums:526 - Found 0 albums matching query: album='808s heartbreak', artist='kanye west' +2025-07-27 20:48:07 - newmusic.plex_client - DEBUG - search_albums:526 - Found 0 albums matching query: album='808s heartbreak', artist='' +2025-07-27 20:48:07 - newmusic.plex_client - DEBUG - search_albums:526 - Found 1 albums matching query: album='Graduation', artist='kanye west' +2025-07-27 20:48:07 - newmusic.plex_client - DEBUG - search_albums:526 - Found 1 albums matching query: album='Late Registration', artist='kanye west' +2025-07-27 20:48:07 - newmusic.plex_client - DEBUG - search_albums:526 - Found 1 albums matching query: album='The College Dropout', artist='kanye west' +2025-07-27 20:49:19 - newmusic.plex_client - DEBUG - search_tracks:332 - Stage 1: Searching for artist 'DONDA' +2025-07-27 20:49:19 - newmusic.plex_client - DEBUG - search_tracks:357 - Stage 2: Performing keyword search for 'DONDA TRUE LOVE' +2025-07-27 20:49:20 - newmusic.plex_client - DEBUG - search_tracks:375 - Stage 3: Performing title-only search for 'TRUE LOVE' +2025-07-27 20:49:21 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'True Love' (ratingKey: 282255) +2025-07-27 20:49:21 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'True Love, What's That?' (ratingKey: 269176) +2025-07-27 20:49:21 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'True Love Ways' (ratingKey: 396718) +2025-07-27 20:49:21 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'True Love' (ratingKey: 248364) +2025-07-27 20:49:21 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'True Love' (ratingKey: 464256) +2025-07-27 20:49:21 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'True love (feat. 070 Shake)' (ratingKey: 410335) +2025-07-27 20:49:21 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'True Love' (ratingKey: 209684) +2025-07-27 20:49:21 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'True Love (Live at the Enmore Theatre, Sydney)' (ratingKey: 209694) +2025-07-27 20:49:21 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'True Love' (ratingKey: 209511) +2025-07-27 20:49:21 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'True Love (Davide Rossi Remix)' (ratingKey: 209447) +2025-07-27 20:49:21 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'True Love' (ratingKey: 306808) +2025-07-27 20:49:21 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'True Love (Original Mix)' (ratingKey: 251090) +2025-07-27 20:49:21 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'True Love (Vadim Soloviev Remix)' (ratingKey: 251091) +2025-07-27 20:49:21 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'True Love (Sami Saari Remix)' (ratingKey: 251092) +2025-07-27 20:49:21 - newmusic.plex_client - DEBUG - search_tracks:385 - Stored original track reference for 'True Love Travels On a Gravel Road' (ratingKey: 239956) +2025-07-27 20:49:21 - newmusic.plex_client - INFO - search_tracks:390 - Found 15 total potential matches for 'TRUE LOVE' by 'DONDA' after all stages. +2025-07-27 20:49:36 - newmusic.main - INFO - closeEvent:246 - Closing application... +2025-07-27 20:49:36 - newmusic.main - INFO - closeEvent:251 - Cleaning up Downloads page threads... +2025-07-27 20:49:36 - newmusic.main - INFO - closeEvent:256 - Stopping status monitoring thread... +2025-07-27 20:49:37 - newmusic.main - INFO - closeEvent:261 - Stopping search maintenance timer... +2025-07-27 20:49:37 - newmusic.main - INFO - closeEvent:266 - Closing Soulseek client... +2025-07-27 20:49:37 - newmusic.main - INFO - closeEvent:272 - Application closed successfully +2025-07-27 20:51:00 - newmusic - INFO - setup_logging:57 - Logging initialized with level: DEBUG +2025-07-27 20:51:00 - newmusic.main - INFO - main:286 - Starting NewMusic application +2025-07-27 20:51:00 - newmusic.spotify_client - INFO - _setup_client:179 - Spotify client initialized (user info will be fetched when needed) +2025-07-27 20:51:00 - newmusic.soulseek_client - INFO - _setup_client:220 - Soulseek client configured with slskd at http://localhost:5030 +2025-07-27 20:51:00 - newmusic.spotify_client - INFO - _setup_client:179 - Spotify client initialized (user info will be fetched when needed) +2025-07-27 20:51:01 - newmusic.spotify_client - INFO - _setup_client:179 - Spotify client initialized (user info will be fetched when needed) +2025-07-27 20:51:01 - newmusic.soulseek_client - INFO - _setup_client:220 - Soulseek client configured with slskd at http://localhost:5030 +2025-07-27 20:51:01 - newmusic.main - INFO - change_page:233 - Changed to page: dashboard +2025-07-27 20:51:01 - newmusic.main - INFO - setup_media_player_connections:205 - Media player connections established between sidebar and downloads page +2025-07-27 20:51:01 - newmusic.main - INFO - setup_settings_connections:210 - Settings change connections established +2025-07-27 20:51:01 - newmusic.main - INFO - setup_search_maintenance:86 - Search maintenance timer started (every 2 minutes, keeps 200 most recent searches) +2025-07-27 20:51:01 - newmusic.plex_client - INFO - _find_music_library:127 - Found music library: Music +2025-07-27 20:51:01 - newmusic.plex_client - INFO - _setup_client:113 - Successfully connected to Plex server: PLEX-MACHINE +2025-07-27 20:51:04 - newmusic.main - INFO - change_page:233 - Changed to page: settings +2025-07-27 20:51:07 - newmusic.main - INFO - change_page:233 - Changed to page: artists +2025-07-27 20:52:14 - newmusic.main - INFO - change_page:233 - Changed to page: downloads +2025-07-27 20:52:24 - newmusic.main - INFO - change_page:233 - Changed to page: sync +2025-07-27 20:52:25 - newmusic.spotify_client - INFO - _ensure_user_id:195 - Successfully authenticated with Spotify as broquethomas +2025-07-27 20:52:25 - newmusic.spotify_client - INFO - get_user_playlists_metadata_only:256 - Retrieved 8 playlist metadata (first batch) +2025-07-27 20:52:27 - newmusic.main - INFO - change_page:233 - Changed to page: downloads +2025-07-27 20:53:01 - newmusic.soulseek_client - DEBUG - get_all_searches:952 - Getting all searches with endpoint: searches +2025-07-27 20:53:01 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches +2025-07-27 20:53:01 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-27 20:53:01 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-27 20:53:01 - 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-27 20:53:01 - newmusic.soulseek_client - INFO - get_all_searches:957 - Retrieved 50 searches from slskd +2025-07-27 20:53:01 - newmusic.soulseek_client - DEBUG - maintain_search_history:1058 - Search count (50) within limit (200), no maintenance needed +2025-07-27 20:55:01 - newmusic.soulseek_client - DEBUG - get_all_searches:952 - Getting all searches with endpoint: searches +2025-07-27 20:55:01 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches +2025-07-27 20:55:01 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-27 20:55:01 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-27 20:55:01 - 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-27 20:55:01 - newmusic.soulseek_client - INFO - get_all_searches:957 - Retrieved 50 searches from slskd +2025-07-27 20:55:01 - newmusic.soulseek_client - DEBUG - maintain_search_history:1058 - Search count (50) within limit (200), no maintenance needed +2025-07-27 20:57:01 - newmusic.soulseek_client - DEBUG - get_all_searches:952 - Getting all searches with endpoint: searches +2025-07-27 20:57:01 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches +2025-07-27 20:57:01 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-27 20:57:01 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-27 20:57:01 - 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-27 20:57:01 - newmusic.soulseek_client - INFO - get_all_searches:957 - Retrieved 50 searches from slskd +2025-07-27 20:57:01 - newmusic.soulseek_client - DEBUG - maintain_search_history:1058 - Search count (50) within limit (200), no maintenance needed +2025-07-27 20:59:01 - newmusic.soulseek_client - DEBUG - get_all_searches:952 - Getting all searches with endpoint: searches +2025-07-27 20:59:01 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches +2025-07-27 20:59:01 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-27 20:59:01 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-27 20:59:01 - 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-27 20:59:01 - newmusic.soulseek_client - INFO - get_all_searches:957 - Retrieved 50 searches from slskd +2025-07-27 20:59:01 - newmusic.soulseek_client - DEBUG - maintain_search_history:1058 - Search count (50) within limit (200), no maintenance needed +2025-07-27 21:01:01 - newmusic.soulseek_client - DEBUG - get_all_searches:952 - Getting all searches with endpoint: searches +2025-07-27 21:01:01 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches +2025-07-27 21:01:01 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-27 21:01:01 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-27 21:01:01 - 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-27 21:01:01 - newmusic.soulseek_client - INFO - get_all_searches:957 - Retrieved 50 searches from slskd +2025-07-27 21:01:01 - newmusic.soulseek_client - DEBUG - maintain_search_history:1058 - Search count (50) within limit (200), no maintenance needed +2025-07-27 21:03:01 - newmusic.soulseek_client - DEBUG - get_all_searches:952 - Getting all searches with endpoint: searches +2025-07-27 21:03:01 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches +2025-07-27 21:03:01 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-27 21:03:01 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-27 21:03:01 - 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-27 21:03:01 - newmusic.soulseek_client - INFO - get_all_searches:957 - Retrieved 50 searches from slskd +2025-07-27 21:03:01 - newmusic.soulseek_client - DEBUG - maintain_search_history:1058 - Search count (50) within limit (200), no maintenance needed +2025-07-27 21:05:01 - newmusic.soulseek_client - DEBUG - get_all_searches:952 - Getting all searches with endpoint: searches +2025-07-27 21:05:01 - newmusic.soulseek_client - DEBUG - _make_request:242 - Making GET request to: http://localhost:5030/api/v0/searches +2025-07-27 21:05:01 - newmusic.soulseek_client - DEBUG - _make_request:243 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'} +2025-07-27 21:05:01 - newmusic.soulseek_client - DEBUG - _make_request:254 - Response status: 200 +2025-07-27 21:05:01 - 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-27 21:05:01 - newmusic.soulseek_client - INFO - get_all_searches:957 - Retrieved 50 searches from slskd +2025-07-27 21:05:01 - newmusic.soulseek_client - DEBUG - maintain_search_history:1058 - Search count (50) within limit (200), no maintenance needed +2025-07-27 21:06:00 - newmusic.main - INFO - closeEvent:246 - Closing application... +2025-07-27 21:06:00 - newmusic.main - INFO - closeEvent:251 - Cleaning up Downloads page threads... +2025-07-27 21:06:00 - newmusic.main - INFO - closeEvent:256 - Stopping status monitoring thread... +2025-07-27 21:06:00 - newmusic.main - INFO - closeEvent:261 - Stopping search maintenance timer... +2025-07-27 21:06:00 - newmusic.main - INFO - closeEvent:266 - Closing Soulseek client... +2025-07-27 21:06:00 - newmusic.main - INFO - closeEvent:272 - Application closed successfully +2025-07-27 21:06:04 - newmusic - INFO - setup_logging:57 - Logging initialized with level: DEBUG +2025-07-27 21:06:04 - newmusic.main - INFO - main:286 - Starting NewMusic application +2025-07-27 21:06:04 - newmusic.spotify_client - INFO - _setup_client:179 - Spotify client initialized (user info will be fetched when needed) +2025-07-27 21:06:04 - newmusic.soulseek_client - INFO - _setup_client:220 - Soulseek client configured with slskd at http://localhost:5030 +2025-07-27 21:06:04 - newmusic.spotify_client - INFO - _setup_client:179 - Spotify client initialized (user info will be fetched when needed) +2025-07-27 21:06:05 - newmusic.spotify_client - INFO - _setup_client:179 - Spotify client initialized (user info will be fetched when needed) +2025-07-27 21:06:05 - newmusic.soulseek_client - INFO - _setup_client:220 - Soulseek client configured with slskd at http://localhost:5030 +2025-07-27 21:06:05 - newmusic.main - INFO - change_page:233 - Changed to page: dashboard +2025-07-27 21:06:05 - newmusic.main - INFO - setup_media_player_connections:205 - Media player connections established between sidebar and downloads page +2025-07-27 21:06:05 - newmusic.main - INFO - setup_settings_connections:210 - Settings change connections established +2025-07-27 21:06:05 - newmusic.main - INFO - setup_search_maintenance:86 - Search maintenance timer started (every 2 minutes, keeps 200 most recent searches) +2025-07-27 21:06:05 - newmusic.plex_client - INFO - _find_music_library:127 - Found music library: Music +2025-07-27 21:06:05 - newmusic.plex_client - INFO - _setup_client:113 - Successfully connected to Plex server: PLEX-MACHINE +2025-07-27 21:06:06 - newmusic.main - INFO - change_page:233 - Changed to page: artists +2025-07-27 21:06:10 - newmusic.spotify_client - INFO - get_artist_albums:452 - Retrieved 17 albums for artist 5K4W6rqBFWDnAN6FQUkS6x +2025-07-27 21:06:10 - newmusic.plex_client - INFO - _find_music_library:127 - Found music library: Music +2025-07-27 21:06:10 - newmusic.plex_client - INFO - _setup_client:113 - Successfully connected to Plex server: PLEX-MACHINE +2025-07-27 21:06:10 - newmusic.plex_client - DEBUG - search_albums:526 - Found 0 albums matching query: album='DONDA 2', artist='donda' +2025-07-27 21:06:10 - newmusic.plex_client - DEBUG - search_albums:526 - Found 0 albums matching query: album='DONDA 2', artist='' +2025-07-27 21:06:10 - newmusic.plex_client - DEBUG - search_albums:526 - Found 0 albums matching query: album='DONDA 2', artist='kanye west' +2025-07-27 21:06:10 - newmusic.plex_client - DEBUG - search_albums:526 - Found 0 albums matching query: album='DONDA 2', artist='' +2025-07-27 21:06:10 - newmusic.plex_client - DEBUG - search_albums:526 - Found 0 albums matching query: album='VULTURES 2', artist='y$' +2025-07-27 21:06:10 - newmusic.plex_client - DEBUG - search_albums:526 - Found 0 albums matching query: album='VULTURES 2', artist='' +2025-07-27 21:06:10 - newmusic.plex_client - DEBUG - search_albums:526 - Found 0 albums matching query: album='VULTURES 2', artist='kanye west' +2025-07-27 21:06:10 - newmusic.plex_client - DEBUG - search_albums:526 - Found 0 albums matching query: album='VULTURES 2', artist='' +2025-07-27 21:06:10 - newmusic.plex_client - DEBUG - search_albums:526 - Found 0 albums matching query: album='VULTURES 1', artist='y$' +2025-07-27 21:06:10 - newmusic.plex_client - DEBUG - search_albums:526 - Found 0 albums matching query: album='VULTURES 1', artist='' +2025-07-27 21:06:10 - newmusic.plex_client - DEBUG - search_albums:526 - Found 0 albums matching query: album='VULTURES 1', artist='kanye west' +2025-07-27 21:06:10 - newmusic.plex_client - DEBUG - search_albums:526 - Found 0 albums matching query: album='VULTURES 1', artist='' +2025-07-27 21:06:10 - newmusic.plex_client - DEBUG - search_albums:526 - Found 1 albums matching query: album='Donda (Deluxe)', artist='kanye west' +2025-07-27 21:06:10 - newmusic.plex_client - DEBUG - search_albums:526 - Found 0 albums matching query: album='donda deluxe', artist='kanye west' +2025-07-27 21:06:10 - newmusic.plex_client - DEBUG - search_albums:526 - Found 0 albums matching query: album='donda deluxe', artist='' +2025-07-27 21:06:10 - newmusic.plex_client - DEBUG - search_albums:526 - Found 1 albums matching query: album='Donda', artist='kanye west' +2025-07-27 21:06:11 - newmusic.plex_client - DEBUG - search_albums:526 - Found 1 albums matching query: album='JESUS IS KING', artist='kanye west' +2025-07-27 21:06:11 - newmusic.plex_client - DEBUG - search_albums:526 - Found 0 albums matching query: album='KIDS SEE GHOSTS', artist='kids see ghosts' +2025-07-27 21:06:11 - newmusic.plex_client - DEBUG - search_albums:526 - Found 0 albums matching query: album='KIDS SEE GHOSTS', artist='' +2025-07-27 21:06:11 - newmusic.plex_client - DEBUG - search_albums:526 - Found 0 albums matching query: album='KIDS SEE GHOSTS', artist='kanye west' +2025-07-27 21:06:11 - newmusic.plex_client - DEBUG - search_albums:526 - Found 0 albums matching query: album='KIDS SEE GHOSTS', artist='' +2025-07-27 21:06:11 - newmusic.plex_client - DEBUG - search_albums:526 - Found 2 albums matching query: album='ye', artist='kanye west' +2025-07-27 21:06:11 - newmusic.plex_client - DEBUG - search_albums:526 - Found 1 albums matching query: album='The Life Of Pablo', artist='kanye west' +2025-07-27 21:06:11 - newmusic.plex_client - DEBUG - search_albums:526 - Found 1 albums matching query: album='Yeezus', artist='kanye west' +2025-07-27 21:06:11 - newmusic.plex_client - DEBUG - search_albums:526 - Found 1 albums matching query: album='Watch The Throne (Deluxe)', artist='jay-z' +2025-07-27 21:06:11 - newmusic.plex_client - DEBUG - search_albums:526 - Found 0 albums matching query: album='watch the throne deluxe', artist='jay-z' +2025-07-27 21:06:11 - newmusic.plex_client - DEBUG - search_albums:526 - Found 0 albums matching query: album='watch the throne deluxe', artist='' +2025-07-27 21:06:11 - newmusic.plex_client - DEBUG - search_albums:526 - Found 0 albums matching query: album='Watch The Throne (Deluxe)', artist='kanye west' +2025-07-27 21:06:11 - newmusic.plex_client - DEBUG - search_albums:526 - Found 0 albums matching query: album='Watch The Throne (Deluxe)', artist='' +2025-07-27 21:06:11 - newmusic.plex_client - DEBUG - search_albums:526 - Found 0 albums matching query: album='watch the throne deluxe', artist='kanye west' +2025-07-27 21:06:11 - newmusic.plex_client - DEBUG - search_albums:526 - Found 0 albums matching query: album='watch the throne deluxe', artist='' +2025-07-27 21:06:11 - newmusic.plex_client - DEBUG - search_albums:526 - Found 1 albums matching query: album='Watch The Throne', artist='jay-z' +2025-07-27 21:06:11 - newmusic.plex_client - DEBUG - search_albums:526 - Found 0 albums matching query: album='Watch The Throne', artist='kanye west' +2025-07-27 21:06:11 - newmusic.plex_client - DEBUG - search_albums:526 - Found 0 albums matching query: album='Watch The Throne', artist='' +2025-07-27 21:06:11 - newmusic.plex_client - DEBUG - search_albums:526 - Found 1 albums matching query: album='My Beautiful Dark Twisted Fantasy', artist='kanye west' +2025-07-27 21:06:11 - newmusic.plex_client - DEBUG - search_albums:526 - Found 1 albums matching query: album='808s & Heartbreak', artist='kanye west' +2025-07-27 21:06:11 - newmusic.plex_client - DEBUG - search_albums:526 - Found 0 albums matching query: album='808s heartbreak', artist='kanye west' +2025-07-27 21:06:11 - newmusic.plex_client - DEBUG - search_albums:526 - Found 0 albums matching query: album='808s heartbreak', artist='' +2025-07-27 21:06:11 - newmusic.plex_client - DEBUG - search_albums:526 - Found 1 albums matching query: album='Graduation', artist='kanye west' +2025-07-27 21:06:11 - newmusic.plex_client - DEBUG - search_albums:526 - Found 1 albums matching query: album='Late Registration', artist='kanye west' +2025-07-27 21:06:11 - newmusic.plex_client - DEBUG - search_albums:526 - Found 1 albums matching query: album='The College Dropout', artist='kanye west' diff --git a/ui/pages/__pycache__/artists.cpython-312.pyc b/ui/pages/__pycache__/artists.cpython-312.pyc index 6cf49a95ea26db23e48fb770fa041fcb7a194b03..1305abdd24d0c1388bbb35c701ed5f3e9eb0d9e1 100644 GIT binary patch delta 6978 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 delta 5881 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 diff --git a/ui/pages/artists.py b/ui/pages/artists.py index fad746e0..57c3bdea 100644 --- a/ui/pages/artists.py +++ b/ui/pages/artists.py @@ -1603,12 +1603,28 @@ class DownloadMissingAlbumTracksModal(QDialog): def populate_track_table(self): """Populate track table with album tracks""" - self.track_table.setRowCount(len(self.album.tracks)) - for i, track in enumerate(self.album.tracks): - self.track_table.setItem(i, 0, QTableWidgetItem(track.name)) - artist_name = track.artists[0] if track.artists else "Unknown" + # Filter out invalid tracks before populating table + valid_tracks = [] + for track in self.album.tracks: + if self.is_valid_track(track): + valid_tracks.append(track) + else: + print(f"⚠️ Skipping invalid track: name='{getattr(track, 'name', 'None')}', artists={getattr(track, 'artists', 'None')}, duration={getattr(track, 'duration_ms', 'None')}") + + # Update album tracks to only include valid ones + self.album.tracks = valid_tracks + self.total_tracks = len(valid_tracks) + + self.track_table.setRowCount(len(valid_tracks)) + for i, track in enumerate(valid_tracks): + # Use defensive get methods for track data + track_name = getattr(track, 'name', '') or 'Unknown Track' + artist_name = track.artists[0] if track.artists else "Unknown Artist" + duration_ms = getattr(track, 'duration_ms', 0) or 0 + + self.track_table.setItem(i, 0, QTableWidgetItem(track_name)) self.track_table.setItem(i, 1, QTableWidgetItem(artist_name)) - duration = self.format_duration(track.duration_ms) + duration = self.format_duration(duration_ms) duration_item = QTableWidgetItem(duration) duration_item.setTextAlignment(Qt.AlignmentFlag.AlignCenter) self.track_table.setItem(i, 2, duration_item) @@ -1620,6 +1636,28 @@ class DownloadMissingAlbumTracksModal(QDialog): self.track_table.setItem(i, 4, status_item) for col in range(5): self.track_table.item(i, col).setFlags(self.track_table.item(i, col).flags() & ~Qt.ItemFlag.ItemIsEditable) + + def is_valid_track(self, track) -> bool: + """Check if a track has valid data for display and download""" + # Check if track has a valid name + track_name = getattr(track, 'name', None) + if not track_name or track_name.strip() == '': + return False + + # Check if track has valid artists + artists = getattr(track, 'artists', None) + if not artists or len(artists) == 0: + return False + + # Check if track has valid duration (allow 0 duration but not None/missing attribute) + duration_ms = getattr(track, 'duration_ms', None) + if duration_ms is None: + return False + + # Allow 0 duration (some tracks like intros can be very short) + # Only reject if the duration attribute is completely missing + + return True def format_duration(self, duration_ms): """Convert milliseconds to MM:SS format"""