# app.py from fastapi import FastAPI, Request from pydantic import BaseModel from fastapi.responses import FileResponse import uvicorn from text_to_slides import split_into_slides from generate_images import generate_images_for_slides from generate_voice import generate_audio_for_slides from create_video import create_video import gradio as gr app = FastAPI() class TextInput(BaseModel): content: str @app.post("/generate_video/") async def generate_video(data: TextInput): text = data.content try: slides = split_into_slides(text) images = generate_images_for_slides(slides) audios = generate_audio_for_slides(slides) create_video(slides, images, audios, output_path="final_output.mp4") return FileResponse("final_output.mp4", media_type="video/mp4", filename="final_output.mp4") except Exception as e: return {"error": str(e)} def generate_video(text): # your backend processing logic return "video.mp4" # or return a video file path or URL interface = gr.Interface(fn=generate_video, inputs=gr.Textbox(), outputs=gr.Video()) interface.launch(share=True) if __name__ == "__main__": uvicorn.run("app:app", host="0.0.0.0", port=7860, reload=True)