basic downloads

This commit is contained in:
Broque Thomas 2025-07-09 22:06:24 -07:00
parent 11a1343217
commit fc9b5f375a
5 changed files with 777 additions and 249 deletions

View file

@ -201,7 +201,40 @@ class SoulseekClient:
except:
pass
async def search(self, query: str, timeout: int = 10) -> List[SearchResult]:
def _process_search_responses(self, responses_data: List[Dict[str, Any]]) -> List[SearchResult]:
"""Process search response data into SearchResult objects"""
search_results = []
logger.debug(f"Processing {len(responses_data)} user responses")
for response_data in responses_data:
username = response_data.get('username', '')
files = response_data.get('files', [])
logger.debug(f"User {username} has {len(files)} files")
for file_data in files:
filename = file_data.get('filename', '')
size = file_data.get('size', 0)
file_ext = Path(filename).suffix.lower().lstrip('.')
quality = file_ext if file_ext in ['flac', 'mp3', 'ogg', 'aac', 'wma'] else 'unknown'
result = SearchResult(
username=username,
filename=filename,
size=size,
bitrate=file_data.get('bitRate'),
duration=file_data.get('length'),
quality=quality,
free_upload_slots=response_data.get('freeUploadSlots', 0),
upload_speed=response_data.get('uploadSpeed', 0),
queue_length=response_data.get('queueLength', 0)
)
search_results.append(result)
return search_results
async def search(self, query: str, timeout: int = 30) -> List[SearchResult]:
if not self.base_url:
logger.error("Soulseek client not configured")
return []
@ -233,59 +266,40 @@ class SoulseekClient:
logger.info(f"Search initiated with ID: {search_id}")
# Wait for search to complete (reduced timeout for testing)
await asyncio.sleep(timeout)
# Poll for results instead of blocking sleep - like web interface does
all_results = []
poll_interval = 1.5 # Check every 1.5 seconds for more responsive updates
max_polls = int(timeout / poll_interval) # 20 attempts over 30 seconds
logger.debug(f"Getting results for search ID: {search_id}")
# Use the correct endpoint to get search responses (actual files)
responses_data = await self._make_request('GET', f'searches/{search_id}/responses')
if not responses_data:
logger.error("No response from search responses GET request")
return []
logger.debug(f"Responses data type: {type(responses_data)}")
logger.debug(f"Responses data length: {len(responses_data) if isinstance(responses_data, list) else 'Not a list'}")
search_results = []
# responses_data should be a list of user responses
if isinstance(responses_data, list):
responses = responses_data
else:
logger.error(f"Expected list of responses, got: {type(responses_data)}")
return []
for poll_count in range(max_polls):
logger.debug(f"Polling for results (attempt {poll_count + 1}/{max_polls}) - elapsed: {poll_count * poll_interval:.1f}s")
logger.info(f"Processing {len(responses)} user responses")
for response_data in responses:
username = response_data.get('username', '')
files = response_data.get('files', [])
logger.debug(f"User {username} has {len(files)} files")
# Get current search responses
responses_data = await self._make_request('GET', f'searches/{search_id}/responses')
if responses_data and isinstance(responses_data, list):
current_results = self._process_search_responses(responses_data)
# Add new unique results
existing_filenames = {r.filename for r in all_results}
new_results = [r for r in current_results if r.filename not in existing_filenames]
all_results.extend(new_results)
if new_results:
logger.info(f"Found {len(new_results)} new results (total: {len(all_results)}) at {poll_count * poll_interval:.1f}s")
elif len(all_results) > 0:
logger.debug(f"No new results, total still: {len(all_results)}")
else:
logger.debug(f"Still waiting for results... ({poll_count * poll_interval:.1f}s elapsed)")
for file_data in files:
filename = file_data.get('filename', '')
size = file_data.get('size', 0)
file_ext = Path(filename).suffix.lower().lstrip('.')
quality = file_ext if file_ext in ['flac', 'mp3', 'ogg', 'aac', 'wma'] else 'unknown'
result = SearchResult(
username=username,
filename=filename,
size=size,
bitrate=file_data.get('bitRate'),
duration=file_data.get('length'),
quality=quality,
free_upload_slots=response_data.get('freeUploadSlots', 0),
upload_speed=response_data.get('uploadSpeed', 0),
queue_length=response_data.get('queueLength', 0)
)
search_results.append(result)
# Wait before next poll (unless this is the last attempt)
if poll_count < max_polls - 1:
await asyncio.sleep(poll_interval)
search_results.sort(key=lambda x: x.quality_score, reverse=True)
logger.info(f"Found {len(search_results)} results for query: {query}")
return search_results
logger.info(f"Search completed. Found {len(all_results)} total results for query: {query}")
# Sort by quality score and return
all_results.sort(key=lambda x: x.quality_score, reverse=True)
return all_results
except Exception as e:
logger.error(f"Error searching: {e}")
@ -301,10 +315,12 @@ class SoulseekClient:
# Use the exact format observed in the web interface
# Payload: [{filename: "...", size: 123}] - array of files
# Try adding path parameter to see if slskd supports custom download paths
download_data = [
{
"filename": filename,
"size": file_size
"size": file_size,
"path": str(self.download_path) # Try custom download path
}
]

View file

