|
|
|
|
|
|
|
|
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): |
|
|
|
|
|
return "video.mp4" |
|
|
|
|
|
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) |