- Introduced a new test suite for the PlaylistService covering various functionalities including creation, retrieval, updating, and deletion of playlists. - Added tests for handling sounds within playlists, ensuring correct behavior when adding/removing sounds and managing current playlists. - Refactored socket service tests for improved readability by adjusting function signatures. - Cleaned up unnecessary whitespace in sound normalizer and sound scanner tests for consistency. - Enhanced audio utility tests to ensure accurate hash and size calculations, including edge cases for nonexistent files. - Removed redundant blank lines in cookie utility tests for cleaner code.
62 lines
1.8 KiB
Python
62 lines
1.8 KiB
Python
from typing import Literal
|
|
|
|
from pydantic_settings import BaseSettings, SettingsConfigDict
|
|
|
|
|
|
class Settings(BaseSettings):
|
|
"""Application settings."""
|
|
|
|
model_config = SettingsConfigDict(
|
|
env_file=".env",
|
|
env_file_encoding="utf-8",
|
|
env_ignore_empty=True,
|
|
extra="ignore",
|
|
)
|
|
|
|
# Application Configuration
|
|
HOST: str = "localhost"
|
|
PORT: int = 8000
|
|
RELOAD: bool = True
|
|
|
|
# Database Configuration
|
|
DATABASE_URL: str = "sqlite+aiosqlite:///data/soundboard.db"
|
|
DATABASE_ECHO: bool = False
|
|
|
|
# Logging Configuration
|
|
LOG_LEVEL: str = "info"
|
|
LOG_FILE: str = "logs/app.log"
|
|
LOG_MAX_SIZE: int = 10 * 1024 * 1024
|
|
LOG_BACKUP_COUNT: int = 5
|
|
LOG_FORMAT: str = "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
|
|
|
|
# JWT Configuration
|
|
JWT_SECRET_KEY: str = "your-secret-key-change-in-production" # noqa: S105 default value if none set in .env
|
|
JWT_ALGORITHM: str = "HS256"
|
|
JWT_ACCESS_TOKEN_EXPIRE_MINUTES: int = 15
|
|
JWT_REFRESH_TOKEN_EXPIRE_DAYS: int = 7
|
|
|
|
# Cookie Configuration
|
|
COOKIE_SECURE: bool = True
|
|
COOKIE_SAMESITE: Literal["strict", "lax", "none"] = "lax"
|
|
|
|
# OAuth2 Configuration
|
|
GOOGLE_CLIENT_ID: str = ""
|
|
GOOGLE_CLIENT_SECRET: str = ""
|
|
GITHUB_CLIENT_ID: str = ""
|
|
GITHUB_CLIENT_SECRET: str = ""
|
|
|
|
# Audio Normalization Configuration
|
|
NORMALIZED_AUDIO_FORMAT: str = "mp3"
|
|
NORMALIZED_AUDIO_BITRATE: str = "256k"
|
|
NORMALIZED_AUDIO_PASSES: int = 2 # 1 for one-pass, 2 for two-pass
|
|
|
|
# Audio Extraction Configuration
|
|
EXTRACTION_AUDIO_FORMAT: str = "mp3"
|
|
EXTRACTION_AUDIO_BITRATE: str = "256k"
|
|
EXTRACTION_TEMP_DIR: str = "sounds/temp"
|
|
EXTRACTION_THUMBNAILS_DIR: str = "sounds/originals/extracted/thumbnails"
|
|
EXTRACTION_MAX_CONCURRENT: int = 2 # Maximum concurrent extractions
|
|
|
|
|
|
settings = Settings()
|