Spaces:
Sleeping
Sleeping
| import os | |
| from pathlib import Path | |
| from pydantic_settings import BaseSettings | |
| from typing import Optional | |
| class Config(BaseSettings): | |
| """Application configuration from environment variables""" | |
| # API Keys | |
| pexels_api_key: Optional[str] = None | |
| hf_tts: Optional[str] = None | |
| # Server Configuration | |
| port: int = 8880 | |
| log_level: str = "info" | |
| # System Configuration | |
| whisper_model: str = "tiny.en" | |
| whisper_verbose: bool = False | |
| concurrency: int = 1 | |
| video_cache_size_in_bytes: int = 2684354560 # 2.5GB | |
| # Docker/Environment | |
| docker: bool = False | |
| dev: bool = False | |
| data_dir_path: Optional[str] = None | |
| class Config: | |
| env_file = ".env" | |
| case_sensitive = False | |
| extra = "ignore" | |
| def base_data_dir(self) -> Path: | |
| """Get the base data directory path""" | |
| if self.data_dir_path: | |
| return Path(self.data_dir_path) | |
| if self.docker: | |
| return Path("/data") | |
| # For local development | |
| home = Path.home() | |
| return home / ".short-video-maker" | |
| def videos_dir_path(self) -> Path: | |
| """Directory for storing generated videos""" | |
| path = self.base_data_dir / "videos" | |
| path.mkdir(parents=True, exist_ok=True) | |
| return path | |
| def temp_dir_path(self) -> Path: | |
| """Directory for temporary files""" | |
| path = self.base_data_dir / "temp" | |
| path.mkdir(parents=True, exist_ok=True) | |
| return path | |
| def music_dir_path(self) -> Path: | |
| """Directory for music files""" | |
| # Music files are bundled with the application | |
| return Path(__file__).parent / "static" / "music" | |
| def whisper_model_dir(self) -> Path: | |
| """Directory for Whisper models""" | |
| path = self.base_data_dir / "whisper_models" | |
| path.mkdir(parents=True, exist_ok=True) | |
| return path | |
| def ensure_directories(self): | |
| """Ensure all required directories exist""" | |
| self.videos_dir_path.mkdir(parents=True, exist_ok=True) | |
| self.temp_dir_path.mkdir(parents=True, exist_ok=True) | |
| self.whisper_model_dir.mkdir(parents=True, exist_ok=True) | |
| # Global config instance | |
| config = Config() | |