deepfuze
This commit is contained in:
@@ -0,0 +1,88 @@
|
||||
from typing import Tuple, Optional
|
||||
from time import sleep
|
||||
import gradio
|
||||
|
||||
import deepfuze.globals
|
||||
from deepfuze import process_manager, wording
|
||||
from deepfuze.core import conditional_process
|
||||
from deepfuze.memory import limit_system_memory
|
||||
from deepfuze.normalizer import normalize_output_path
|
||||
from deepfuze.uis.core import get_ui_component
|
||||
from deepfuze.filesystem import clear_temp, is_image, is_video
|
||||
|
||||
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
|
||||
OUTPUT_STOP_BUTTON : Optional[gradio.Button] = None
|
||||
|
||||
|
||||
def render() -> None:
|
||||
global OUTPUT_IMAGE
|
||||
global OUTPUT_VIDEO
|
||||
global OUTPUT_START_BUTTON
|
||||
global OUTPUT_STOP_BUTTON
|
||||
global OUTPUT_CLEAR_BUTTON
|
||||
|
||||
OUTPUT_IMAGE = gradio.Image(
|
||||
label = wording.get('uis.output_image_or_video'),
|
||||
visible = False
|
||||
)
|
||||
OUTPUT_VIDEO = gradio.Video(
|
||||
label = wording.get('uis.output_image_or_video')
|
||||
)
|
||||
OUTPUT_START_BUTTON = gradio.Button(
|
||||
value = wording.get('uis.start_button'),
|
||||
variant = 'primary',
|
||||
size = 'sm'
|
||||
)
|
||||
OUTPUT_STOP_BUTTON = gradio.Button(
|
||||
value = wording.get('uis.stop_button'),
|
||||
variant = 'primary',
|
||||
size = 'sm',
|
||||
visible = False
|
||||
)
|
||||
OUTPUT_CLEAR_BUTTON = gradio.Button(
|
||||
value = wording.get('uis.clear_button'),
|
||||
size = 'sm'
|
||||
)
|
||||
|
||||
|
||||
def listen() -> None:
|
||||
output_path_textbox = get_ui_component('output_path_textbox')
|
||||
if output_path_textbox:
|
||||
OUTPUT_START_BUTTON.click(start, outputs = [ OUTPUT_START_BUTTON, OUTPUT_STOP_BUTTON ])
|
||||
OUTPUT_START_BUTTON.click(process, outputs = [ OUTPUT_IMAGE, OUTPUT_VIDEO, OUTPUT_START_BUTTON, OUTPUT_STOP_BUTTON ])
|
||||
OUTPUT_STOP_BUTTON.click(stop, outputs = [ OUTPUT_START_BUTTON, OUTPUT_STOP_BUTTON ])
|
||||
OUTPUT_CLEAR_BUTTON.click(clear, outputs = [ OUTPUT_IMAGE, OUTPUT_VIDEO ])
|
||||
|
||||
|
||||
def start() -> Tuple[gradio.Button, gradio.Button]:
|
||||
while not process_manager.is_processing():
|
||||
sleep(0.5)
|
||||
return gradio.Button(visible = False), gradio.Button(visible = True)
|
||||
|
||||
|
||||
def process() -> Tuple[gradio.Image, gradio.Video, gradio.Button, gradio.Button]:
|
||||
normed_output_path = normalize_output_path(deepfuze.globals.target_path, deepfuze.globals.output_path)
|
||||
if deepfuze.globals.system_memory_limit > 0:
|
||||
limit_system_memory(deepfuze.globals.system_memory_limit)
|
||||
conditional_process()
|
||||
if is_image(normed_output_path):
|
||||
return gradio.Image(value = normed_output_path, visible = True), gradio.Video(value = None, visible = False), gradio.Button(visible = True), gradio.Button(visible = False)
|
||||
if is_video(normed_output_path):
|
||||
return gradio.Image(value = None, visible = False), gradio.Video(value = normed_output_path, visible = True), gradio.Button(visible = True), gradio.Button(visible = False)
|
||||
return gradio.Image(value = None), gradio.Video(value = None), gradio.Button(visible = True), gradio.Button(visible = False)
|
||||
|
||||
|
||||
def stop() -> Tuple[gradio.Button, gradio.Button]:
|
||||
process_manager.stop()
|
||||
return gradio.Button(visible = True), gradio.Button(visible = False)
|
||||
|
||||
|
||||
def clear() -> Tuple[gradio.Image, gradio.Video]:
|
||||
while process_manager.is_processing():
|
||||
sleep(0.5)
|
||||
if deepfuze.globals.target_path:
|
||||
clear_temp(deepfuze.globals.target_path)
|
||||
return gradio.Image(value = None), gradio.Video(value = None)
|
||||
Reference in New Issue
Block a user