mirror of
https://github.com/wahyd4/you-music.git
synced 2026-08-08 20:59:47 +10:00
60 lines
1.9 KiB
Python
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}")
|