|
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 |
|
""" |
|
|
|
|
|
client = Client("KingNish/Instant-Video") |
|
|
|
|
|
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. Повторите попытку позже.") |
|
|
|
|
|
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() |
|
|