diff --git a/facefusion/workflows/core.py b/facefusion/workflows/core.py index 003c7e2d..93b12fbd 100644 --- a/facefusion/workflows/core.py +++ b/facefusion/workflows/core.py @@ -1,4 +1,6 @@ -from facefusion import logger, process_manager, translator +from facefusion import logger, process_manager, state_manager, translator +from facefusion.temp_helper import clear_temp_directory, create_temp_directory +from facefusion.types import ErrorCode def is_process_stopping() -> bool: @@ -6,3 +8,17 @@ def is_process_stopping() -> bool: process_manager.end() logger.info(translator.get('processing_stopped'), __name__) return process_manager.is_pending() + + +#todo: no review needed - [workflow] copy of v4 setup task using the v3 target_path temp helpers +def setup() -> ErrorCode: + if create_temp_directory(state_manager.get_item('target_path')): + logger.debug(translator.get('creating_temp'), __name__) + return 0 + + +#todo: no review needed - [workflow] copy of v4 clear task using the v3 target_path temp helpers +def clear() -> ErrorCode: + if clear_temp_directory(state_manager.get_item('target_path')): + logger.debug(translator.get('clearing_temp'), __name__) + return 0 diff --git a/facefusion/workflows/image_to_image.py b/facefusion/workflows/image_to_image.py index 9af47856..8dcdf689 100644 --- a/facefusion/workflows/image_to_image.py +++ b/facefusion/workflows/image_to_image.py @@ -1,25 +1,27 @@ from functools import partial -from facefusion import ffmpeg -from facefusion import logger, process_manager, state_manager, translator +from facefusion import content_analyser, ffmpeg, logger, process_manager, state_manager, translator from facefusion.audio import create_empty_audio_frame -from facefusion.content_analyser import analyse_image from facefusion.filesystem import is_image from facefusion.processors.core import get_processors_modules -from facefusion.temp_helper import clear_temp_directory, create_temp_directory, get_temp_file_path +from facefusion.temp_helper import get_temp_file_path from facefusion.time_helper import calculate_end_time from facefusion.types import ErrorCode from facefusion.vision import conditional_merge_vision_mask, detect_image_resolution, extract_vision_mask, pack_resolution, read_static_image, read_static_images, restrict_image_resolution, scale_resolution, write_image -from facefusion.workflows.core import is_process_stopping +from facefusion.workflows.core import clear, is_process_stopping, setup +#todo: no review needed - [workflow] copy of v4 task list, analyse_image gates first and clear runs before setup and after finalize_image def process(start_time : float) -> ErrorCode: tasks =\ [ + analyse_image, + clear, setup, prepare_image, process_image, - partial(finalize_image, start_time) + partial(finalize_image, start_time), + clear ] process_manager.start() @@ -34,16 +36,10 @@ def process(start_time : float) -> ErrorCode: return 0 -def setup() -> ErrorCode: - if analyse_image(state_manager.get_item('target_path')): +#todo: no review needed - [security] copy of v4 analyse_image task, gates ahead of setup so no temp cleanup is needed on a hit +def analyse_image() -> ErrorCode: + if content_analyser.analyse_image(state_manager.get_item('target_path')): return 3 - - if clear_temp_directory(state_manager.get_item('target_path')): - logger.debug(translator.get('clearing_temp'), __name__) - - if create_temp_directory(state_manager.get_item('target_path')): - logger.debug(translator.get('creating_temp'), __name__) - return 0 @@ -95,6 +91,7 @@ def process_image() -> ErrorCode: return 0 +#todo: no review needed - [workflow] copy of v4 finalize_image task, temp clearing moved out into the clear task def finalize_image(start_time : float) -> ErrorCode: output_image_resolution = scale_resolution(detect_image_resolution(state_manager.get_item('target_path')), state_manager.get_item('output_image_scale')) @@ -104,9 +101,6 @@ def finalize_image(start_time : float) -> ErrorCode: else: logger.warn(translator.get('finalizing_image_skipped'), __name__) - logger.debug(translator.get('clearing_temp'), __name__) - clear_temp_directory(state_manager.get_item('target_path')) - if is_image(state_manager.get_item('output_path')): logger.info(translator.get('processing_image_succeeded').format(seconds = calculate_end_time(start_time)), __name__) else: diff --git a/facefusion/workflows/image_to_video.py b/facefusion/workflows/image_to_video.py index 241e81f6..055c6575 100644 --- a/facefusion/workflows/image_to_video.py +++ b/facefusion/workflows/image_to_video.py @@ -11,11 +11,11 @@ from facefusion.audio import create_empty_audio_frame, get_audio_frame, get_voic from facefusion.common_helper import get_first, get_middle from facefusion.filesystem import filter_audio_paths, is_video from facefusion.processors.core import get_processors_modules -from facefusion.temp_helper import clear_temp_directory, create_temp_directory, move_temp_file, resolve_temp_frame_set +from facefusion.temp_helper import move_temp_file, resolve_temp_frame_set from facefusion.time_helper import calculate_end_time from facefusion.types import ErrorCode, FrameSet, Resolution, VisionFrame from facefusion.vision import conditional_merge_vision_mask, detect_video_resolution, extract_vision_mask, pack_resolution, read_static_image, read_static_images, read_static_video_frame, restrict_trim_frame, restrict_video_fps, restrict_video_resolution, scale_resolution, select_video_frames, write_image -from facefusion.workflows.core import is_process_stopping +from facefusion.workflows.core import clear, is_process_stopping, setup #todo: needs review - [workflow] [critical: medium] task list starts with the shared tasks, workflow_mode appends the disk or stream specific tasks @@ -67,22 +67,6 @@ def analyse_video() -> ErrorCode: return 0 -#todo: no review needed - [workflow] copy of v4 clear task, clears temp ahead of setup and again after finalize_video -def clear() -> ErrorCode: - if clear_temp_directory(state_manager.get_item('target_path')): - logger.debug(translator.get('clearing_temp'), __name__) - - return 0 - - -#todo: no review needed - [workflow] copy of v4 setup task, analysis and clearing moved out into the analyse_video and clear tasks -def setup() -> ErrorCode: - if create_temp_directory(state_manager.get_item('target_path')): - logger.debug(translator.get('creating_temp'), __name__) - - return 0 - - def extract_frames() -> ErrorCode: trim_frame_start, trim_frame_end = restrict_trim_frame(state_manager.get_item('target_path'), state_manager.get_item('trim_frame_start'), state_manager.get_item('trim_frame_end')) output_video_resolution = scale_resolution(detect_video_resolution(state_manager.get_item('target_path')), state_manager.get_item('output_video_scale'))