Files
you-music/backend/app/core/config.py
T
2025-10-30 22:35:02 +11:00

60 lines
1.9 KiB
Python

from pydantic_settings import BaseSettings
from typing import Optional
import os
class Settings(BaseSettings):
# API Settings
API_V1_STR: str = "/api/v1"
PROJECT_NAME: str = "YouMusic"
# Directories
BASE_DIR: str = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
MUSIC_DIR: str = os.path.join(BASE_DIR, "data", "music")
LOCAL_MUSIC_DIR: Optional[str] = None # User's offline music directory
UPLOAD_DIR: str = os.path.join(BASE_DIR, "data", "uploads")
TEMP_DIR: str = os.path.join(BASE_DIR, "data", "temp")
CACHE_DIR: str = os.path.join(BASE_DIR, "data", "cache")
# Database
DATABASE_URL: str = "sqlite+aiosqlite:///./data/youmusic.db"
# CORS
BACKEND_CORS_ORIGINS: list = ["*"]
# Download Settings
PROXY: Optional[str] = None
FFMPEG_LOCATION: str = "/usr/local/bin/ffmpeg"
# YT-DLP Settings
YT_DLP_FORMAT: str = "bestaudio/best"
YT_DLP_AUDIO_FORMAT: str = "mp3"
YT_DLP_AUDIO_QUALITY: str = "0"
# Scanner Settings
SCAN_INTERVAL: int = 3600 # Default 1 hour (in seconds)
DELETE_MISSING_FILES: bool = False # Don't delete missing files by default
AUTO_SCAN_ENABLED: bool = True # Enable automatic scanning
class Config:
case_sensitive = True
env_file = ".env"
settings = Settings()
# Ensure directories exist
os.makedirs(settings.MUSIC_DIR, exist_ok=True)
os.makedirs(settings.UPLOAD_DIR, exist_ok=True)
os.makedirs(settings.TEMP_DIR, exist_ok=True)
os.makedirs(settings.CACHE_DIR, exist_ok=True)
# Log directory locations for debugging
import logging
logger = logging.getLogger(__name__)
logger.info(f"📁 MUSIC_DIR: {settings.MUSIC_DIR}")
logger.info(f"📁 LOCAL_MUSIC_DIR: {settings.LOCAL_MUSIC_DIR}")
logger.info(f"📁 UPLOAD_DIR: {settings.UPLOAD_DIR}")
logger.info(f"📁 TEMP_DIR: {settings.TEMP_DIR}")
logger.info(f"📁 CACHE_DIR: {settings.CACHE_DIR}")