77
88import requests
99
10+ # Get package version for debugging
11+ try :
12+ from importlib .metadata import version
13+ AUDIO_SEPARATOR_VERSION = version ("audio-separator" )
14+ except ImportError :
15+ try :
16+ import pkg_resources
17+ AUDIO_SEPARATOR_VERSION = pkg_resources .get_distribution ("audio-separator" ).version
18+ except Exception :
19+ AUDIO_SEPARATOR_VERSION = "unknown"
20+
1021
1122class AudioSeparatorAPIClient :
1223 """Client for interacting with a remotely deployed Audio Separator API."""
@@ -198,7 +209,7 @@ def separate_audio_and_wait(
198209
199210 # Submit the separation job with all parameters
200211 models_desc = models or ([model ] if model else ["default" ])
201- self .logger .info (f"Submitting separation job for '{ file_path } ' with models: { models_desc } " )
212+ self .logger .info (f"Submitting separation job for '{ file_path } ' with models: { models_desc } (audio-separator v { AUDIO_SEPARATOR_VERSION } ) " )
202213
203214 result = self .separate_audio (
204215 file_path ,
@@ -262,16 +273,27 @@ def separate_audio_and_wait(
262273 # Check if completed
263274 if current_status == "completed" :
264275 self .logger .info ("✅ Separation completed!" )
276+
277+ files_list = status .get ("files" , [])
278+ self .logger .info (f"🔍 Job status returned { len (files_list )} files" )
279+ for i , file in enumerate (files_list ):
280+ self .logger .info (f" [{ i } ] '{ file } ' (len={ len (file )} , repr={ repr (file )} )" )
265281
266- result = {"task_id" : task_id , "status" : "completed" , "files" : status . get ( "files" , []) }
282+ result = {"task_id" : task_id , "status" : "completed" , "files" : files_list }
267283
268284 # Download files if requested
269285 if download :
270286 downloaded_files = []
271- self .logger .info (f"📥 Downloading { len (status .get ('files' , []))} output files..." )
287+ files_list = status .get ("files" , [])
288+ self .logger .info (f"📥 Downloading { len (files_list )} output files..." )
289+
290+ # Log the filenames we're trying to download for debugging
291+ self .logger .info (f"🔍 Files to download: { files_list } " )
272292
273- for filename in status . get ( "files" , [] ):
293+ for i , filename in enumerate ( files_list ):
274294 try :
295+ self .logger .info (f"🔍 [{ i + 1 } /{ len (files_list )} ] Attempting to download: '{ filename } ' (len={ len (filename )} )" )
296+
275297 if output_dir :
276298 output_path = f"{ output_dir .rstrip ('/' )} /{ filename } "
277299 else :
@@ -282,6 +304,13 @@ def separate_audio_and_wait(
282304 self .logger .info (f" ✅ Downloaded: { downloaded_path } " )
283305 except Exception as e :
284306 self .logger .error (f" ❌ Failed to download { filename } : { e } " )
307+
308+ # Try to get server version on download failure for debugging
309+ try :
310+ server_version = self .get_server_version ()
311+ self .logger .error (f"🔍 Server version when download failed: { server_version } " )
312+ except Exception as version_error :
313+ self .logger .error (f"🔍 Could not get server version: { version_error } " )
285314
286315 result ["downloaded_files" ] = downloaded_files
287316 self .logger .info (f"🎉 Successfully downloaded { len (downloaded_files )} files!" )
@@ -322,7 +351,29 @@ def download_file(self, task_id: str, filename: str, output_path: Optional[str]
322351 try :
323352 # URL encode the filename to handle spaces and special characters
324353 encoded_filename = quote (filename , safe = '' )
325- response = self .session .get (f"{ self .api_url } /download/{ task_id } /{ encoded_filename } " , timeout = 60 )
354+ download_url = f"{ self .api_url } /download/{ task_id } /{ encoded_filename } "
355+
356+ # Debug logging to understand what's happening
357+ self .logger .info (f"🔍 Download details:" )
358+ self .logger .info (f" Original filename: '{ filename } '" )
359+ self .logger .info (f" Encoded filename: '{ encoded_filename } '" )
360+ self .logger .info (f" Download URL: { download_url } " )
361+ self .logger .info (f" Task ID: { task_id } " )
362+
363+ response = self .session .get (download_url , timeout = 60 )
364+
365+ # Log response details for debugging
366+ self .logger .info (f"🔍 Response status: { response .status_code } " )
367+ if response .status_code != 200 :
368+ try :
369+ self .logger .error (f"🔍 Response headers: { dict (response .headers )} " )
370+ except Exception :
371+ self .logger .error (f"🔍 Response headers: { response .headers } " )
372+ try :
373+ self .logger .error (f"🔍 Response text (first 500 chars): { response .text [:500 ]} " )
374+ except Exception :
375+ self .logger .error (f"🔍 Response text: <unavailable>" )
376+
326377 response .raise_for_status ()
327378
328379 with open (output_path , "wb" ) as f :
0 commit comments