@@ -233,12 +233,16 @@ async def start_ffmpeg(
233233 if return_code not in safe_return_code and stderr :
234234 logger .error (f"FFmpeg Stderr Output: { str (stderr .decode ()).splitlines ()[0 ]} " )
235235 self .recording .status_info = RecordingStatus .RECORDING_ERROR
236- self .app .record_manager .stop_recording (self .recording )
237- await self .app .record_card_manager .update_card (self .recording )
238- self .app .page .pubsub .send_others_on_topic ("update" , self .recording )
239- await self .app .snack_bar .show_snack_bar (
240- record_name + " " + self ._ ["record_stream_error" ], duration = 2000
241- )
236+
237+ try :
238+ self .app .record_manager .stop_recording (self .recording )
239+ await self .app .record_card_manager .update_card (self .recording )
240+ self .app .page .pubsub .send_others_on_topic ("update" , self .recording )
241+ await self .app .snack_bar .show_snack_bar (
242+ record_name + " " + self ._ ["record_stream_error" ], duration = 2000
243+ )
244+ except Exception as e :
245+ logger .debug (f"Failed to update UI: { e } " )
242246
243247 if return_code in safe_return_code :
244248 if self .recording .monitor_status :
@@ -255,36 +259,63 @@ async def start_ffmpeg(
255259 self .recording .recording = False
256260 logger .success (f"Live recording completed: { record_name } " )
257261
258- self .recording .update ({"display_title" : display_title })
259- await self .app .record_card_manager .update_card (self .recording )
260- self .app .page .pubsub .send_others_on_topic ("update" , self .recording )
261- if self .app .recording_enabled and process in self .app .process_manager .ffmpeg_processes :
262- self .app .page .run_task (self .app .record_manager .check_if_live , self .recording )
263- else :
264- self .recording .status_info = RecordingStatus .NOT_RECORDING_SPACE
262+ try :
263+ self .recording .update ({"display_title" : display_title })
264+ await self .app .record_card_manager .update_card (self .recording )
265+ self .app .page .pubsub .send_others_on_topic ("update" , self .recording )
266+ if self .app .recording_enabled and process in self .app .process_manager .ffmpeg_processes :
267+ self .app .page .run_task (self .app .record_manager .check_if_live , self .recording )
268+ else :
269+ self .recording .status_info = RecordingStatus .NOT_RECORDING_SPACE
270+ except Exception as e :
271+ logger .debug (f"Failed to update UI: { e } " )
265272
266273 if self .user_config .get ("convert_to_mp4" ) and self .save_format == "ts" :
267274 if self .segment_record :
268275 file_paths = utils .get_file_paths (os .path .dirname (save_file_path ))
269276 prefix = os .path .basename (save_file_path ).rsplit ("_" , maxsplit = 1 )[0 ]
270277 for path in file_paths :
271278 if prefix in path :
272- self .app .page .run_task (self .converts_mp4 , path , self .user_config ["delete_original" ])
279+ try :
280+ self .app .page .run_task (
281+ self .converts_mp4 , path , self .user_config ["delete_original" ]
282+ )
283+ except Exception as e :
284+ logger .error (f"Failed to convert video: { e } " )
285+ await self .converts_mp4 (path , self .user_config ["delete_original" ])
273286 else :
274- self .app .page .run_task (self .converts_mp4 , save_file_path , self .user_config ["delete_original" ])
287+ try :
288+ self .app .page .run_task (
289+ self .converts_mp4 , save_file_path , self .user_config ["delete_original" ]
290+ )
291+ except Exception as e :
292+ logger .error (f"Failed to convert video: { e } " )
293+ await self .converts_mp4 (save_file_path , self .user_config ["delete_original" ])
275294
276295 if self .user_config .get ("execute_custom_script" ) and script_command :
277296 logger .info ("Prepare a direct script in the background" )
278- self .app .page .run_task (
279- self .custom_script_execute ,
280- script_command ,
281- record_name ,
282- save_file_path ,
283- save_type ,
284- self .segment_record ,
285- self .user_config .get ("convert_to_mp4" )
286- )
287- logger .success ("Successfully added script execution" )
297+ try :
298+ self .app .page .run_task (
299+ self .custom_script_execute ,
300+ script_command ,
301+ record_name ,
302+ save_file_path ,
303+ save_type ,
304+ self .segment_record ,
305+ self .user_config .get ("convert_to_mp4" )
306+ )
307+ logger .success ("Successfully added script execution" )
308+ except Exception as e :
309+ logger .error (f"Failed to execute custom script: { e } " )
310+ await self .custom_script_execute (
311+ script_command ,
312+ record_name ,
313+ save_file_path ,
314+ save_type ,
315+ self .segment_record ,
316+ self .user_config .get ("convert_to_mp4" )
317+ )
318+
288319
289320 except Exception as e :
290321 logger .error (f"An error occurred during the subprocess execution: { e } " )
@@ -409,4 +440,4 @@ def get_headers_params(live_url, platform_key):
409440 "lang" : "referer:https://www.lang.live" ,
410441 "shopee" : "origin:" + live_domain
411442 }
412- return record_headers .get (platform_key )
443+ return record_headers .get (platform_key )
0 commit comments