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.utilities import is_image, is_video, normalize_output_path, 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_path, 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) | |