|
|
import os |
|
|
from dotenv import load_dotenv |
|
|
|
|
|
|
|
|
load_dotenv() |
|
|
|
|
|
import gradio as gr |
|
|
from veo_vid import generate_video |
|
|
|
|
|
def make_ui(): |
|
|
with gr.Blocks(title="Veo Video Generator") as demo: |
|
|
gr.Markdown("# Veo Video Generator\nEnter a prompt and generate a short video using the Veo model.") |
|
|
|
|
|
with gr.Row(): |
|
|
prompt = gr.Textbox( |
|
|
label="Prompt", |
|
|
value="A high-end fashion ad showing a confident male model in a new dark blue suit sprinting down a professional runway.", |
|
|
lines=4, |
|
|
placeholder="Describe the video you want..." |
|
|
) |
|
|
with gr.Row(): |
|
|
generate_btn = gr.Button("Generate Video") |
|
|
status = gr.Textbox(value="", label="Status", interactive=False) |
|
|
video_output = gr.Video(label="Generated Video", value=None) |
|
|
|
|
|
def on_generate(prompt_text): |
|
|
|
|
|
api_key = os.getenv("GOOGLE_API_KEY") |
|
|
if not api_key: |
|
|
return "Missing GOOGLE_API_KEY — set it in your Space secrets.", None |
|
|
|
|
|
|
|
|
try: |
|
|
status_msg = "Starting generation..." |
|
|
|
|
|
|
|
|
video_path = generate_video(prompt_text) |
|
|
status_msg = "Generation finished." |
|
|
|
|
|
return status_msg, video_path |
|
|
except Exception as e: |
|
|
|
|
|
return f"Error: {e}", None |
|
|
|
|
|
generate_btn.click(fn=on_generate, inputs=prompt, outputs=[status, video_output]) |
|
|
|
|
|
return demo |
|
|
|
|
|
app = make_ui() |
|
|
|
|
|
|
|
|
if __name__ == "__main__": |
|
|
app.launch() |