import os import gradio as gr # Объявляем упущенную переменную лимита кадров MAX_FRAMES = 100 MODELS = { "⚡ FLUX.1 Schnell (Максимальное качество)": "flux", "📸 FLUX Realism-Фото (Кинематографичные детали)": "flux-realism", "🇯🇵 FLUX Anime HD (Идеальное аниме)": "flux-anime" } STYLES = { "Без стиля (Чистый промпт)": "", "Реализм / Фото": ", cinematic photography, highly detailed, 8k resolution, realistic lighting, dramatic atmosphere, ultra-sharp focus", "Аниме / Манга": ", anime style, studio ghibli aesthetic, vibrant colors, detailed line art, masterpiece", "Киберпанк": ", cyberpunk style, neon lights, futuristic city, dark synthwave aesthetic, 8k", "Фэнтези / Иллюстрация": ", fantasy digital painting, mythical environment, concept art, soft lighting", "3D Рендер / Pixar": ", 3d render, pixar style, cute character design, claymation feel, vibrant" } ASPECT_RATIOS = { "16:9 (Видеоролики)": "width=1024&height=576", "9:16 (Shorts/Reels)": "width=576&height=1024", "1:1 (Квадрат)": "width=768&height=768" } # JS-скрипт для автономной работы внутри вашего смартфона через ваш VPN head_js = """ """ # В Gradio 6 параметры темы и скриптов передаются в launch() метод with gr.Blocks() as demo: gr.Markdown("# 🎬 Безлимитный Автономный Конвейер на Настоящем FLUX.1 (Мобильная Версия 5.1)") with gr.Row(): with gr.Column(scale=2): prompts_input = gr.TextArea( label="Сюжетные промпты (Поле очищено. Вставьте каждый кадр строго с новой строки)", value="", placeholder="Вставьте сюда ваш готовый текст рассказа по строкам...", lines=10 ) max_frames_slider = gr.Slider(minimum=1, maximum=MAX_FRAMES, value=10, step=1, label="Лимит кадров за один запуск") with gr.Row(): model_dropdown = gr.Dropdown(choices=list(MODELS.keys()), value="⚡ FLUX.1 Schnell (Максимальное качество)", label="Движок Нейросети") style_dropdown = gr.Dropdown(choices=list(STYLES.keys()), value="Без стиля (Чистый промпт)", label="Стиль") aspect_dropdown = gr.Dropdown(choices=list(ASPECT_RATIOS.keys()), value="16:9 (Видеоролики)", label="Формат") generate_btn = gr.Button("🚀 Запустить генерацию партии кадров", variant="primary") with gr.Column(scale=3): status_output = gr.Textbox(label="Статус выполнения конвейера", elem_id="status_box", interactive=False) download_html = gr.HTML(value="
Архив подготовится автоматически после генерации...
") gr.Markdown("### 📺 Крупный просмотр кадров оригинального качества (Столбец)") gallery_html = gr.HTML(value="

Здесь появится вертикальный список ваших кадров после нажатия кнопки...

") generate_btn.click( fn=None, inputs=[prompts_input, max_frames_slider, model_dropdown, style_dropdown, aspect_dropdown], outputs=[], js="window.js_pipeline" ) # По новым правилам Gradio 6 подключаем тему и JavaScript-заголовок здесь if __name__ == "__main__": demo.launch(theme=gr.themes.Soft(), head=head_js)