mirror of
https://github.com/ihmily/StreamCap.git
synced 2026-05-22 19:59:51 +08:00
fix: handle component update errors when page disconnects
This commit is contained in:
@@ -233,12 +233,16 @@ class LiveStreamRecorder:
|
||||
if return_code not in safe_return_code and stderr:
|
||||
logger.error(f"FFmpeg Stderr Output: {str(stderr.decode()).splitlines()[0]}")
|
||||
self.recording.status_info = RecordingStatus.RECORDING_ERROR
|
||||
self.app.record_manager.stop_recording(self.recording)
|
||||
await self.app.record_card_manager.update_card(self.recording)
|
||||
self.app.page.pubsub.send_others_on_topic("update", self.recording)
|
||||
await self.app.snack_bar.show_snack_bar(
|
||||
record_name + " " + self._["record_stream_error"], duration=2000
|
||||
)
|
||||
|
||||
try:
|
||||
self.app.record_manager.stop_recording(self.recording)
|
||||
await self.app.record_card_manager.update_card(self.recording)
|
||||
self.app.page.pubsub.send_others_on_topic("update", self.recording)
|
||||
await self.app.snack_bar.show_snack_bar(
|
||||
record_name + " " + self._["record_stream_error"], duration=2000
|
||||
)
|
||||
except Exception as e:
|
||||
logger.debug(f"Failed to update UI: {e}")
|
||||
|
||||
if return_code in safe_return_code:
|
||||
if self.recording.monitor_status:
|
||||
@@ -255,13 +259,16 @@ class LiveStreamRecorder:
|
||||
self.recording.recording = False
|
||||
logger.success(f"Live recording completed: {record_name}")
|
||||
|
||||
self.recording.update({"display_title": display_title})
|
||||
await self.app.record_card_manager.update_card(self.recording)
|
||||
self.app.page.pubsub.send_others_on_topic("update", self.recording)
|
||||
if self.app.recording_enabled and process in self.app.process_manager.ffmpeg_processes:
|
||||
self.app.page.run_task(self.app.record_manager.check_if_live, self.recording)
|
||||
else:
|
||||
self.recording.status_info = RecordingStatus.NOT_RECORDING_SPACE
|
||||
try:
|
||||
self.recording.update({"display_title": display_title})
|
||||
await self.app.record_card_manager.update_card(self.recording)
|
||||
self.app.page.pubsub.send_others_on_topic("update", self.recording)
|
||||
if self.app.recording_enabled and process in self.app.process_manager.ffmpeg_processes:
|
||||
self.app.page.run_task(self.app.record_manager.check_if_live, self.recording)
|
||||
else:
|
||||
self.recording.status_info = RecordingStatus.NOT_RECORDING_SPACE
|
||||
except Exception as e:
|
||||
logger.debug(f"Failed to update UI: {e}")
|
||||
|
||||
if self.user_config.get("convert_to_mp4") and self.save_format == "ts":
|
||||
if self.segment_record:
|
||||
@@ -269,22 +276,46 @@ class LiveStreamRecorder:
|
||||
prefix = os.path.basename(save_file_path).rsplit("_", maxsplit=1)[0]
|
||||
for path in file_paths:
|
||||
if prefix in path:
|
||||
self.app.page.run_task(self.converts_mp4, path, self.user_config["delete_original"])
|
||||
try:
|
||||
self.app.page.run_task(
|
||||
self.converts_mp4, path, self.user_config["delete_original"]
|
||||
)
|
||||
except Exception as e:
|
||||
logger.error(f"Failed to convert video: {e}")
|
||||
await self.converts_mp4(path, self.user_config["delete_original"])
|
||||
else:
|
||||
self.app.page.run_task(self.converts_mp4, save_file_path, self.user_config["delete_original"])
|
||||
try:
|
||||
self.app.page.run_task(
|
||||
self.converts_mp4, save_file_path, self.user_config["delete_original"]
|
||||
)
|
||||
except Exception as e:
|
||||
logger.error(f"Failed to convert video: {e}")
|
||||
await self.converts_mp4(save_file_path, self.user_config["delete_original"])
|
||||
|
||||
if self.user_config.get("execute_custom_script") and script_command:
|
||||
logger.info("Prepare a direct script in the background")
|
||||
self.app.page.run_task(
|
||||
self.custom_script_execute,
|
||||
script_command,
|
||||
record_name,
|
||||
save_file_path,
|
||||
save_type,
|
||||
self.segment_record,
|
||||
self.user_config.get("convert_to_mp4")
|
||||
)
|
||||
logger.success("Successfully added script execution")
|
||||
try:
|
||||
self.app.page.run_task(
|
||||
self.custom_script_execute,
|
||||
script_command,
|
||||
record_name,
|
||||
save_file_path,
|
||||
save_type,
|
||||
self.segment_record,
|
||||
self.user_config.get("convert_to_mp4")
|
||||
)
|
||||
logger.success("Successfully added script execution")
|
||||
except Exception as e:
|
||||
logger.error(f"Failed to execute custom script: {e}")
|
||||
await self.custom_script_execute(
|
||||
script_command,
|
||||
record_name,
|
||||
save_file_path,
|
||||
save_type,
|
||||
self.segment_record,
|
||||
self.user_config.get("convert_to_mp4")
|
||||
)
|
||||
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"An error occurred during the subprocess execution: {e}")
|
||||
@@ -409,4 +440,4 @@ class LiveStreamRecorder:
|
||||
"lang": "referer:https://www.lang.live",
|
||||
"shopee": "origin:" + live_domain
|
||||
}
|
||||
return record_headers.get(platform_key)
|
||||
return record_headers.get(platform_key)
|
||||
Reference in New Issue
Block a user