Spaces:
Runtime error
Runtime error
from time import sleep | |
from typing import Any, Dict, Tuple, Optional | |
import gradio | |
import DeepFakeAI.globals | |
from DeepFakeAI import wording | |
from DeepFakeAI.capturer import get_video_frame_total | |
from DeepFakeAI.uis import core as ui | |
from DeepFakeAI.uis.typing import Update | |
from DeepFakeAI.utilities import is_video | |
TRIM_FRAME_START_SLIDER : Optional[gradio.Slider] = None | |
TRIM_FRAME_END_SLIDER : Optional[gradio.Slider] = None | |
def render() -> None: | |
global TRIM_FRAME_START_SLIDER | |
global TRIM_FRAME_END_SLIDER | |
with gradio.Box(): | |
trim_frame_start_slider_args : Dict[str, Any] = { | |
'label': wording.get('trim_frame_start_slider_label'), | |
'step': 1, | |
'visible': False | |
} | |
trim_frame_end_slider_args : Dict[str, Any] = { | |
'label': wording.get('trim_frame_end_slider_label'), | |
'step': 1, | |
'visible': False | |
} | |
if is_video(DeepFakeAI.globals.target_path): | |
video_frame_total = get_video_frame_total(DeepFakeAI.globals.target_path) | |
trim_frame_start_slider_args['value'] = DeepFakeAI.globals.trim_frame_start or 0 | |
trim_frame_start_slider_args['maximum'] = video_frame_total | |
trim_frame_start_slider_args['visible'] = True | |
trim_frame_end_slider_args['value'] = DeepFakeAI.globals.trim_frame_end or video_frame_total | |
trim_frame_end_slider_args['maximum'] = video_frame_total | |
trim_frame_end_slider_args['visible'] = True | |
with gradio.Row(): | |
TRIM_FRAME_START_SLIDER = gradio.Slider(**trim_frame_start_slider_args) | |
TRIM_FRAME_END_SLIDER = gradio.Slider(**trim_frame_end_slider_args) | |
def listen() -> None: | |
target_file = ui.get_component('target_file') | |
if target_file: | |
target_file.change(remote_update, outputs = [ TRIM_FRAME_START_SLIDER, TRIM_FRAME_END_SLIDER ]) | |
TRIM_FRAME_START_SLIDER.change(lambda value : update_number('trim_frame_start', int(value)), inputs = TRIM_FRAME_START_SLIDER, outputs = TRIM_FRAME_START_SLIDER) | |
TRIM_FRAME_END_SLIDER.change(lambda value : update_number('trim_frame_end', int(value)), inputs = TRIM_FRAME_END_SLIDER, outputs = TRIM_FRAME_END_SLIDER) | |
def remote_update() -> Tuple[Update, Update]: | |
sleep(0.1) | |
if is_video(DeepFakeAI.globals.target_path): | |
video_frame_total = get_video_frame_total(DeepFakeAI.globals.target_path) | |
DeepFakeAI.globals.trim_frame_start = 0 | |
DeepFakeAI.globals.trim_frame_end = video_frame_total | |
return gradio.update(value = 0, maximum = video_frame_total, visible = True), gradio.update(value = video_frame_total, maximum = video_frame_total, visible = True) | |
return gradio.update(value = None, maximum = None, visible = False), gradio.update(value = None, maximum = None, visible = False) | |
def update_number(name : str, value : int) -> Update: | |
setattr(DeepFakeAI.globals, name, value) | |
return gradio.update(value = value) | |