Initial commit
This commit is contained in:
105
backend/app/config.py
Normal file
105
backend/app/config.py
Normal file
@@ -0,0 +1,105 @@
|
||||
from typing import Optional
|
||||
from pydantic import AliasChoices, Field
|
||||
from pydantic_settings import BaseSettings, SettingsConfigDict
|
||||
|
||||
|
||||
class Settings(BaseSettings):
|
||||
model_config = SettingsConfigDict(env_prefix="")
|
||||
app_name: str = "Magent"
|
||||
cors_allow_origin: str = "http://localhost:3000"
|
||||
sqlite_path: str = Field(default="data/magent.db", validation_alias=AliasChoices("SQLITE_PATH"))
|
||||
jwt_secret: str = Field(default="change-me", validation_alias=AliasChoices("JWT_SECRET"))
|
||||
jwt_exp_minutes: int = Field(default=720, validation_alias=AliasChoices("JWT_EXP_MINUTES"))
|
||||
admin_username: str = Field(default="admin", validation_alias=AliasChoices("ADMIN_USERNAME"))
|
||||
admin_password: str = Field(default="adminadmin", validation_alias=AliasChoices("ADMIN_PASSWORD"))
|
||||
log_level: str = Field(default="INFO", validation_alias=AliasChoices("LOG_LEVEL"))
|
||||
log_file: str = Field(default="data/magent.log", validation_alias=AliasChoices("LOG_FILE"))
|
||||
requests_sync_ttl_minutes: int = Field(
|
||||
default=1440, validation_alias=AliasChoices("REQUESTS_SYNC_TTL_MINUTES")
|
||||
)
|
||||
requests_poll_interval_seconds: int = Field(
|
||||
default=300, validation_alias=AliasChoices("REQUESTS_POLL_INTERVAL_SECONDS")
|
||||
)
|
||||
requests_delta_sync_interval_minutes: int = Field(
|
||||
default=5, validation_alias=AliasChoices("REQUESTS_DELTA_SYNC_INTERVAL_MINUTES")
|
||||
)
|
||||
requests_full_sync_time: str = Field(
|
||||
default="00:00", validation_alias=AliasChoices("REQUESTS_FULL_SYNC_TIME")
|
||||
)
|
||||
requests_cleanup_time: str = Field(
|
||||
default="02:00", validation_alias=AliasChoices("REQUESTS_CLEANUP_TIME")
|
||||
)
|
||||
requests_cleanup_days: int = Field(
|
||||
default=90, validation_alias=AliasChoices("REQUESTS_CLEANUP_DAYS")
|
||||
)
|
||||
requests_data_source: str = Field(
|
||||
default="prefer_cache", validation_alias=AliasChoices("REQUESTS_DATA_SOURCE")
|
||||
)
|
||||
artwork_cache_mode: str = Field(
|
||||
default="remote", validation_alias=AliasChoices("ARTWORK_CACHE_MODE")
|
||||
)
|
||||
|
||||
jellyseerr_base_url: Optional[str] = Field(
|
||||
default=None, validation_alias=AliasChoices("JELLYSEERR_URL", "JELLYSEERR_BASE_URL")
|
||||
)
|
||||
jellyseerr_api_key: Optional[str] = Field(
|
||||
default=None, validation_alias=AliasChoices("JELLYSEERR_API_KEY", "JELLYSEERR_KEY")
|
||||
)
|
||||
jellyfin_base_url: Optional[str] = Field(
|
||||
default=None, validation_alias=AliasChoices("JELLYFIN_URL", "JELLYFIN_BASE_URL")
|
||||
)
|
||||
jellyfin_api_key: Optional[str] = Field(
|
||||
default=None, validation_alias=AliasChoices("JELLYFIN_API_KEY", "JELLYFIN_KEY")
|
||||
)
|
||||
jellyfin_public_url: Optional[str] = Field(
|
||||
default=None, validation_alias=AliasChoices("JELLYFIN_PUBLIC_URL")
|
||||
)
|
||||
jellyfin_sync_to_arr: bool = Field(
|
||||
default=True, validation_alias=AliasChoices("JELLYFIN_SYNC_TO_ARR")
|
||||
)
|
||||
|
||||
sonarr_base_url: Optional[str] = Field(
|
||||
default=None, validation_alias=AliasChoices("SONARR_URL", "SONARR_BASE_URL")
|
||||
)
|
||||
sonarr_api_key: Optional[str] = Field(
|
||||
default=None, validation_alias=AliasChoices("SONARR_API_KEY", "SONARR_KEY")
|
||||
)
|
||||
sonarr_quality_profile_id: Optional[int] = Field(
|
||||
default=None, validation_alias=AliasChoices("SONARR_QUALITY_PROFILE_ID")
|
||||
)
|
||||
sonarr_root_folder: Optional[str] = Field(
|
||||
default=None, validation_alias=AliasChoices("SONARR_ROOT_FOLDER")
|
||||
)
|
||||
|
||||
radarr_base_url: Optional[str] = Field(
|
||||
default=None, validation_alias=AliasChoices("RADARR_URL", "RADARR_BASE_URL")
|
||||
)
|
||||
radarr_api_key: Optional[str] = Field(
|
||||
default=None, validation_alias=AliasChoices("RADARR_API_KEY", "RADARR_KEY")
|
||||
)
|
||||
radarr_quality_profile_id: Optional[int] = Field(
|
||||
default=None, validation_alias=AliasChoices("RADARR_QUALITY_PROFILE_ID")
|
||||
)
|
||||
radarr_root_folder: Optional[str] = Field(
|
||||
default=None, validation_alias=AliasChoices("RADARR_ROOT_FOLDER")
|
||||
)
|
||||
|
||||
prowlarr_base_url: Optional[str] = Field(
|
||||
default=None, validation_alias=AliasChoices("PROWLARR_URL", "PROWLARR_BASE_URL")
|
||||
)
|
||||
prowlarr_api_key: Optional[str] = Field(
|
||||
default=None, validation_alias=AliasChoices("PROWLARR_API_KEY", "PROWLARR_KEY")
|
||||
)
|
||||
|
||||
qbittorrent_base_url: Optional[str] = Field(
|
||||
default=None, validation_alias=AliasChoices("QBIT_URL", "QBITTORRENT_URL", "QBITTORRENT_BASE_URL")
|
||||
)
|
||||
qbittorrent_username: Optional[str] = Field(
|
||||
default=None, validation_alias=AliasChoices("QBIT_USERNAME", "QBITTORRENT_USERNAME")
|
||||
)
|
||||
qbittorrent_password: Optional[str] = Field(
|
||||
default=None, validation_alias=AliasChoices("QBIT_PASSWORD", "QBITTORRENT_PASSWORD")
|
||||
)
|
||||
|
||||
|
||||
settings = Settings()
|
||||
Reference in New Issue
Block a user