AI Image and Audio Generation Improvements.

AI Video Generation Pre-Flight Checklist. Cost Estimate Improvements.
This commit is contained in:
ajaysi
2025-12-25 16:26:08 +05:30
parent 59913bffa9
commit 7512933c65
163 changed files with 8938 additions and 37401 deletions

View File

@@ -1,31 +0,0 @@
# AI Story Video Generator
This module allows users to generate animated story videos using AI. It leverages Google's Gemini model to create stories and generate images for each scene, then combines them into a video.
## Features
- Generate complete stories based on user prompts
- Create scene-by-scene storyboards
- Generate images for each scene using Gemini
- Compile images into an animated video
- Add background music and text overlays
- Export videos in MP4 format
## How It Works
1. User provides a story prompt and preferences
2. AI generates a complete story with multiple scenes
3. For each scene, an image is generated
4. Images are compiled into a video with transitions
5. Optional background music and text overlays are added
6. The final video is available for download
## Requirements
- Google Gemini API key
- FFmpeg for video processing
- Python libraries: moviepy, pillow, requests
## Usage
Access this tool through the Streamlit interface by selecting "AI Story Video Generator" from the main menu.

View File

@@ -1,4 +0,0 @@
# AI Story Video Generator module
from .story_video_generator import write_story_video_generator
__all__ = ["write_story_video_generator"]

View File

@@ -1,64 +0,0 @@
"""
Utility functions for the AI Story Video Generator.
"""
import os
import tempfile
import uuid
from pathlib import Path
from typing import Optional
# Constants
TEMP_DIR = Path(tempfile.gettempdir()) / "alwrity_story_generator"
def ensure_temp_dir() -> Path:
"""Ensure the temporary directory exists and return its path."""
os.makedirs(TEMP_DIR, exist_ok=True)
return TEMP_DIR
def get_temp_filepath(prefix: str, extension: str) -> str:
"""Generate a temporary file path with the given prefix and extension."""
temp_dir = ensure_temp_dir()
return str(temp_dir / f"{prefix}_{uuid.uuid4()}.{extension}")
def clean_temp_files(older_than_hours: int = 24) -> int:
"""
Clean temporary files older than the specified number of hours.
Args:
older_than_hours: Remove files older than this many hours
Returns:
Number of files removed
"""
import time
from datetime import datetime, timedelta
temp_dir = ensure_temp_dir()
cutoff_time = time.time() - (older_than_hours * 3600)
count = 0
for file_path in temp_dir.glob("*"):
if file_path.is_file() and file_path.stat().st_mtime < cutoff_time:
try:
file_path.unlink()
count += 1
except Exception:
pass
return count
def format_duration(seconds: float) -> str:
"""Format seconds into a MM:SS string."""
minutes = int(seconds // 60)
remaining_seconds = int(seconds % 60)
return f"{minutes}:{remaining_seconds:02d}"
def sanitize_filename(filename: str) -> str:
"""Sanitize a string to be used as a filename."""
import re
# Remove invalid characters
sanitized = re.sub(r'[^\w\s-]', '', filename)
# Replace spaces with underscores
sanitized = sanitized.strip().replace(' ', '_')
return sanitized