Instant-Video / app.py
Rooni's picture
Update app.py
a9d9267 verified
raw
history blame
3.61 kB
import gradio as gr
import os
from gradio_client import Client
import time
MORE = """ ## TRY Other Models
### JARVIS: Your VOICE Assistant -> https://huggingface.co/spaces/KingNish/JARVIS
### Instant Image: 4k images in 5 Second -> https://huggingface.co/spaces/KingNish/Instant-Image
"""
# Gradio Client
client = Client("KingNish/Instant-Video")
# Function
def generate_image(prompt, base="Anime", motion="", step=8, progress=gr.Progress()):
retries = 3
for i in range(retries):
try:
result = client.predict(
prompt=prompt,
base=base,
motion=motion,
step=step,
api_name="/generate_image_1"
)
video_path = result["video"]
return video_path
except ValueError as e:
print(f"Ошибка подключения. Попытка {i+1} из {retries}.")
raise gr.Info(f"Ошибка подключения. Попытка {i+1} из {retries}.")
time.sleep(5) # Пауза перед следующей попыткой
raise gr.Error("Не удалось подключиться к API. Повторите попытку позже.")
# Gradio Interface
with gr.Blocks(css="style.css") as demo:
with gr.Group():
with gr.Row():
prompt = gr.Textbox(
label='Описание'
)
with gr.Row():
select_base = gr.Dropdown(
label='Стиль',
choices=[
"Cartoon",
"Realistic",
"3d",
"Anime",
],
value="Anime",
interactive=True
)
select_motion = gr.Dropdown(
label='Движение',
choices=[
("Default", ""),
("Zoom in", "guoyww/animatediff-motion-lora-zoom-in"),
("Zoom out", "guoyww/animatediff-motion-lora-zoom-out"),
("Tilt up", "guoyww/animatediff-motion-lora-tilt-up"),
("Tilt down", "guoyww/animatediff-motion-lora-tilt-down"),
("Pan left", "guoyww/animatediff-motion-lora-pan-left"),
("Pan right", "guoyww/animatediff-motion-lora-pan-right"),
("Roll left", "guoyww/animatediff-motion-lora-rolling-anticlockwise"),
("Roll right", "guoyww/animatediff-motion-lora-rolling-clockwise"),
],
value="",
interactive=True
)
select_step = gr.Dropdown(
label='Шаги вывода',
choices=[
('1-Step', 1),
('2-Step', 2),
('4-Step', 4),
('8-Step', 8),
],
value=4,
interactive=True
)
submit = gr.Button(
scale=1,
variant='primary'
)
video = gr.Video(
label='Сгенерированое видео',
autoplay=True,
height=512,
width=512,
elem_id="video_output"
)
prompt.submit(
fn=generate_image,
inputs=[prompt, select_base, select_motion, select_step],
outputs=video,
)
submit.click(
fn=generate_image,
inputs=[prompt, select_base, select_motion, select_step],
outputs=video,
)
demo.queue().launch()