|
|
from pathlib import Path |
|
|
from typing import Dict, Any |
|
|
|
|
|
|
|
|
BASE_DIR = Path(__file__).parent.parent |
|
|
TEMP_DIR = BASE_DIR / "temp" |
|
|
MEDIA_DIR = BASE_DIR / "media" |
|
|
|
|
|
|
|
|
TEMP_DIR.mkdir(exist_ok=True) |
|
|
MEDIA_DIR.mkdir(exist_ok=True) |
|
|
|
|
|
|
|
|
GROQ_API_BASE_URL = "https://api.groq.com/openai/v1" |
|
|
DEFAULT_MODEL = "llama-3.3-70b-versatile" |
|
|
|
|
|
|
|
|
AVAILABLE_MODELS = { |
|
|
"llama-3.3-70b-versatile": { |
|
|
"name": "Llama 3.3 70B", |
|
|
"description": "Most capable model, best for complex animations", |
|
|
"max_tokens": 4096, |
|
|
"temperature": 0.7 |
|
|
}, |
|
|
"llama3-8b-8192": { |
|
|
"name": "Llama 3 8B", |
|
|
"description": "Fast and efficient for simpler animations", |
|
|
"max_tokens": 8192, |
|
|
"temperature": 0.7 |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
QUALITY_SETTINGS = { |
|
|
"low_quality": { |
|
|
"flag": "-ql", |
|
|
"description": "Low Quality (Fast)", |
|
|
"estimated_time": 60, |
|
|
"resolution": "480p" |
|
|
}, |
|
|
"medium_quality": { |
|
|
"flag": "-qm", |
|
|
"description": "Medium Quality (Balanced)", |
|
|
"estimated_time": 180, |
|
|
"resolution": "720p" |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
APP_SETTINGS = { |
|
|
"max_render_time": 300, |
|
|
"max_prompt_length": 1000, |
|
|
"min_prompt_length": 10, |
|
|
"default_video_quality": "medium_quality", |
|
|
"temp_file_prefix": "manim_", |
|
|
"log_level": "INFO" |
|
|
} |
|
|
|
|
|
|
|
|
UI_SETTINGS = { |
|
|
"page_title": "Manim Video Generator", |
|
|
"page_icon": "π¬", |
|
|
"layout": "wide", |
|
|
"initial_sidebar_state": "expanded", |
|
|
"theme": { |
|
|
"primaryColor": "#667eea", |
|
|
"backgroundColor": "#ffffff", |
|
|
"secondaryBackgroundColor": "#f8f9fa", |
|
|
"textColor": "#262730", |
|
|
"font": "sans serif" |
|
|
} |
|
|
} |
|
|
|
|
|
def get_setting(key: str, default: Any = None) -> Any: |
|
|
if key in APP_SETTINGS: |
|
|
return APP_SETTINGS[key] |
|
|
if key in UI_SETTINGS: |
|
|
return UI_SETTINGS[key] |
|
|
return default |
|
|
|
|
|
def update_setting(key: str, value: Any) -> None: |
|
|
if key in APP_SETTINGS: |
|
|
APP_SETTINGS[key] = value |
|
|
elif key in UI_SETTINGS: |
|
|
UI_SETTINGS[key] = value |
|
|
else: |
|
|
raise KeyError(f"Setting '{key}' not found") |