config.py 757 B

12345678910111213141516171819202122232425262728293031
  1. from pydantic_settings import BaseSettings
  2. from functools import lru_cache
  3. class Settings(BaseSettings):
  4. """Application settings loaded from environment variables."""
  5. # Audiobookshelf Configuration
  6. abs_url: str
  7. abs_api_token: str
  8. # AI Configuration
  9. gemini_api_key: str | None = None
  10. anthropic_api_key: str | None = None
  11. openai_api_key: str | None = None
  12. # Application Configuration
  13. database_url: str = "sqlite:///./absrecommend.db"
  14. secret_key: str = "change-me-in-production"
  15. host: str = "0.0.0.0"
  16. port: int = 8000
  17. class Config:
  18. env_file = ".env"
  19. case_sensitive = False
  20. @lru_cache()
  21. def get_settings() -> Settings:
  22. """Get cached settings instance."""
  23. return Settings()