Spaces:
Running
Running
File size: 4,770 Bytes
cc50ae5 af96747 e4268e4 aecddc5 44f5493 5b51878 e4268e4 52f5bd3 a9d9267 839e57a b5b48b7 5b51878 8cf4129 57c5d1d 8cf4129 e4268e4 bca098b e4268e4 8cf4129 c60777d 44f5493 57c5d1d 44f5493 b5b48b7 44f5493 c60777d cc50ae5 d1a176f cc50ae5 b5b48b7 cc50ae5 d1a176f cc50ae5 b5b48b7 cc50ae5 57c5d1d cc50ae5 b5b48b7 cc50ae5 d1a176f cc50ae5 c60777d d1a176f cc50ae5 57c5d1d cc50ae5 e4268e4 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 |
import gradio as gr
import os
from gradio_client import Client, APIError
import time
import requests
from deep_translator import GoogleTranslator
from langdetect import detect
import re
# Gradio Client
client = Client("KingNish/Instant-Video")
# Function
def generate_image(prompt, base="Anime", motion="", step=8, progress=gr.Progress()):
language = detect(prompt)
if language != 'en':
prompt = GoogleTranslator(source=language, target='en').translate(prompt)
try:
result = client.predict(
prompt=prompt,
base=base,
motion=motion,
step=step,
api_name="/instant_video"
)
video_path = result["video"]
return video_path
except APIError as e:
error_message = str(e)
match = re.search(r'You have exceeded your GPU quota \((\d+:\d+:\d+) left vs. \d+s requested\). Please retry in (\d+:\d+:\d+)\.', error_message)
if match:
wait_time = match.group(2)
raise gr.Error(f"У модели сработало ограничение (Слишком часто), попробуйте ещё раз в {wait_time}")
else:
raise gr.Error("Произошла ошибка при подключении к API. Повторите попытку позже или обратитесь к администраторам Neurix.")
except ValueError as e:
print(f"Ошибка подключения.")
raise gr.Error("Не удалось подключиться к API. Повторите попытку позже или обратитесь к администраторам Neurix.")
# Ссылка на файл CSS
css_url = "https://neurixyufi-aihub.static.hf.space/style.css"
# Получение CSS по ссылке
response = requests.get(css_url)
css = response.text
# Gradio Interface
with gr.Blocks(css=css) as demo:
gr.HTML(
"""
<script>
var head = document.getElementsByTagName('head')[0];
var link = document.createElement('link');
link.rel = 'stylesheet';
link.type = 'text/css';
link.href = 'style.css';
head.appendChild(link);
</script>
"""
)
with gr.Column():
with gr.Row():
prompt = gr.Textbox(
label='Описание', placeholder='Фокус: Играющие дети (Сезон: Зима)'
)
with gr.Row():
select_base = gr.Dropdown(
label='Стиль',
choices=[
"Cartoon",
"Realistic",
"3d",
"Anime",
],
value="3d",
interactive=True
)
select_motion = gr.Dropdown(
label='Движение',
choices=[
("По умолчанию", ""),
("Приближение", "guoyww/animatediff-motion-lora-zoom-in"),
("Отдаление", "guoyww/animatediff-motion-lora-zoom-out"),
("Наклон вверх", "guoyww/animatediff-motion-lora-tilt-up"),
("Наклон вниз", "guoyww/animatediff-motion-lora-tilt-down"),
("Панорама влево", "guoyww/animatediff-motion-lora-pan-left"),
("Панорама вправо", "guoyww/animatediff-motion-lora-pan-right"),
("Поворот влево", "guoyww/animatediff-motion-lora-rolling-anticlockwise"),
("Поворот вправо", "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
)
with gr.Row():
submit = gr.Button("Создать", 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(max_size=250).launch() |