import gradio as gr import requests API_URL = "https://rahul7star-FramePack-F1-DiffusionForce.hf.space/api/generate/" def call_framepack_api(input_image, prompt, t2v, seed, seconds): files = {} data = { "prompt": prompt, "t2v": str(t2v).lower(), "seed": seed, "total_second_length": seconds, } if input_image: files["input_image"] = ("input.png", input_image, "image/png") try: response = requests.post(API_URL, data=data, files=files) if response.status_code == 200: result = response.json() video_url = result.get("video_url") preview_url = result.get("preview_image_url") return video_url, preview_url else: return f"API Error: {response.status_code}", None except Exception as e: return str(e), None with gr.Blocks() as demo: gr.Markdown("## FramePack API Client") with gr.Row(): input_image = gr.Image(type="file", label="Input Image (optional)", sources=["upload"]) with gr.Column(): prompt = gr.Textbox(label="Prompt", placeholder="Describe the scene") t2v = gr.Checkbox(label="Text-to-Video", value=True) seed = gr.Number(label="Seed", value=31337, precision=0) seconds = gr.Slider(label="Video Length (seconds)", minimum=1, maximum=10, value=3) generate_btn = gr.Button("Generate") with gr.Row(): video_output = gr.Video(label="Generated Video", autoplay=True) preview_output = gr.Image(label="Preview Image") generate_btn.click( fn=call_framepack_api, inputs=[input_image, prompt, t2v, seed, seconds], outputs=[video_output, preview_output] ) demo.launch()