A kind of initial commit

This commit is contained in:
heboba
2026-02-26 19:33:05 +00:00
commit 9ab125b1a6
37 changed files with 3053 additions and 0 deletions

41
app/config.py Normal file
View File

@@ -0,0 +1,41 @@
from __future__ import annotations
from functools import lru_cache
from pydantic import Field
from pydantic_settings import BaseSettings, SettingsConfigDict
class Settings(BaseSettings):
model_config = SettingsConfigDict(env_file=".env", env_file_encoding="utf-8", extra="ignore")
app_env: str = "dev"
app_base_url: str = "http://localhost:8000"
app_timezone: str = "UTC"
app_internal_url: str = "http://app:8000"
app_port: int = 8000
telegram_bot_token: str
spotify_client_id: str
spotify_client_secret: str
spotify_redirect_uri: str
spotify_default_market: str = "US"
lastfm_api_key: str | None = None
internal_job_token: str
db_path: str = "/data/app.db"
default_playlist_size: int = 30
min_new_ratio: float = Field(default=0.8, ge=0.0, le=1.0)
recent_days_window: int = 5
playlist_visibility: str = "private"
@property
def database_url(self) -> str:
return f"sqlite+aiosqlite:///{self.db_path}"
@lru_cache
def get_settings() -> Settings:
return Settings()