import os import gradio as gr import datetime from gtts import gTTS from moviepy.editor import ImageClip, AudioFileClip def generate_image(prompt): return f"🖼️ Image generated for: {prompt}" def generate_video(prompt, duration): img_path = "temp.jpg" with open(img_path, "wb") as f: f.write(b"\x00") # placeholder image tts = gTTS(text=prompt, lang="en") audio_path = "speech.mp3" tts.save(audio_path) img_clip = ImageClip(img_path, duration=duration) audio_clip = AudioFileClip(audio_path) img_clip = img_clip.set_audio(audio_clip) video_path = "output.mp4" img_clip.write_videofile(video_path, fps=24) return video_path def process_request(prompt, duration, request: gr.Request): img = generate_image(prompt) vid = generate_video(prompt, duration) return vid, img, f"🎥 Public mode (no limits in backup)." with gr.Blocks() as demo: gr.Markdown("# 🎬 Backup App – Video Generator with Narration") prompt = gr.Textbox(label="Prompt (Journal Text)") duration = gr.Slider(5, 60, value=10, step=1, label="Duration (seconds)") btn = gr.Button("Generate Video") output_vid = gr.Video() output_img = gr.Textbox() status = gr.Markdown() btn.click(process_request, [prompt, duration], [output_vid, output_img, status]) demo.launch()