@ -3955,3 +3955,484 @@
2025-07-09 21:44:16 - newmusic.main - INFO - closeEvent:162 - Stopping status monitoring thread...
2025-07-09 21:44:16 - newmusic.main - INFO - closeEvent:167 - Closing Soulseek client...
2025-07-09 21:44:16 - newmusic.main - INFO - closeEvent:173 - Application closed successfully
2025-07-09 21:44:40 - newmusic - INFO - setup_logging:57 - Logging initialized with level: DEBUG
2025-07-09 21:44:40 - newmusic.main - INFO - main:187 - Starting NewMusic application
2025-07-09 21:44:40 - newmusic.spotify_client - INFO - _setup_client:84 - Successfully authenticated with Spotify as broquethomas
2025-07-09 21:44:40 - newmusic.plex_client - INFO - _find_music_library:98 - Found music library: Music
2025-07-09 21:44:40 - newmusic.plex_client - INFO - _setup_client:84 - Successfully connected to Plex server: PLEX-MACHINE
2025-07-09 21:44:40 - newmusic.soulseek_client - INFO - _setup_client:87 - Soulseek client configured with slskd at http://localhost:5030
2025-07-09 21:44:41 - newmusic.main - INFO - change_page:139 - Changed to page: dashboard
2025-07-09 21:44:41 - newmusic.spotify_client - INFO - get_user_playlists:106 - Fetching tracks for playlist: Aether
2025-07-09 21:44:41 - newmusic.spotify_client - INFO - get_user_playlists:106 - Fetching tracks for playlist: Favorite Artists
2025-07-09 21:44:42 - newmusic.main - INFO - change_page:139 - Changed to page: downloads
2025-07-09 21:44:43 - newmusic.spotify_client - INFO - get_user_playlists:106 - Fetching tracks for playlist: Brittnea
2025-07-09 21:44:44 - newmusic.spotify_client - INFO - get_user_playlists:106 - Fetching tracks for playlist: Baleigh
2025-07-09 21:44:46 - newmusic.spotify_client - INFO - get_user_playlists:106 - Fetching tracks for playlist: Extra Music
2025-07-09 21:44:47 - newmusic.spotify_client - INFO - get_user_playlists:106 - Fetching tracks for playlist: Maggi Main
2025-07-09 21:44:52 - newmusic.spotify_client - INFO - get_user_playlists:106 - Fetching tracks for playlist: Broque Main
2025-07-09 21:44:59 - newmusic.spotify_client - INFO - get_user_playlists:113 - Retrieved 7 playlists
2025-07-09 21:51:01 - newmusic.main - INFO - closeEvent:152 - Closing application...
2025-07-09 21:51:01 - newmusic.main - INFO - closeEvent:157 - Cleaning up Downloads page threads...
2025-07-09 21:51:01 - newmusic.main - INFO - closeEvent:162 - Stopping status monitoring thread...
2025-07-09 21:51:03 - newmusic.main - INFO - closeEvent:167 - Closing Soulseek client...
2025-07-09 21:51:03 - newmusic.main - INFO - closeEvent:173 - Application closed successfully
2025-07-09 21:57:34 - newmusic - INFO - setup_logging:57 - Logging initialized with level: DEBUG
2025-07-09 21:57:34 - newmusic.main - INFO - main:187 - Starting NewMusic application
2025-07-09 21:57:34 - newmusic.spotify_client - INFO - _setup_client:84 - Successfully authenticated with Spotify as broquethomas
2025-07-09 21:57:34 - newmusic.plex_client - INFO - _find_music_library:98 - Found music library: Music
2025-07-09 21:57:34 - newmusic.plex_client - INFO - _setup_client:84 - Successfully connected to Plex server: PLEX-MACHINE
2025-07-09 21:57:34 - newmusic.soulseek_client - INFO - _setup_client:87 - Soulseek client configured with slskd at http://localhost:5030
2025-07-09 21:57:35 - newmusic.main - INFO - change_page:139 - Changed to page: dashboard
2025-07-09 21:57:35 - newmusic.spotify_client - INFO - get_user_playlists:106 - Fetching tracks for playlist: Aether
2025-07-09 21:57:35 - newmusic.spotify_client - INFO - get_user_playlists:106 - Fetching tracks for playlist: Favorite Artists
2025-07-09 21:57:38 - newmusic.spotify_client - INFO - get_user_playlists:106 - Fetching tracks for playlist: Brittnea
2025-07-09 21:57:39 - newmusic.spotify_client - INFO - get_user_playlists:106 - Fetching tracks for playlist: Baleigh
2025-07-09 21:57:40 - newmusic.spotify_client - INFO - get_user_playlists:106 - Fetching tracks for playlist: Extra Music
2025-07-09 21:57:41 - newmusic.spotify_client - INFO - get_user_playlists:106 - Fetching tracks for playlist: Maggi Main
2025-07-09 21:57:46 - newmusic.spotify_client - INFO - get_user_playlists:106 - Fetching tracks for playlist: Broque Main
2025-07-09 21:57:46 - newmusic.main - INFO - change_page:139 - Changed to page: sync
2025-07-09 21:57:53 - newmusic.spotify_client - INFO - get_user_playlists:113 - Retrieved 7 playlists
2025-07-09 21:57:57 - newmusic.main - INFO - change_page:139 - Changed to page: downloads
2025-07-09 21:58:03 - newmusic.soulseek_client - INFO - search:243 - Starting search for: 'Virtual Mage'
2025-07-09 21:58:03 - newmusic.soulseek_client - DEBUG - search:253 - Search data: {'searchText': 'Virtual Mage', 'timeout': 15000, 'filterResponses': True, 'minimumResponseFileCount': 1, 'minimumPeerUploadSpeed': 0}
2025-07-09 21:58:03 - newmusic.soulseek_client - DEBUG - search:254 - Making POST request to: http://localhost:5030/api/v0/searches
2025-07-09 21:58:03 - newmusic.soulseek_client - DEBUG - _make_request:109 - Making POST request to: http://localhost:5030/api/v0/searches
2025-07-09 21:58:03 - newmusic.soulseek_client - DEBUG - _make_request:110 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'}
2025-07-09 21:58:03 - newmusic.soulseek_client - DEBUG - _make_request:112 - JSON payload: {'searchText': 'Virtual Mage', 'timeout': 15000, 'filterResponses': True, 'minimumResponseFileCount': 1, 'minimumPeerUploadSpeed': 0}
2025-07-09 21:58:03 - newmusic.soulseek_client - DEBUG - _make_request:121 - Response status: 200
2025-07-09 21:58:03 - newmusic.soulseek_client - DEBUG - _make_request:122 - Response text: {"fileCount":0,"id":"6ea08485-f94a-49cd-8fc1-bbd0813a7422","isComplete":false,"lockedFileCount":0,"responseCount":0,"responses":[],"searchText":"Virtual Mage","startedAt":"2025-07-10T04:58:03.4074246Z","state":"InProgress","token":92}...
2025-07-09 21:58:03 - newmusic.soulseek_client - INFO - search:267 - Search initiated with ID: 6ea08485-f94a-49cd-8fc1-bbd0813a7422
2025-07-09 21:58:03 - newmusic.soulseek_client - DEBUG - search:275 - Polling for results (attempt 1/7)
2025-07-09 21:58:03 - newmusic.soulseek_client - DEBUG - _make_request:109 - Making GET request to: http://localhost:5030/api/v0/searches/6ea08485-f94a-49cd-8fc1-bbd0813a7422/responses
2025-07-09 21:58:03 - newmusic.soulseek_client - DEBUG - _make_request:110 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'}
2025-07-09 21:58:03 - newmusic.soulseek_client - DEBUG - _make_request:121 - Response status: 200
2025-07-09 21:58:03 - newmusic.soulseek_client - DEBUG - _make_request:122 - Response text: []...
2025-07-09 21:58:05 - newmusic.soulseek_client - DEBUG - search:275 - Polling for results (attempt 2/7)
2025-07-09 21:58:05 - newmusic.soulseek_client - DEBUG - _make_request:109 - Making GET request to: http://localhost:5030/api/v0/searches/6ea08485-f94a-49cd-8fc1-bbd0813a7422/responses
2025-07-09 21:58:05 - newmusic.soulseek_client - DEBUG - _make_request:110 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'}
2025-07-09 21:58:05 - newmusic.soulseek_client - DEBUG - _make_request:121 - Response status: 200
2025-07-09 21:58:05 - newmusic.soulseek_client - DEBUG - _make_request:122 - Response text: []...
2025-07-09 21:58:07 - newmusic.soulseek_client - DEBUG - search:275 - Polling for results (attempt 3/7)
2025-07-09 21:58:07 - newmusic.soulseek_client - DEBUG - _make_request:109 - Making GET request to: http://localhost:5030/api/v0/searches/6ea08485-f94a-49cd-8fc1-bbd0813a7422/responses
2025-07-09 21:58:07 - newmusic.soulseek_client - DEBUG - _make_request:110 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'}
2025-07-09 21:58:08 - newmusic.soulseek_client - DEBUG - _make_request:121 - Response status: 200
2025-07-09 21:58:08 - newmusic.soulseek_client - DEBUG - _make_request:122 - Response text: []...
2025-07-09 21:58:10 - newmusic.soulseek_client - DEBUG - search:275 - Polling for results (attempt 4/7)
2025-07-09 21:58:10 - newmusic.soulseek_client - DEBUG - _make_request:109 - Making GET request to: http://localhost:5030/api/v0/searches/6ea08485-f94a-49cd-8fc1-bbd0813a7422/responses
2025-07-09 21:58:10 - newmusic.soulseek_client - DEBUG - _make_request:110 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'}
2025-07-09 21:58:10 - newmusic.soulseek_client - DEBUG - _make_request:121 - Response status: 200
2025-07-09 21:58:10 - newmusic.soulseek_client - DEBUG - _make_request:122 - Response text: []...
2025-07-09 21:58:12 - newmusic.soulseek_client - DEBUG - search:275 - Polling for results (attempt 5/7)
2025-07-09 21:58:12 - newmusic.soulseek_client - DEBUG - _make_request:109 - Making GET request to: http://localhost:5030/api/v0/searches/6ea08485-f94a-49cd-8fc1-bbd0813a7422/responses
2025-07-09 21:58:12 - newmusic.soulseek_client - DEBUG - _make_request:110 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'}
2025-07-09 21:58:12 - newmusic.soulseek_client - DEBUG - _make_request:121 - Response status: 200
2025-07-09 21:58:12 - newmusic.soulseek_client - DEBUG - _make_request:122 - Response text: []...
2025-07-09 21:58:14 - newmusic.soulseek_client - DEBUG - search:275 - Polling for results (attempt 6/7)
2025-07-09 21:58:14 - newmusic.soulseek_client - DEBUG - _make_request:109 - Making GET request to: http://localhost:5030/api/v0/searches/6ea08485-f94a-49cd-8fc1-bbd0813a7422/responses
2025-07-09 21:58:14 - newmusic.soulseek_client - DEBUG - _make_request:110 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'}
2025-07-09 21:58:15 - newmusic.soulseek_client - DEBUG - _make_request:121 - Response status: 200
2025-07-09 21:58:15 - newmusic.soulseek_client - DEBUG - _make_request:122 - Response text: []...
2025-07-09 21:58:17 - newmusic.soulseek_client - DEBUG - search:275 - Polling for results (attempt 7/7)
2025-07-09 21:58:17 - newmusic.soulseek_client - DEBUG - _make_request:109 - Making GET request to: http://localhost:5030/api/v0/searches/6ea08485-f94a-49cd-8fc1-bbd0813a7422/responses
2025-07-09 21:58:17 - newmusic.soulseek_client - DEBUG - _make_request:110 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'}
2025-07-09 21:58:17 - newmusic.soulseek_client - DEBUG - _make_request:121 - Response status: 200
2025-07-09 21:58:17 - newmusic.soulseek_client - DEBUG - _make_request:122 - Response text: []...
2025-07-09 21:58:19 - newmusic.soulseek_client - INFO - search:293 - Search completed. Found 0 total results for query: Virtual Mage
2025-07-09 21:58:44 - newmusic.soulseek_client - INFO - search:243 - Starting search for: 'Virtual Mage - Aether'
2025-07-09 21:58:44 - newmusic.soulseek_client - DEBUG - search:253 - Search data: {'searchText': 'Virtual Mage - Aether', 'timeout': 15000, 'filterResponses': True, 'minimumResponseFileCount': 1, 'minimumPeerUploadSpeed': 0}
2025-07-09 21:58:44 - newmusic.soulseek_client - DEBUG - search:254 - Making POST request to: http://localhost:5030/api/v0/searches
2025-07-09 21:58:44 - newmusic.soulseek_client - DEBUG - _make_request:109 - Making POST request to: http://localhost:5030/api/v0/searches
2025-07-09 21:58:44 - newmusic.soulseek_client - DEBUG - _make_request:110 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'}
2025-07-09 21:58:44 - newmusic.soulseek_client - DEBUG - _make_request:112 - JSON payload: {'searchText': 'Virtual Mage - Aether', 'timeout': 15000, 'filterResponses': True, 'minimumResponseFileCount': 1, 'minimumPeerUploadSpeed': 0}
2025-07-09 21:58:44 - newmusic.soulseek_client - DEBUG - _make_request:121 - Response status: 200
2025-07-09 21:58:44 - newmusic.soulseek_client - DEBUG - _make_request:122 - Response text: {"fileCount":0,"id":"6667776b-fbc6-4c69-8997-df5702cd4df0","isComplete":false,"lockedFileCount":0,"responseCount":0,"responses":[],"searchText":"Virtual Mage - Aether","startedAt":"2025-07-10T04:58:44.5710082Z","state":"InProgress","token":93}...
2025-07-09 21:58:44 - newmusic.soulseek_client - INFO - search:267 - Search initiated with ID: 6667776b-fbc6-4c69-8997-df5702cd4df0
2025-07-09 21:58:44 - newmusic.soulseek_client - DEBUG - search:275 - Polling for results (attempt 1/7)
2025-07-09 21:58:44 - newmusic.soulseek_client - DEBUG - _make_request:109 - Making GET request to: http://localhost:5030/api/v0/searches/6667776b-fbc6-4c69-8997-df5702cd4df0/responses
2025-07-09 21:58:44 - newmusic.soulseek_client - DEBUG - _make_request:110 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'}
2025-07-09 21:58:44 - newmusic.soulseek_client - DEBUG - _make_request:121 - Response status: 200
2025-07-09 21:58:44 - newmusic.soulseek_client - DEBUG - _make_request:122 - Response text: []...
2025-07-09 21:58:46 - newmusic.soulseek_client - DEBUG - search:275 - Polling for results (attempt 2/7)
2025-07-09 21:58:46 - newmusic.soulseek_client - DEBUG - _make_request:109 - Making GET request to: http://localhost:5030/api/v0/searches/6667776b-fbc6-4c69-8997-df5702cd4df0/responses
2025-07-09 21:58:46 - newmusic.soulseek_client - DEBUG - _make_request:110 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'}
2025-07-09 21:58:47 - newmusic.soulseek_client - DEBUG - _make_request:121 - Response status: 200
2025-07-09 21:58:47 - newmusic.soulseek_client - DEBUG - _make_request:122 - Response text: []...
2025-07-09 21:58:49 - newmusic.soulseek_client - DEBUG - search:275 - Polling for results (attempt 3/7)
2025-07-09 21:58:49 - newmusic.soulseek_client - DEBUG - _make_request:109 - Making GET request to: http://localhost:5030/api/v0/searches/6667776b-fbc6-4c69-8997-df5702cd4df0/responses
2025-07-09 21:58:49 - newmusic.soulseek_client - DEBUG - _make_request:110 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'}
2025-07-09 21:58:49 - newmusic.soulseek_client - DEBUG - _make_request:121 - Response status: 200
2025-07-09 21:58:49 - newmusic.soulseek_client - DEBUG - _make_request:122 - Response text: []...
2025-07-09 21:58:51 - newmusic.soulseek_client - DEBUG - search:275 - Polling for results (attempt 4/7)
2025-07-09 21:58:51 - newmusic.soulseek_client - DEBUG - _make_request:109 - Making GET request to: http://localhost:5030/api/v0/searches/6667776b-fbc6-4c69-8997-df5702cd4df0/responses
2025-07-09 21:58:51 - newmusic.soulseek_client - DEBUG - _make_request:110 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'}
2025-07-09 21:58:51 - newmusic.soulseek_client - DEBUG - _make_request:121 - Response status: 200
2025-07-09 21:58:51 - newmusic.soulseek_client - DEBUG - _make_request:122 - Response text: []...
2025-07-09 21:58:53 - newmusic.soulseek_client - DEBUG - search:275 - Polling for results (attempt 5/7)
2025-07-09 21:58:53 - newmusic.soulseek_client - DEBUG - _make_request:109 - Making GET request to: http://localhost:5030/api/v0/searches/6667776b-fbc6-4c69-8997-df5702cd4df0/responses
2025-07-09 21:58:53 - newmusic.soulseek_client - DEBUG - _make_request:110 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'}
2025-07-09 21:58:53 - newmusic.soulseek_client - DEBUG - _make_request:121 - Response status: 200
2025-07-09 21:58:53 - newmusic.soulseek_client - DEBUG - _make_request:122 - Response text: []...
2025-07-09 21:58:55 - newmusic.soulseek_client - DEBUG - search:275 - Polling for results (attempt 6/7)
2025-07-09 21:58:55 - newmusic.soulseek_client - DEBUG - _make_request:109 - Making GET request to: http://localhost:5030/api/v0/searches/6667776b-fbc6-4c69-8997-df5702cd4df0/responses
2025-07-09 21:58:55 - newmusic.soulseek_client - DEBUG - _make_request:110 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'}
2025-07-09 21:58:56 - newmusic.soulseek_client - DEBUG - _make_request:121 - Response status: 200
2025-07-09 21:58:56 - newmusic.soulseek_client - DEBUG - _make_request:122 - Response text: []...
2025-07-09 21:58:58 - newmusic.soulseek_client - DEBUG - search:275 - Polling for results (attempt 7/7)
2025-07-09 21:58:58 - newmusic.soulseek_client - DEBUG - _make_request:109 - Making GET request to: http://localhost:5030/api/v0/searches/6667776b-fbc6-4c69-8997-df5702cd4df0/responses
2025-07-09 21:58:58 - newmusic.soulseek_client - DEBUG - _make_request:110 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'}
2025-07-09 21:58:58 - newmusic.soulseek_client - DEBUG - _make_request:121 - Response status: 200
2025-07-09 21:58:58 - newmusic.soulseek_client - DEBUG - _make_request:122 - Response text: []...
2025-07-09 21:59:00 - newmusic.soulseek_client - INFO - search:293 - Search completed. Found 0 total results for query: Virtual Mage - Aether
2025-07-09 22:01:02 - newmusic.main - INFO - closeEvent:152 - Closing application...
2025-07-09 22:01:02 - newmusic.main - INFO - closeEvent:157 - Cleaning up Downloads page threads...
2025-07-09 22:01:02 - newmusic.main - INFO - closeEvent:162 - Stopping status monitoring thread...
2025-07-09 22:01:02 - newmusic.main - INFO - closeEvent:167 - Closing Soulseek client...
2025-07-09 22:01:02 - newmusic.main - INFO - closeEvent:173 - Application closed successfully
2025-07-09 22:02:15 - newmusic - INFO - setup_logging:57 - Logging initialized with level: DEBUG
2025-07-09 22:02:15 - newmusic.main - INFO - main:187 - Starting NewMusic application
2025-07-09 22:02:15 - newmusic.spotify_client - INFO - _setup_client:84 - Successfully authenticated with Spotify as broquethomas
2025-07-09 22:02:45 - newmusic.plex_client - ERROR - _setup_client:87 - Failed to connect to Plex server: HTTPConnectionPool(host='192.168.86.36', port=32400): Read timed out. (read timeout=30)
2025-07-09 22:02:45 - newmusic.soulseek_client - INFO - _setup_client:87 - Soulseek client configured with slskd at http://localhost:5030
2025-07-09 22:02:46 - newmusic.main - INFO - change_page:139 - Changed to page: dashboard
2025-07-09 22:02:46 - newmusic.spotify_client - INFO - get_user_playlists:106 - Fetching tracks for playlist: Aether
2025-07-09 22:02:46 - newmusic.spotify_client - INFO - get_user_playlists:106 - Fetching tracks for playlist: Favorite Artists
2025-07-09 22:02:49 - newmusic.spotify_client - INFO - get_user_playlists:106 - Fetching tracks for playlist: Brittnea
2025-07-09 22:02:49 - newmusic.spotify_client - INFO - get_user_playlists:106 - Fetching tracks for playlist: Baleigh
2025-07-09 22:02:51 - newmusic.spotify_client - INFO - get_user_playlists:106 - Fetching tracks for playlist: Extra Music
2025-07-09 22:02:52 - newmusic.spotify_client - INFO - get_user_playlists:106 - Fetching tracks for playlist: Maggi Main
2025-07-09 22:02:54 - newmusic.main - INFO - change_page:139 - Changed to page: settings
2025-07-09 22:02:57 - newmusic.spotify_client - INFO - get_user_playlists:106 - Fetching tracks for playlist: Broque Main
2025-07-09 22:03:04 - newmusic.spotify_client - INFO - get_user_playlists:113 - Retrieved 7 playlists
2025-07-09 22:03:26 - newmusic.plex_client - ERROR - _setup_client:87 - Failed to connect to Plex server: HTTPConnectionPool(host='192.168.86.36', port=32400): Read timed out. (read timeout=30)
2025-07-09 22:04:22 - newmusic.plex_client - INFO - _find_music_library:98 - Found music library: Music
2025-07-09 22:04:22 - newmusic.plex_client - INFO - _setup_client:84 - Successfully connected to Plex server: PLEX-MACHINE
2025-07-09 22:04:24 - newmusic.main - INFO - closeEvent:152 - Closing application...
2025-07-09 22:04:24 - newmusic.main - INFO - closeEvent:157 - Cleaning up Downloads page threads...
2025-07-09 22:04:24 - newmusic.main - INFO - closeEvent:162 - Stopping status monitoring thread...
2025-07-09 22:04:25 - newmusic.main - INFO - closeEvent:167 - Closing Soulseek client...
2025-07-09 22:04:25 - newmusic.main - INFO - closeEvent:173 - Application closed successfully
2025-07-09 22:04:28 - newmusic - INFO - setup_logging:57 - Logging initialized with level: DEBUG
2025-07-09 22:04:28 - newmusic.main - INFO - main:187 - Starting NewMusic application
2025-07-09 22:04:28 - newmusic.spotify_client - INFO - _setup_client:84 - Successfully authenticated with Spotify as broquethomas
2025-07-09 22:04:28 - newmusic.plex_client - INFO - _find_music_library:98 - Found music library: Music
2025-07-09 22:04:28 - newmusic.plex_client - INFO - _setup_client:84 - Successfully connected to Plex server: PLEX-MACHINE
2025-07-09 22:04:28 - newmusic.soulseek_client - INFO - _setup_client:87 - Soulseek client configured with slskd at http://localhost:5030
2025-07-09 22:04:29 - newmusic.main - INFO - change_page:139 - Changed to page: dashboard
2025-07-09 22:04:29 - newmusic.spotify_client - INFO - get_user_playlists:106 - Fetching tracks for playlist: Aether
2025-07-09 22:04:29 - newmusic.spotify_client - INFO - get_user_playlists:106 - Fetching tracks for playlist: Favorite Artists
2025-07-09 22:04:32 - newmusic.spotify_client - INFO - get_user_playlists:106 - Fetching tracks for playlist: Brittnea
2025-07-09 22:04:33 - newmusic.spotify_client - INFO - get_user_playlists:106 - Fetching tracks for playlist: Baleigh
2025-07-09 22:04:34 - newmusic.spotify_client - INFO - get_user_playlists:106 - Fetching tracks for playlist: Extra Music
2025-07-09 22:04:35 - newmusic.spotify_client - INFO - get_user_playlists:106 - Fetching tracks for playlist: Maggi Main
2025-07-09 22:04:40 - newmusic.spotify_client - INFO - get_user_playlists:106 - Fetching tracks for playlist: Broque Main
2025-07-09 22:04:46 - newmusic.spotify_client - INFO - get_user_playlists:113 - Retrieved 7 playlists
2025-07-09 22:04:50 - newmusic.main - INFO - change_page:139 - Changed to page: downloads
2025-07-09 22:04:56 - newmusic.soulseek_client - INFO - search:243 - Starting search for: 'virtual mage'
2025-07-09 22:04:56 - newmusic.soulseek_client - DEBUG - search:253 - Search data: {'searchText': 'virtual mage', 'timeout': 30000, 'filterResponses': True, 'minimumResponseFileCount': 1, 'minimumPeerUploadSpeed': 0}
2025-07-09 22:04:56 - newmusic.soulseek_client - DEBUG - search:254 - Making POST request to: http://localhost:5030/api/v0/searches
2025-07-09 22:04:56 - newmusic.soulseek_client - DEBUG - _make_request:109 - Making POST request to: http://localhost:5030/api/v0/searches
2025-07-09 22:04:56 - newmusic.soulseek_client - DEBUG - _make_request:110 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'}
2025-07-09 22:04:56 - newmusic.soulseek_client - DEBUG - _make_request:112 - JSON payload: {'searchText': 'virtual mage', 'timeout': 30000, 'filterResponses': True, 'minimumResponseFileCount': 1, 'minimumPeerUploadSpeed': 0}
2025-07-09 22:04:56 - newmusic.soulseek_client - DEBUG - _make_request:121 - Response status: 200
2025-07-09 22:04:56 - newmusic.soulseek_client - DEBUG - _make_request:122 - Response text: {"fileCount":0,"id":"d3790420-d533-495a-8ae4-fa21a572eaaa","isComplete":false,"lockedFileCount":0,"responseCount":0,"responses":[],"searchText":"virtual mage","startedAt":"2025-07-10T05:04:56.4191321Z","state":"InProgress","token":94}...
2025-07-09 22:04:56 - newmusic.soulseek_client - INFO - search:267 - Search initiated with ID: d3790420-d533-495a-8ae4-fa21a572eaaa
2025-07-09 22:04:56 - newmusic.soulseek_client - DEBUG - search:275 - Polling for results (attempt 1/20) - elapsed: 0.0s
2025-07-09 22:04:56 - newmusic.soulseek_client - DEBUG - _make_request:109 - Making GET request to: http://localhost:5030/api/v0/searches/d3790420-d533-495a-8ae4-fa21a572eaaa/responses
2025-07-09 22:04:56 - newmusic.soulseek_client - DEBUG - _make_request:110 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'}
2025-07-09 22:04:56 - newmusic.soulseek_client - DEBUG - _make_request:121 - Response status: 200
2025-07-09 22:04:56 - newmusic.soulseek_client - DEBUG - _make_request:122 - Response text: []...
2025-07-09 22:04:58 - newmusic.soulseek_client - DEBUG - search:275 - Polling for results (attempt 2/20) - elapsed: 1.5s
2025-07-09 22:04:58 - newmusic.soulseek_client - DEBUG - _make_request:109 - Making GET request to: http://localhost:5030/api/v0/searches/d3790420-d533-495a-8ae4-fa21a572eaaa/responses
2025-07-09 22:04:58 - newmusic.soulseek_client - DEBUG - _make_request:110 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'}
2025-07-09 22:04:58 - newmusic.soulseek_client - DEBUG - _make_request:121 - Response status: 200
2025-07-09 22:04:58 - newmusic.soulseek_client - DEBUG - _make_request:122 - Response text: []...
2025-07-09 22:04:59 - newmusic.soulseek_client - DEBUG - search:275 - Polling for results (attempt 3/20) - elapsed: 3.0s
2025-07-09 22:04:59 - newmusic.soulseek_client - DEBUG - _make_request:109 - Making GET request to: http://localhost:5030/api/v0/searches/d3790420-d533-495a-8ae4-fa21a572eaaa/responses
2025-07-09 22:04:59 - newmusic.soulseek_client - DEBUG - _make_request:110 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'}
2025-07-09 22:05:00 - newmusic.soulseek_client - DEBUG - _make_request:121 - Response status: 200
2025-07-09 22:05:00 - newmusic.soulseek_client - DEBUG - _make_request:122 - Response text: []...
2025-07-09 22:05:01 - newmusic.soulseek_client - DEBUG - search:275 - Polling for results (attempt 4/20) - elapsed: 4.5s
2025-07-09 22:05:01 - newmusic.soulseek_client - DEBUG - _make_request:109 - Making GET request to: http://localhost:5030/api/v0/searches/d3790420-d533-495a-8ae4-fa21a572eaaa/responses
2025-07-09 22:05:01 - newmusic.soulseek_client - DEBUG - _make_request:110 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'}
2025-07-09 22:05:02 - newmusic.soulseek_client - DEBUG - _make_request:121 - Response status: 200
2025-07-09 22:05:02 - newmusic.soulseek_client - DEBUG - _make_request:122 - Response text: []...
2025-07-09 22:05:03 - newmusic.soulseek_client - DEBUG - search:275 - Polling for results (attempt 5/20) - elapsed: 6.0s
2025-07-09 22:05:03 - newmusic.soulseek_client - DEBUG - _make_request:109 - Making GET request to: http://localhost:5030/api/v0/searches/d3790420-d533-495a-8ae4-fa21a572eaaa/responses
2025-07-09 22:05:03 - newmusic.soulseek_client - DEBUG - _make_request:110 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'}
2025-07-09 22:05:03 - newmusic.soulseek_client - DEBUG - _make_request:121 - Response status: 200
2025-07-09 22:05:03 - newmusic.soulseek_client - DEBUG - _make_request:122 - Response text: []...
2025-07-09 22:05:05 - newmusic.soulseek_client - DEBUG - search:275 - Polling for results (attempt 6/20) - elapsed: 7.5s
2025-07-09 22:05:05 - newmusic.soulseek_client - DEBUG - _make_request:109 - Making GET request to: http://localhost:5030/api/v0/searches/d3790420-d533-495a-8ae4-fa21a572eaaa/responses
2025-07-09 22:05:05 - newmusic.soulseek_client - DEBUG - _make_request:110 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'}
2025-07-09 22:05:05 - newmusic.soulseek_client - DEBUG - _make_request:121 - Response status: 200
2025-07-09 22:05:05 - newmusic.soulseek_client - DEBUG - _make_request:122 - Response text: []...
2025-07-09 22:05:07 - newmusic.soulseek_client - DEBUG - search:275 - Polling for results (attempt 7/20) - elapsed: 9.0s
2025-07-09 22:05:07 - newmusic.soulseek_client - DEBUG - _make_request:109 - Making GET request to: http://localhost:5030/api/v0/searches/d3790420-d533-495a-8ae4-fa21a572eaaa/responses
2025-07-09 22:05:07 - newmusic.soulseek_client - DEBUG - _make_request:110 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'}
2025-07-09 22:05:07 - newmusic.soulseek_client - DEBUG - _make_request:121 - Response status: 200
2025-07-09 22:05:07 - newmusic.soulseek_client - DEBUG - _make_request:122 - Response text: []...
2025-07-09 22:05:08 - newmusic.soulseek_client - DEBUG - search:275 - Polling for results (attempt 8/20) - elapsed: 10.5s
2025-07-09 22:05:08 - newmusic.soulseek_client - DEBUG - _make_request:109 - Making GET request to: http://localhost:5030/api/v0/searches/d3790420-d533-495a-8ae4-fa21a572eaaa/responses
2025-07-09 22:05:08 - newmusic.soulseek_client - DEBUG - _make_request:110 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'}
2025-07-09 22:05:09 - newmusic.soulseek_client - DEBUG - _make_request:121 - Response status: 200
2025-07-09 22:05:09 - newmusic.soulseek_client - DEBUG - _make_request:122 - Response text: []...
2025-07-09 22:05:10 - newmusic.soulseek_client - DEBUG - search:275 - Polling for results (attempt 9/20) - elapsed: 12.0s
2025-07-09 22:05:10 - newmusic.soulseek_client - DEBUG - _make_request:109 - Making GET request to: http://localhost:5030/api/v0/searches/d3790420-d533-495a-8ae4-fa21a572eaaa/responses
2025-07-09 22:05:10 - newmusic.soulseek_client - DEBUG - _make_request:110 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'}
2025-07-09 22:05:10 - newmusic.soulseek_client - DEBUG - _make_request:121 - Response status: 200
2025-07-09 22:05:10 - newmusic.soulseek_client - DEBUG - _make_request:122 - Response text: []...
2025-07-09 22:05:12 - newmusic.soulseek_client - DEBUG - search:275 - Polling for results (attempt 10/20) - elapsed: 13.5s
2025-07-09 22:05:12 - newmusic.soulseek_client - DEBUG - _make_request:109 - Making GET request to: http://localhost:5030/api/v0/searches/d3790420-d533-495a-8ae4-fa21a572eaaa/responses
2025-07-09 22:05:12 - newmusic.soulseek_client - DEBUG - _make_request:110 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'}
2025-07-09 22:05:12 - newmusic.soulseek_client - DEBUG - _make_request:121 - Response status: 200
2025-07-09 22:05:12 - newmusic.soulseek_client - DEBUG - _make_request:122 - Response text: []...
2025-07-09 22:05:14 - newmusic.soulseek_client - DEBUG - search:275 - Polling for results (attempt 11/20) - elapsed: 15.0s
2025-07-09 22:05:14 - newmusic.soulseek_client - DEBUG - _make_request:109 - Making GET request to: http://localhost:5030/api/v0/searches/d3790420-d533-495a-8ae4-fa21a572eaaa/responses
2025-07-09 22:05:14 - newmusic.soulseek_client - DEBUG - _make_request:110 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'}
2025-07-09 22:05:14 - newmusic.soulseek_client - DEBUG - _make_request:121 - Response status: 200
2025-07-09 22:05:14 - newmusic.soulseek_client - DEBUG - _make_request:122 - Response text: [{"fileCount":2,"files":[{"bitRate":160,"code":1,"extension":"","filename":"Music\\aofd3\\Mallsoft & Shopping Mall Ambience\\03 - Virtual Mage - Breaking the Dream (Lucid Dream Edit).ogg","isVariableBitRate":false,"length":256,"size":6269644,"isLocked":false},{"bitRate":160,"code":1,"extension":"","filename":"Music\\aofd3\\Mallsoft & Shopping Mall Ambience\\09 - Virtual Mage - Moondust.ogg","isVariableBitRate":false,"length":138,"size":4266916,"isLocked":false}],"hasFreeUploadSlot":true,"lockedF...
2025-07-09 22:05:14 - newmusic.soulseek_client - DEBUG - _process_search_responses:208 - Processing 17 user responses
2025-07-09 22:05:14 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User zeroscan has 2 files
2025-07-09 22:05:14 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User buk4 has 1 files
2025-07-09 22:05:14 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User Letham has 3 files
2025-07-09 22:05:14 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User nightmare_dronemk12 has 3 files
2025-07-09 22:05:14 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User Ultravod has 9 files
2025-07-09 22:05:14 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User RuuqoHoosk has 346 files
2025-07-09 22:05:14 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User koalabeer has 3 files
2025-07-09 22:05:14 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User raspberry2 has 10 files
2025-07-09 22:05:14 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User KindaRatchet has 1 files
2025-07-09 22:05:14 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User HomotopicCensorship has 3 files
2025-07-09 22:05:14 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User Kaya-Sem has 1 files
2025-07-09 22:05:14 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User belthane has 3 files
2025-07-09 22:05:14 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User leonardoclk has 3 files
2025-07-09 22:05:14 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User Dax_VR has 10 files
2025-07-09 22:05:14 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User exsanguinidraculae has 2 files
2025-07-09 22:05:14 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User ofoijacussa has 0 files
2025-07-09 22:05:14 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User Shooby has 6 files
2025-07-09 22:05:14 - newmusic.soulseek_client - INFO - search:288 - Found 406 new results (total: 406) at 15.0s
2025-07-09 22:05:15 - newmusic.soulseek_client - DEBUG - search:275 - Polling for results (attempt 12/20) - elapsed: 16.5s
2025-07-09 22:05:15 - newmusic.soulseek_client - DEBUG - _make_request:109 - Making GET request to: http://localhost:5030/api/v0/searches/d3790420-d533-495a-8ae4-fa21a572eaaa/responses
2025-07-09 22:05:15 - newmusic.soulseek_client - DEBUG - _make_request:110 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'}
2025-07-09 22:05:16 - newmusic.soulseek_client - DEBUG - _make_request:121 - Response status: 200
2025-07-09 22:05:16 - newmusic.soulseek_client - DEBUG - _make_request:122 - Response text: [{"fileCount":2,"files":[{"bitRate":160,"code":1,"extension":"","filename":"Music\\aofd3\\Mallsoft & Shopping Mall Ambience\\03 - Virtual Mage - Breaking the Dream (Lucid Dream Edit).ogg","isVariableBitRate":false,"length":256,"size":6269644,"isLocked":false},{"bitRate":160,"code":1,"extension":"","filename":"Music\\aofd3\\Mallsoft & Shopping Mall Ambience\\09 - Virtual Mage - Moondust.ogg","isVariableBitRate":false,"length":138,"size":4266916,"isLocked":false}],"hasFreeUploadSlot":true,"lockedF...
2025-07-09 22:05:16 - newmusic.soulseek_client - DEBUG - _process_search_responses:208 - Processing 17 user responses
2025-07-09 22:05:16 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User zeroscan has 2 files
2025-07-09 22:05:16 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User buk4 has 1 files
2025-07-09 22:05:16 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User Letham has 3 files
2025-07-09 22:05:16 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User nightmare_dronemk12 has 3 files
2025-07-09 22:05:16 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User Ultravod has 9 files
2025-07-09 22:05:16 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User RuuqoHoosk has 346 files
2025-07-09 22:05:16 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User koalabeer has 3 files
2025-07-09 22:05:16 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User raspberry2 has 10 files
2025-07-09 22:05:16 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User KindaRatchet has 1 files
2025-07-09 22:05:16 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User HomotopicCensorship has 3 files
2025-07-09 22:05:16 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User Kaya-Sem has 1 files
2025-07-09 22:05:16 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User belthane has 3 files
2025-07-09 22:05:16 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User leonardoclk has 3 files
2025-07-09 22:05:16 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User Dax_VR has 10 files
2025-07-09 22:05:16 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User exsanguinidraculae has 2 files
2025-07-09 22:05:16 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User ofoijacussa has 0 files
2025-07-09 22:05:16 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User Shooby has 6 files
2025-07-09 22:05:16 - newmusic.soulseek_client - DEBUG - search:290 - No new results, total still: 406
2025-07-09 22:05:17 - newmusic.soulseek_client - DEBUG - search:275 - Polling for results (attempt 13/20) - elapsed: 18.0s
2025-07-09 22:05:17 - newmusic.soulseek_client - DEBUG - _make_request:109 - Making GET request to: http://localhost:5030/api/v0/searches/d3790420-d533-495a-8ae4-fa21a572eaaa/responses
2025-07-09 22:05:17 - newmusic.soulseek_client - DEBUG - _make_request:110 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'}
2025-07-09 22:05:18 - newmusic.soulseek_client - DEBUG - _make_request:121 - Response status: 200
2025-07-09 22:05:18 - newmusic.soulseek_client - DEBUG - _make_request:122 - Response text: [{"fileCount":2,"files":[{"bitRate":160,"code":1,"extension":"","filename":"Music\\aofd3\\Mallsoft & Shopping Mall Ambience\\03 - Virtual Mage - Breaking the Dream (Lucid Dream Edit).ogg","isVariableBitRate":false,"length":256,"size":6269644,"isLocked":false},{"bitRate":160,"code":1,"extension":"","filename":"Music\\aofd3\\Mallsoft & Shopping Mall Ambience\\09 - Virtual Mage - Moondust.ogg","isVariableBitRate":false,"length":138,"size":4266916,"isLocked":false}],"hasFreeUploadSlot":true,"lockedF...
2025-07-09 22:05:18 - newmusic.soulseek_client - DEBUG - _process_search_responses:208 - Processing 17 user responses
2025-07-09 22:05:18 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User zeroscan has 2 files
2025-07-09 22:05:18 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User buk4 has 1 files
2025-07-09 22:05:18 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User Letham has 3 files
2025-07-09 22:05:18 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User nightmare_dronemk12 has 3 files
2025-07-09 22:05:18 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User Ultravod has 9 files
2025-07-09 22:05:18 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User RuuqoHoosk has 346 files
2025-07-09 22:05:18 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User koalabeer has 3 files
2025-07-09 22:05:18 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User raspberry2 has 10 files
2025-07-09 22:05:18 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User KindaRatchet has 1 files
2025-07-09 22:05:18 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User HomotopicCensorship has 3 files
2025-07-09 22:05:18 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User Kaya-Sem has 1 files
2025-07-09 22:05:18 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User belthane has 3 files
2025-07-09 22:05:18 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User leonardoclk has 3 files
2025-07-09 22:05:18 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User Dax_VR has 10 files
2025-07-09 22:05:18 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User exsanguinidraculae has 2 files
2025-07-09 22:05:18 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User ofoijacussa has 0 files
2025-07-09 22:05:18 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User Shooby has 6 files
2025-07-09 22:05:18 - newmusic.soulseek_client - DEBUG - search:290 - No new results, total still: 406
2025-07-09 22:05:19 - newmusic.soulseek_client - DEBUG - search:275 - Polling for results (attempt 14/20) - elapsed: 19.5s
2025-07-09 22:05:19 - newmusic.soulseek_client - DEBUG - _make_request:109 - Making GET request to: http://localhost:5030/api/v0/searches/d3790420-d533-495a-8ae4-fa21a572eaaa/responses
2025-07-09 22:05:19 - newmusic.soulseek_client - DEBUG - _make_request:110 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'}
2025-07-09 22:05:19 - newmusic.soulseek_client - DEBUG - _make_request:121 - Response status: 200
2025-07-09 22:05:19 - newmusic.soulseek_client - DEBUG - _make_request:122 - Response text: [{"fileCount":2,"files":[{"bitRate":160,"code":1,"extension":"","filename":"Music\\aofd3\\Mallsoft & Shopping Mall Ambience\\03 - Virtual Mage - Breaking the Dream (Lucid Dream Edit).ogg","isVariableBitRate":false,"length":256,"size":6269644,"isLocked":false},{"bitRate":160,"code":1,"extension":"","filename":"Music\\aofd3\\Mallsoft & Shopping Mall Ambience\\09 - Virtual Mage - Moondust.ogg","isVariableBitRate":false,"length":138,"size":4266916,"isLocked":false}],"hasFreeUploadSlot":true,"lockedF...
2025-07-09 22:05:19 - newmusic.soulseek_client - DEBUG - _process_search_responses:208 - Processing 17 user responses
2025-07-09 22:05:19 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User zeroscan has 2 files
2025-07-09 22:05:19 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User buk4 has 1 files
2025-07-09 22:05:19 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User Letham has 3 files
2025-07-09 22:05:19 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User nightmare_dronemk12 has 3 files
2025-07-09 22:05:19 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User Ultravod has 9 files
2025-07-09 22:05:19 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User RuuqoHoosk has 346 files
2025-07-09 22:05:19 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User koalabeer has 3 files
2025-07-09 22:05:19 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User raspberry2 has 10 files
2025-07-09 22:05:19 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User KindaRatchet has 1 files
2025-07-09 22:05:19 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User HomotopicCensorship has 3 files
2025-07-09 22:05:19 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User Kaya-Sem has 1 files
2025-07-09 22:05:19 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User belthane has 3 files
2025-07-09 22:05:19 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User leonardoclk has 3 files
2025-07-09 22:05:19 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User Dax_VR has 10 files
2025-07-09 22:05:19 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User exsanguinidraculae has 2 files
2025-07-09 22:05:19 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User ofoijacussa has 0 files
2025-07-09 22:05:19 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User Shooby has 6 files
2025-07-09 22:05:19 - newmusic.soulseek_client - DEBUG - search:290 - No new results, total still: 406
2025-07-09 22:05:21 - newmusic.soulseek_client - DEBUG - search:275 - Polling for results (attempt 15/20) - elapsed: 21.0s
2025-07-09 22:05:21 - newmusic.soulseek_client - DEBUG - _make_request:109 - Making GET request to: http://localhost:5030/api/v0/searches/d3790420-d533-495a-8ae4-fa21a572eaaa/responses
2025-07-09 22:05:21 - newmusic.soulseek_client - DEBUG - _make_request:110 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'}
2025-07-09 22:05:21 - newmusic.soulseek_client - DEBUG - _make_request:121 - Response status: 200
2025-07-09 22:05:21 - newmusic.soulseek_client - DEBUG - _make_request:122 - Response text: [{"fileCount":2,"files":[{"bitRate":160,"code":1,"extension":"","filename":"Music\\aofd3\\Mallsoft & Shopping Mall Ambience\\03 - Virtual Mage - Breaking the Dream (Lucid Dream Edit).ogg","isVariableBitRate":false,"length":256,"size":6269644,"isLocked":false},{"bitRate":160,"code":1,"extension":"","filename":"Music\\aofd3\\Mallsoft & Shopping Mall Ambience\\09 - Virtual Mage - Moondust.ogg","isVariableBitRate":false,"length":138,"size":4266916,"isLocked":false}],"hasFreeUploadSlot":true,"lockedF...
2025-07-09 22:05:21 - newmusic.soulseek_client - DEBUG - _process_search_responses:208 - Processing 17 user responses
2025-07-09 22:05:21 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User zeroscan has 2 files
2025-07-09 22:05:21 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User buk4 has 1 files
2025-07-09 22:05:21 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User Letham has 3 files
2025-07-09 22:05:21 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User nightmare_dronemk12 has 3 files
2025-07-09 22:05:21 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User Ultravod has 9 files
2025-07-09 22:05:21 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User RuuqoHoosk has 346 files
2025-07-09 22:05:21 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User koalabeer has 3 files
2025-07-09 22:05:21 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User raspberry2 has 10 files
2025-07-09 22:05:21 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User KindaRatchet has 1 files
2025-07-09 22:05:21 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User HomotopicCensorship has 3 files
2025-07-09 22:05:21 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User Kaya-Sem has 1 files
2025-07-09 22:05:21 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User belthane has 3 files
2025-07-09 22:05:21 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User leonardoclk has 3 files
2025-07-09 22:05:21 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User Dax_VR has 10 files
2025-07-09 22:05:21 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User exsanguinidraculae has 2 files
2025-07-09 22:05:21 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User ofoijacussa has 0 files
2025-07-09 22:05:21 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User Shooby has 6 files
2025-07-09 22:05:21 - newmusic.soulseek_client - DEBUG - search:290 - No new results, total still: 406
2025-07-09 22:05:23 - newmusic.soulseek_client - DEBUG - search:275 - Polling for results (attempt 16/20) - elapsed: 22.5s
2025-07-09 22:05:23 - newmusic.soulseek_client - DEBUG - _make_request:109 - Making GET request to: http://localhost:5030/api/v0/searches/d3790420-d533-495a-8ae4-fa21a572eaaa/responses
2025-07-09 22:05:23 - newmusic.soulseek_client - DEBUG - _make_request:110 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'}
2025-07-09 22:05:23 - newmusic.soulseek_client - DEBUG - _make_request:121 - Response status: 200
2025-07-09 22:05:23 - newmusic.soulseek_client - DEBUG - _make_request:122 - Response text: [{"fileCount":2,"files":[{"bitRate":160,"code":1,"extension":"","filename":"Music\\aofd3\\Mallsoft & Shopping Mall Ambience\\03 - Virtual Mage - Breaking the Dream (Lucid Dream Edit).ogg","isVariableBitRate":false,"length":256,"size":6269644,"isLocked":false},{"bitRate":160,"code":1,"extension":"","filename":"Music\\aofd3\\Mallsoft & Shopping Mall Ambience\\09 - Virtual Mage - Moondust.ogg","isVariableBitRate":false,"length":138,"size":4266916,"isLocked":false}],"hasFreeUploadSlot":true,"lockedF...
2025-07-09 22:05:23 - newmusic.soulseek_client - DEBUG - _process_search_responses:208 - Processing 17 user responses
2025-07-09 22:05:23 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User zeroscan has 2 files
2025-07-09 22:05:23 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User buk4 has 1 files
2025-07-09 22:05:23 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User Letham has 3 files
2025-07-09 22:05:23 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User nightmare_dronemk12 has 3 files
2025-07-09 22:05:23 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User Ultravod has 9 files
2025-07-09 22:05:23 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User RuuqoHoosk has 346 files
2025-07-09 22:05:23 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User koalabeer has 3 files
2025-07-09 22:05:23 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User raspberry2 has 10 files
2025-07-09 22:05:23 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User KindaRatchet has 1 files
2025-07-09 22:05:23 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User HomotopicCensorship has 3 files
2025-07-09 22:05:23 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User Kaya-Sem has 1 files
2025-07-09 22:05:23 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User belthane has 3 files
2025-07-09 22:05:23 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User leonardoclk has 3 files
2025-07-09 22:05:23 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User Dax_VR has 10 files
2025-07-09 22:05:23 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User exsanguinidraculae has 2 files
2025-07-09 22:05:23 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User ofoijacussa has 0 files
2025-07-09 22:05:23 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User Shooby has 6 files
2025-07-09 22:05:23 - newmusic.soulseek_client - DEBUG - search:290 - No new results, total still: 406
2025-07-09 22:05:24 - newmusic.soulseek_client - DEBUG - search:275 - Polling for results (attempt 17/20) - elapsed: 24.0s
2025-07-09 22:05:24 - newmusic.soulseek_client - DEBUG - _make_request:109 - Making GET request to: http://localhost:5030/api/v0/searches/d3790420-d533-495a-8ae4-fa21a572eaaa/responses
2025-07-09 22:05:24 - newmusic.soulseek_client - DEBUG - _make_request:110 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'}
2025-07-09 22:05:25 - newmusic.soulseek_client - DEBUG - _make_request:121 - Response status: 200
2025-07-09 22:05:25 - newmusic.soulseek_client - DEBUG - _make_request:122 - Response text: [{"fileCount":2,"files":[{"bitRate":160,"code":1,"extension":"","filename":"Music\\aofd3\\Mallsoft & Shopping Mall Ambience\\03 - Virtual Mage - Breaking the Dream (Lucid Dream Edit).ogg","isVariableBitRate":false,"length":256,"size":6269644,"isLocked":false},{"bitRate":160,"code":1,"extension":"","filename":"Music\\aofd3\\Mallsoft & Shopping Mall Ambience\\09 - Virtual Mage - Moondust.ogg","isVariableBitRate":false,"length":138,"size":4266916,"isLocked":false}],"hasFreeUploadSlot":true,"lockedF...
2025-07-09 22:05:25 - newmusic.soulseek_client - DEBUG - _process_search_responses:208 - Processing 17 user responses
2025-07-09 22:05:25 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User zeroscan has 2 files
2025-07-09 22:05:25 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User buk4 has 1 files
2025-07-09 22:05:25 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User Letham has 3 files
2025-07-09 22:05:25 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User nightmare_dronemk12 has 3 files
2025-07-09 22:05:25 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User Ultravod has 9 files
2025-07-09 22:05:25 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User RuuqoHoosk has 346 files
2025-07-09 22:05:25 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User koalabeer has 3 files
2025-07-09 22:05:25 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User raspberry2 has 10 files
2025-07-09 22:05:25 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User KindaRatchet has 1 files
2025-07-09 22:05:25 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User HomotopicCensorship has 3 files
2025-07-09 22:05:25 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User Kaya-Sem has 1 files
2025-07-09 22:05:25 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User belthane has 3 files
2025-07-09 22:05:25 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User leonardoclk has 3 files
2025-07-09 22:05:25 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User Dax_VR has 10 files
2025-07-09 22:05:25 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User exsanguinidraculae has 2 files
2025-07-09 22:05:25 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User ofoijacussa has 0 files
2025-07-09 22:05:25 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User Shooby has 6 files
2025-07-09 22:05:25 - newmusic.soulseek_client - DEBUG - search:290 - No new results, total still: 406
2025-07-09 22:05:26 - newmusic.soulseek_client - DEBUG - search:275 - Polling for results (attempt 18/20) - elapsed: 25.5s
2025-07-09 22:05:26 - newmusic.soulseek_client - DEBUG - _make_request:109 - Making GET request to: http://localhost:5030/api/v0/searches/d3790420-d533-495a-8ae4-fa21a572eaaa/responses
2025-07-09 22:05:26 - newmusic.soulseek_client - DEBUG - _make_request:110 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'}
2025-07-09 22:05:26 - newmusic.soulseek_client - DEBUG - _make_request:121 - Response status: 200
2025-07-09 22:05:26 - newmusic.soulseek_client - DEBUG - _make_request:122 - Response text: [{"fileCount":2,"files":[{"bitRate":160,"code":1,"extension":"","filename":"Music\\aofd3\\Mallsoft & Shopping Mall Ambience\\03 - Virtual Mage - Breaking the Dream (Lucid Dream Edit).ogg","isVariableBitRate":false,"length":256,"size":6269644,"isLocked":false},{"bitRate":160,"code":1,"extension":"","filename":"Music\\aofd3\\Mallsoft & Shopping Mall Ambience\\09 - Virtual Mage - Moondust.ogg","isVariableBitRate":false,"length":138,"size":4266916,"isLocked":false}],"hasFreeUploadSlot":true,"lockedF...
2025-07-09 22:05:26 - newmusic.soulseek_client - DEBUG - _process_search_responses:208 - Processing 17 user responses
2025-07-09 22:05:26 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User zeroscan has 2 files
2025-07-09 22:05:26 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User buk4 has 1 files
2025-07-09 22:05:26 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User Letham has 3 files
2025-07-09 22:05:26 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User nightmare_dronemk12 has 3 files
2025-07-09 22:05:26 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User Ultravod has 9 files
2025-07-09 22:05:26 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User RuuqoHoosk has 346 files
2025-07-09 22:05:26 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User koalabeer has 3 files
2025-07-09 22:05:26 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User raspberry2 has 10 files
2025-07-09 22:05:26 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User KindaRatchet has 1 files
2025-07-09 22:05:26 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User HomotopicCensorship has 3 files
2025-07-09 22:05:26 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User Kaya-Sem has 1 files
2025-07-09 22:05:26 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User belthane has 3 files
2025-07-09 22:05:26 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User leonardoclk has 3 files
2025-07-09 22:05:26 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User Dax_VR has 10 files
2025-07-09 22:05:26 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User exsanguinidraculae has 2 files
2025-07-09 22:05:26 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User ofoijacussa has 0 files
2025-07-09 22:05:26 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User Shooby has 6 files
2025-07-09 22:05:26 - newmusic.soulseek_client - DEBUG - search:290 - No new results, total still: 406
2025-07-09 22:05:28 - newmusic.soulseek_client - DEBUG - search:275 - Polling for results (attempt 19/20) - elapsed: 27.0s
2025-07-09 22:05:28 - newmusic.soulseek_client - DEBUG - _make_request:109 - Making GET request to: http://localhost:5030/api/v0/searches/d3790420-d533-495a-8ae4-fa21a572eaaa/responses
2025-07-09 22:05:28 - newmusic.soulseek_client - DEBUG - _make_request:110 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'}
2025-07-09 22:05:28 - newmusic.soulseek_client - DEBUG - _make_request:121 - Response status: 200
2025-07-09 22:05:28 - newmusic.soulseek_client - DEBUG - _make_request:122 - Response text: [{"fileCount":2,"files":[{"bitRate":160,"code":1,"extension":"","filename":"Music\\aofd3\\Mallsoft & Shopping Mall Ambience\\03 - Virtual Mage - Breaking the Dream (Lucid Dream Edit).ogg","isVariableBitRate":false,"length":256,"size":6269644,"isLocked":false},{"bitRate":160,"code":1,"extension":"","filename":"Music\\aofd3\\Mallsoft & Shopping Mall Ambience\\09 - Virtual Mage - Moondust.ogg","isVariableBitRate":false,"length":138,"size":4266916,"isLocked":false}],"hasFreeUploadSlot":true,"lockedF...
2025-07-09 22:05:28 - newmusic.soulseek_client - DEBUG - _process_search_responses:208 - Processing 17 user responses
2025-07-09 22:05:28 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User zeroscan has 2 files
2025-07-09 22:05:28 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User buk4 has 1 files
2025-07-09 22:05:28 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User Letham has 3 files
2025-07-09 22:05:28 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User nightmare_dronemk12 has 3 files
2025-07-09 22:05:28 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User Ultravod has 9 files
2025-07-09 22:05:28 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User RuuqoHoosk has 346 files
2025-07-09 22:05:28 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User koalabeer has 3 files
2025-07-09 22:05:28 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User raspberry2 has 10 files
2025-07-09 22:05:28 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User KindaRatchet has 1 files
2025-07-09 22:05:28 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User HomotopicCensorship has 3 files
2025-07-09 22:05:28 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User Kaya-Sem has 1 files
2025-07-09 22:05:28 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User belthane has 3 files
2025-07-09 22:05:28 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User leonardoclk has 3 files
2025-07-09 22:05:28 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User Dax_VR has 10 files
2025-07-09 22:05:28 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User exsanguinidraculae has 2 files
2025-07-09 22:05:28 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User ofoijacussa has 0 files
2025-07-09 22:05:28 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User Shooby has 6 files
2025-07-09 22:05:28 - newmusic.soulseek_client - DEBUG - search:290 - No new results, total still: 406
2025-07-09 22:05:30 - newmusic.soulseek_client - DEBUG - search:275 - Polling for results (attempt 20/20) - elapsed: 28.5s
2025-07-09 22:05:30 - newmusic.soulseek_client - DEBUG - _make_request:109 - Making GET request to: http://localhost:5030/api/v0/searches/d3790420-d533-495a-8ae4-fa21a572eaaa/responses
2025-07-09 22:05:30 - newmusic.soulseek_client - DEBUG - _make_request:110 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'}
2025-07-09 22:05:30 - newmusic.soulseek_client - DEBUG - _make_request:121 - Response status: 200
2025-07-09 22:05:30 - newmusic.soulseek_client - DEBUG - _make_request:122 - Response text: [{"fileCount":2,"files":[{"bitRate":160,"code":1,"extension":"","filename":"Music\\aofd3\\Mallsoft & Shopping Mall Ambience\\03 - Virtual Mage - Breaking the Dream (Lucid Dream Edit).ogg","isVariableBitRate":false,"length":256,"size":6269644,"isLocked":false},{"bitRate":160,"code":1,"extension":"","filename":"Music\\aofd3\\Mallsoft & Shopping Mall Ambience\\09 - Virtual Mage - Moondust.ogg","isVariableBitRate":false,"length":138,"size":4266916,"isLocked":false}],"hasFreeUploadSlot":true,"lockedF...
2025-07-09 22:05:30 - newmusic.soulseek_client - DEBUG - _process_search_responses:208 - Processing 17 user responses
2025-07-09 22:05:30 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User zeroscan has 2 files
2025-07-09 22:05:30 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User buk4 has 1 files
2025-07-09 22:05:30 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User Letham has 3 files
2025-07-09 22:05:30 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User nightmare_dronemk12 has 3 files
2025-07-09 22:05:30 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User Ultravod has 9 files
2025-07-09 22:05:30 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User RuuqoHoosk has 346 files
2025-07-09 22:05:30 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User koalabeer has 3 files
2025-07-09 22:05:30 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User raspberry2 has 10 files
2025-07-09 22:05:30 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User KindaRatchet has 1 files
2025-07-09 22:05:30 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User HomotopicCensorship has 3 files
2025-07-09 22:05:30 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User Kaya-Sem has 1 files
2025-07-09 22:05:30 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User belthane has 3 files
2025-07-09 22:05:30 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User leonardoclk has 3 files
2025-07-09 22:05:30 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User Dax_VR has 10 files
2025-07-09 22:05:30 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User exsanguinidraculae has 2 files
2025-07-09 22:05:30 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User ofoijacussa has 0 files
2025-07-09 22:05:30 - newmusic.soulseek_client - DEBUG - _process_search_responses:213 - User Shooby has 6 files
2025-07-09 22:05:30 - newmusic.soulseek_client - DEBUG - search:290 - No new results, total still: 406
2025-07-09 22:05:30 - newmusic.soulseek_client - INFO - search:298 - Search completed. Found 406 total results for query: virtual mage
2025-07-09 22:05:45 - newmusic.soulseek_client - DEBUG - download:314 - Attempting to download: @@bmlwc\Soulseek Downloads\c34wkpcv\Relaxing Synthwave Top 105\083 - Virtual Mage - Aether.mp3 from buk4 (size: 8344437)
2025-07-09 22:05:45 - newmusic.soulseek_client - DEBUG - download:327 - Using web interface API format: [{'filename': '@@bmlwc\\Soulseek Downloads\\c34wkpcv\\Relaxing Synthwave Top 105\\083 - Virtual Mage - Aether.mp3', 'size': 8344437, 'path': 'E:\\Broque Projects\\newMusic\\downloads'}]
2025-07-09 22:05:45 - newmusic.soulseek_client - DEBUG - download:331 - Trying web interface endpoint: transfers/downloads/buk4
2025-07-09 22:05:45 - newmusic.soulseek_client - DEBUG - _make_request:109 - Making POST request to: http://localhost:5030/api/v0/transfers/downloads/buk4
2025-07-09 22:05:45 - newmusic.soulseek_client - DEBUG - _make_request:110 - Headers: {'Content-Type': 'application/json', 'X-API-Key': '1234567891234567'}
2025-07-09 22:05:45 - newmusic.soulseek_client - DEBUG - _make_request:112 - JSON payload: [{'filename': '@@bmlwc\\Soulseek Downloads\\c34wkpcv\\Relaxing Synthwave Top 105\\083 - Virtual Mage - Aether.mp3', 'size': 8344437, 'path': 'E:\\Broque Projects\\newMusic\\downloads'}]
2025-07-09 22:05:46 - newmusic.soulseek_client - DEBUG - _make_request:121 - Response status: 201
2025-07-09 22:05:46 - newmusic.soulseek_client - DEBUG - _make_request:122 - Response text: ...
2025-07-09 22:05:46 - newmusic.soulseek_client - INFO - download:336 - [SUCCESS] Started download: @@bmlwc\Soulseek Downloads\c34wkpcv\Relaxing Synthwave Top 105\083 - Virtual Mage - Aether.mp3 from buk4

View file

@ -237,91 +237,267 @@ class SearchResultItem(QFrame):
def __init__(self, search_result, parent=None):
super().__init__(parent)
self.search_result = search_result
self.is_downloading = False
self.setup_ui()
def setup_ui(self):
self.setFixedHeight(60)
self.setFixedHeight(120) # Increased height for better spacing
self.setStyleSheet("""
SearchResultItem {
background: #282828;
border-radius: 6px;
border: 1px solid #404040;
margin: 2px;
background: qlineargradient(x1:0, y1:0, x2:0, y2:1,
stop:0 rgba(40, 40, 40, 0.95),
stop:1 rgba(30, 30, 30, 0.95));
border-radius: 12px;
border: 1px solid rgba(64, 64, 64, 0.8);
margin: 8px;
}
SearchResultItem:hover {
background: #333333;
border: 1px solid #1db954;
background: qlineargradient(x1:0, y1:0, x2:0, y2:1,
stop:0 rgba(51, 51, 51, 0.95),
stop:1 rgba(40, 40, 40, 0.95));
border: 1px solid rgba(29, 185, 84, 0.6);
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);
}
""")
layout = QHBoxLayout(self)
layout.setContentsMargins(15, 10, 15, 10)
layout.setSpacing(12)
layout.setContentsMargins(20, 15, 20, 15)
layout.setSpacing(20)
# File info
info_layout = QVBoxLayout()
info_layout.setSpacing(3)
# Album art placeholder
album_art = QLabel()
album_art.setFixedSize(80, 80)
album_art.setStyleSheet("""
QLabel {
background: qlineargradient(x1:0, y1:0, x2:1, y2:1,
stop:0 rgba(29, 185, 84, 0.3),
stop:1 rgba(29, 185, 84, 0.1));
border-radius: 8px;
border: 2px solid rgba(29, 185, 84, 0.2);
}
""")
album_art.setAlignment(Qt.AlignmentFlag.AlignCenter)
album_art.setText("🎵")
album_art.setFont(QFont("Arial", 24))
# Filename
filename_label = QLabel(self.search_result.filename)
filename_label.setFont(QFont("Arial", 10, QFont.Weight.Medium))
filename_label.setStyleSheet("color: #ffffff;")
filename_label.setWordWrap(True)
# Main content area
content_layout = QVBoxLayout()
content_layout.setSpacing(8)
# Details
details = []
if self.search_result.bitrate:
details.append(f"{self.search_result.bitrate}kbps")
details.append(self.search_result.quality.upper())
details.append(f"{self.search_result.size // (1024*1024)}MB")
details.append(f"User: {self.search_result.username}")
# Primary info (song/artist extracted from filename)
primary_info = self._extract_song_info()
details_label = QLabel("".join(details))
details_label.setFont(QFont("Arial", 9))
details_label.setStyleSheet("color: #b3b3b3;")
# Song title
song_title = QLabel(primary_info['title'])
song_title.setFont(QFont("Arial", 14, QFont.Weight.Bold))
song_title.setStyleSheet("color: #ffffff; margin-bottom: 2px;")
song_title.setWordWrap(True)
info_layout.addWidget(filename_label)
info_layout.addWidget(details_label)
# Artist/Album info
artist_info = QLabel(primary_info['artist'])
artist_info.setFont(QFont("Arial", 12, QFont.Weight.Normal))
artist_info.setStyleSheet("color: #b3b3b3; margin-bottom: 6px;")
# Quality indicator
quality_label = QLabel(f"{self.search_result.quality_score:.1f}")
quality_label.setFixedWidth(50)
quality_label.setAlignment(Qt.AlignmentFlag.AlignCenter)
quality_label.setFont(QFont("Arial", 9, QFont.Weight.Bold))
# Technical details
tech_layout = QHBoxLayout()
tech_layout.setSpacing(15)
# Quality badge
quality_badge = self._create_quality_badge()
tech_layout.addWidget(quality_badge)
# File size
size_mb = self.search_result.size // (1024*1024)
size_label = QLabel(f"{size_mb} MB")
size_label.setFont(QFont("Arial", 10, QFont.Weight.Medium))
size_label.setStyleSheet("color: #888888;")
tech_layout.addWidget(size_label)
# Duration if available
if self.search_result.duration:
duration_mins = self.search_result.duration // 60
duration_secs = self.search_result.duration % 60
duration_label = QLabel(f"{duration_mins}:{duration_secs:02d}")
duration_label.setFont(QFont("Arial", 10, QFont.Weight.Medium))
duration_label.setStyleSheet("color: #888888;")
tech_layout.addWidget(duration_label)
tech_layout.addStretch()
# User info
user_layout = QHBoxLayout()
user_layout.setSpacing(10)
# User avatar placeholder
user_avatar = QLabel("👤")
user_avatar.setFont(QFont("Arial", 14))
user_avatar.setStyleSheet("color: #1db954;")
# Username
username_label = QLabel(self.search_result.username)
username_label.setFont(QFont("Arial", 11, QFont.Weight.Medium))
username_label.setStyleSheet("color: #1db954;")
# Upload speed indicator
speed_indicator = self._create_speed_indicator()
user_layout.addWidget(user_avatar)
user_layout.addWidget(username_label)
user_layout.addWidget(speed_indicator)
user_layout.addStretch()
content_layout.addWidget(song_title)
content_layout.addWidget(artist_info)
content_layout.addLayout(tech_layout)
content_layout.addLayout(user_layout)
content_layout.addStretch()
# Action area
action_layout = QVBoxLayout()
action_layout.setSpacing(10)
action_layout.setAlignment(Qt.AlignmentFlag.AlignCenter)
# Quality score
quality_score = QLabel(f"{self.search_result.quality_score:.1f}")
quality_score.setAlignment(Qt.AlignmentFlag.AlignCenter)
quality_score.setFont(QFont("Arial", 12, QFont.Weight.Bold))
if self.search_result.quality_score >= 0.9:
quality_label.setStyleSheet("color: #1db954;")
quality_score.setStyleSheet("color: #1db954; background: rgba(29, 185, 84, 0.1); padding: 4px 8px; border-radius: 6px;")
elif self.search_result.quality_score >= 0.7:
quality_label.setStyleSheet("color: #ffa500;")
quality_score.setStyleSheet("color: #ffa500; background: rgba(255, 165, 0, 0.1); padding: 4px 8px; border-radius: 6px;")
else:
quality_label.setStyleSheet("color: #e22134;")
quality_score.setStyleSheet("color: #e22134; background: rgba(226, 33, 52, 0.1); padding: 4px 8px; border-radius: 6px;")
# Download button
download_btn = QPushButton("📥 Download")
download_btn.setFixedSize(90, 30)
download_btn.clicked.connect(self.request_download)
download_btn.setStyleSheet("""
self.download_btn = QPushButton("⬇️ Download")
self.download_btn.setFixedSize(120, 40)
self.download_btn.clicked.connect(self.request_download)
self.download_btn.setStyleSheet("""
QPushButton {
background: rgba(29, 185, 84, 0.2);
border: 1px solid #1db954;
border-radius: 15px;
color: #1db954;
font-size: 9px;
background: qlineargradient(x1:0, y1:0, x2:0, y2:1,
stop:0 rgba(29, 185, 84, 0.9),
stop:1 rgba(24, 156, 71, 0.9));
border: none;
border-radius: 20px;
color: #000000;
font-size: 12px;
font-weight: bold;
}
QPushButton:hover {
background: #1db954;
color: #000000;
background: qlineargradient(x1:0, y1:0, x2:0, y2:1,
stop:0 rgba(30, 215, 96, 1.0),
stop:1 rgba(25, 180, 80, 1.0));
transform: translateY(-1px);
}
QPushButton:pressed {
background: qlineargradient(x1:0, y1:0, x2:0, y2:1,
stop:0 rgba(24, 156, 71, 1.0),
stop:1 rgba(20, 130, 60, 1.0));
}
""")
layout.addLayout(info_layout)
layout.addStretch()
layout.addWidget(quality_label)
layout.addWidget(download_btn)
action_layout.addWidget(quality_score)
action_layout.addWidget(self.download_btn)
action_layout.addStretch()
layout.addWidget(album_art)
layout.addLayout(content_layout)
layout.addLayout(action_layout)
def _extract_song_info(self):
"""Extract song title and artist from filename"""
filename = self.search_result.filename
# Remove file extension
name_without_ext = filename.rsplit('.', 1)[0]
# Common patterns for artist - title separation
separators = [' - ', ' ', '', '_-_', ' | ']
for sep in separators:
if sep in name_without_ext:
parts = name_without_ext.split(sep, 1)
return {
'title': parts[1].strip(),
'artist': parts[0].strip()
}
# If no separator found, use filename as title
return {
'title': name_without_ext,
'artist': 'Unknown Artist'
}
def _create_quality_badge(self):
"""Create a quality indicator badge"""
quality = self.search_result.quality.upper()
bitrate = self.search_result.bitrate
if quality == 'FLAC':
badge_text = "FLAC"
badge_color = "#1db954"
elif bitrate and bitrate >= 320:
badge_text = f"{bitrate}k"
badge_color = "#1db954"
elif bitrate and bitrate >= 256:
badge_text = f"{bitrate}k"
badge_color = "#ffa500"
elif bitrate and bitrate >= 192:
badge_text = f"{bitrate}k"
badge_color = "#ffaa00"
else:
badge_text = quality
badge_color = "#e22134"
badge = QLabel(badge_text)
badge.setFont(QFont("Arial", 9, QFont.Weight.Bold))
badge.setAlignment(Qt.AlignmentFlag.AlignCenter)
badge.setFixedSize(60, 24)
badge.setStyleSheet(f"""
QLabel {{
background: {badge_color};
color: #000000;
border-radius: 12px;
padding: 2px 8px;
}}
""")
return badge
def _create_speed_indicator(self):
"""Create upload speed indicator"""
speed = self.search_result.upload_speed
slots = self.search_result.free_upload_slots
if slots > 0 and speed > 100:
indicator_color = "#1db954"
speed_text = "🚀 Fast"
elif slots > 0:
indicator_color = "#ffa500"
speed_text = "⚡ Available"
else:
indicator_color = "#e22134"
speed_text = "⏳ Queued"
indicator = QLabel(speed_text)
indicator.setFont(QFont("Arial", 9, QFont.Weight.Medium))
indicator.setStyleSheet(f"color: {indicator_color};")
return indicator
def request_download(self):
self.download_requested.emit(self.search_result)
if not self.is_downloading:
self.is_downloading = True
self.download_btn.setText("⏳ Downloading...")
self.download_btn.setEnabled(False)
self.download_requested.emit(self.search_result)
def reset_download_state(self):
"""Reset the download button state"""
self.is_downloading = False
self.download_btn.setText("⬇️ Download")
self.download_btn.setEnabled(True)
class DownloadItem(QFrame):
def __init__(self, title: str, artist: str, status: str, progress: int = 0, parent=None):
@ -881,113 +1057,6 @@ class DownloadsPage(QWidget):
self.download_threads.remove(thread)
thread.deleteLater()
def explore_slskd_api(self):
"""Explore slskd API endpoints to find the correct download endpoint"""
if not self.soulseek_client:
QMessageBox.warning(self, "Error", "Soulseek client not available")
return
# Stop any existing exploration thread
if self.explore_thread and self.explore_thread.isRunning():
self.explore_thread.stop()
self.explore_thread.wait(1000) # Wait up to 1 second
if self.explore_thread.isRunning():
self.explore_thread.terminate()
# Create and track new exploration thread
self.explore_thread = ExploreApiThread(self.soulseek_client)
self.explore_thread.exploration_completed.connect(self.on_api_exploration_completed)
self.explore_thread.exploration_failed.connect(self.on_api_exploration_failed)
self.explore_thread.finished.connect(self.on_explore_thread_finished)
self.explore_thread.start()
def on_api_exploration_completed(self, api_info):
"""Handle API exploration results"""
message = "slskd API Exploration Results:\n\n"
if api_info.get('swagger_available'):
message += "✓ Swagger Documentation Available\n\n"
download_endpoints = api_info.get('download_endpoints', {})
if download_endpoints:
message += "Download/Transfer Endpoints Found:\n"
for path, methods in download_endpoints.items():
message += f" {path}: {list(methods.keys())}\n"
else:
message += "No download/transfer endpoints found in Swagger docs\n"
else:
message += "✗ Swagger Documentation Not Available\n\n"
available_endpoints = api_info.get('available_endpoints', {})
if available_endpoints:
message += "Available Endpoints Found:\n"
for endpoint, status in available_endpoints.items():
message += f" {endpoint}: {status}\n"
else:
message += "No endpoints found\n"
message += f"\nBase URL: {api_info.get('base_url', 'Unknown')}"
message += f"\n\nYou can also check: {api_info.get('base_url', 'http://localhost:5030')}/swagger"
QMessageBox.information(self, "API Exploration Results", message)
def on_api_exploration_failed(self, error_msg):
"""Handle API exploration failure"""
QMessageBox.critical(self, "API Exploration Failed", f"Failed to explore API: {error_msg}")
def on_explore_thread_finished(self):
"""Clean up when explore thread finishes"""
if self.explore_thread:
self.explore_thread.deleteLater()
self.explore_thread = None
def get_session_info(self):
"""Get slskd session info including version"""
if not self.soulseek_client:
QMessageBox.warning(self, "Error", "Soulseek client not available")
return
# Stop any existing session thread
if self.session_thread and self.session_thread.isRunning():
self.session_thread.stop()
self.session_thread.wait(1000) # Wait up to 1 second
if self.session_thread.isRunning():
self.session_thread.terminate()
# Create and track new session thread
self.session_thread = SessionInfoThread(self.soulseek_client)
self.session_thread.session_info_completed.connect(self.on_session_info_completed)
self.session_thread.session_info_failed.connect(self.on_session_info_failed)
self.session_thread.finished.connect(self.on_session_thread_finished)
self.session_thread.start()
def on_session_info_completed(self, session_info):
"""Handle session info results"""
message = "slskd Session Information:\n\n"
if session_info:
for key, value in session_info.items():
message += f"{key}: {value}\n"
else:
message += "No session information available"
message += f"\n\nManual Steps:\n"
message += f"1. Open: http://localhost:5030\n"
message += f"2. Press F12 → Network tab\n"
message += f"3. Search for a file\n"
message += f"4. Click Download\n"
message += f"5. Check the HTTP request in Network tab\n"
message += f"6. Note the endpoint, method, and payload"
QMessageBox.information(self, "slskd Session Info", message)
def on_session_info_failed(self, error_msg):
"""Handle session info failure"""
QMessageBox.critical(self, "Session Info Failed", f"Failed to get session info: {error_msg}")
def on_session_thread_finished(self):
"""Clean up when session thread finishes"""
if self.session_thread:
self.session_thread.deleteLater()
self.session_thread = None
def cleanup_all_threads(self):
"""Stop and cleanup all active threads"""
@ -1097,47 +1166,9 @@ class DownloadsPage(QWidget):
}
""")
# API Explorer button (for debugging)
explore_btn = QPushButton("🔍 Explore API")
explore_btn.setFixedHeight(35)
explore_btn.clicked.connect(self.explore_slskd_api)
explore_btn.setStyleSheet("""
QPushButton {
background: transparent;
border: 1px solid #1db954;
border-radius: 17px;
color: #1db954;
font-size: 11px;
font-weight: bold;
}
QPushButton:hover {
background: rgba(29, 185, 84, 0.1);
}
""")
# Session Info button (for debugging)
session_btn = QPushButton(" Session Info")
session_btn.setFixedHeight(35)
session_btn.clicked.connect(self.get_session_info)
session_btn.setStyleSheet("""
QPushButton {
background: transparent;
border: 1px solid #ffa500;
border-radius: 17px;
color: #ffa500;
font-size: 11px;
font-weight: bold;
}
QPushButton:hover {
background: rgba(255, 165, 0, 0.1);
}
""")
controls_layout.addWidget(controls_title)
controls_layout.addWidget(pause_btn)
controls_layout.addWidget(clear_btn)
controls_layout.addWidget(explore_btn)
controls_layout.addWidget(session_btn)
# Download stats
stats_frame = QFrame()