archive-backend/core/config.py
2026-11-07 19:35:15 +00:00

56 lines
1.5 KiB
Python

import os
from pathlib import Path
from dotenv import load_dotenv
from pydantic_settings import BaseSettings, SettingsConfigDict
BASE_DIR = Path(__file__).resolve().parent.parent
load_dotenv(BASE_DIR / '.env')
YT_DIR_NAME = "yt"
YT_DIR = BASE_DIR / "media" / YT_DIR_NAME
THUMBS = "_thumbs"
THUMBS_DIR = YT_DIR / THUMBS
PHOTOS_DIR = BASE_DIR / "media" / "media"
PHOTOS_DIR_RESPNS = BASE_DIR / "media"
TEMPLATES_DIR = BASE_DIR / "templates"
STATIC_DIR = BASE_DIR / "static"
VIDEO_EXTENSIONS = {".mp4", ".mkv", ".webm", ".avi", ".mov", ".flv", ".m4v"}
AUDIO_EXTENSIONS = {".mp3", ".flac", ".ogg"}
AUDIO_DIR = BASE_DIR / "media" / "audio"
COVERS = "_covers"
COVERS_DIR = AUDIO_DIR / COVERS
DB_PASSWORD = os.getenv("DB_PASSWORD")
DB_USER = os.getenv("DB_USER")
DB_NAME = os.getenv("DB_NAME")
DB_URL = f"postgresql+psycopg://{DB_USER}:{DB_PASSWORD}@127.0.0.1:5432/{DB_NAME}"
class Settings(BaseSettings):
model_config = SettingsConfigDict(env_file=".env", extra="ignore") # лучше ignore
# Добавь то, что есть в .env
DB_USER: str
DB_PASSWORD: str
DB_NAME: str
SECRET_KEY: str = os.getenv("SECRET_KEY")
ALGORITHM: str = "HS256"
ACCESS_TOKEN_EXPIRE_MINUTES: int = 30
REFRESH_TOKEN_EXPIRE_DAYS: int = 7
COOKIE_SECURE: bool = False
COOKIE_SAMESITE: str = "lax"
COOKIE_DOMAIN: str | None = None
@property
def database_url(self) -> str:
return f"postgresql+psycopg://{self.DB_USER}:{self.DB_PASSWORD}@127.0.0.1:5432/{self.DB_NAME}"
settings = Settings()