Spaces:
Running
Running
| from typing import Tuple, Optional | |
| import gradio | |
| import facefusion.globals | |
| from facefusion import wording | |
| from facefusion.core import limit_resources, conditional_process | |
| from facefusion.uis.core import get_ui_component | |
| from facefusion.normalizer import normalize_output_path | |
| from facefusion.filesystem import is_image, is_video, clear_temp | |
| OUTPUT_IMAGE : Optional[gradio.Image] = None | |
| OUTPUT_VIDEO : Optional[gradio.Video] = None | |
| OUTPUT_START_BUTTON : Optional[gradio.Button] = None | |
| OUTPUT_CLEAR_BUTTON : Optional[gradio.Button] = None | |
| def render() -> None: | |
| global OUTPUT_IMAGE | |
| global OUTPUT_VIDEO | |
| global OUTPUT_START_BUTTON | |
| global OUTPUT_CLEAR_BUTTON | |
| OUTPUT_IMAGE = gradio.Image( | |
| label = wording.get('output_image_or_video_label'), | |
| visible = False | |
| ) | |
| OUTPUT_VIDEO = gradio.Video( | |
| label = wording.get('output_image_or_video_label') | |
| ) | |
| OUTPUT_START_BUTTON = gradio.Button( | |
| value = wording.get('start_button_label'), | |
| variant = 'primary', | |
| size = 'sm' | |
| ) | |
| OUTPUT_CLEAR_BUTTON = gradio.Button( | |
| value = wording.get('clear_button_label'), | |
| size = 'sm' | |
| ) | |
| def listen() -> None: | |
| output_path_textbox = get_ui_component('output_path_textbox') | |
| if output_path_textbox: | |
| OUTPUT_START_BUTTON.click(start, inputs = output_path_textbox, outputs = [ OUTPUT_IMAGE, OUTPUT_VIDEO ]) | |
| OUTPUT_CLEAR_BUTTON.click(clear, outputs = [ OUTPUT_IMAGE, OUTPUT_VIDEO ]) | |
| def start(output_path : str) -> Tuple[gradio.Image, gradio.Video]: | |
| facefusion.globals.output_path = normalize_output_path(facefusion.globals.source_paths, facefusion.globals.target_path, output_path) | |
| limit_resources() | |
| conditional_process() | |
| if is_image(facefusion.globals.output_path): | |
| return gradio.Image(value = facefusion.globals.output_path, visible = True), gradio.Video(value = None, visible = False) | |
| if is_video(facefusion.globals.output_path): | |
| return gradio.Image(value = None, visible = False), gradio.Video(value = facefusion.globals.output_path, visible = True) | |
| return gradio.Image(), gradio.Video() | |
| def clear() -> Tuple[gradio.Image, gradio.Video]: | |
| if facefusion.globals.target_path: | |
| clear_temp(facefusion.globals.target_path) | |
| return gradio.Image(value = None), gradio.Video(value = None) | |