Добавлено описание проекта PVideoDl, включая функциональность, стек технологий, архитектуру, инструкции по запуску и API. Обновлён README.md для лучшего понимания проекта.

This commit is contained in:
Leonid Pershin
2026-06-19 12:07:55 +03:00
parent e15d0af056
commit 3281fa2a5d
43 changed files with 4699 additions and 0 deletions
+43
View File
@@ -0,0 +1,43 @@
"""Настройки приложения. Значения берутся из переменных окружения с префиксом PVDL_."""
from __future__ import annotations
import os
from dataclasses import dataclass
from pathlib import Path
BASE_DIR = Path(__file__).resolve().parent.parent
def _env_path(name: str, default: Path) -> Path:
value = os.environ.get(name)
return Path(value).expanduser().resolve() if value else default
def _env_int(name: str, default: int) -> int:
try:
return int(os.environ.get(name, default))
except (TypeError, ValueError):
return default
@dataclass(frozen=True)
class Settings:
# Куда складывать скачанные файлы.
download_dir: Path = _env_path("PVDL_DOWNLOAD_DIR", BASE_DIR / "downloads")
# Файл SQLite.
db_path: Path = _env_path("PVDL_DB_PATH", BASE_DIR / "app.db")
# Каталог собранной статики фронтенда (SvelteKit build).
static_dir: Path = _env_path("PVDL_STATIC_DIR", BASE_DIR / "frontend" / "build")
# Сколько воркеров разбирают очередь параллельно.
workers: int = _env_int("PVDL_WORKERS", 3)
# Размер chunk'а при скачивании через httpx (байт).
chunk_size: int = _env_int("PVDL_CHUNK_SIZE", 64 * 1024)
# Как часто (в секундах) пушить событие прогресса, чтобы не заспамить шину.
progress_interval: float = 0.3
# Хост/порт веб-сервера.
host: str = os.environ.get("PVDL_HOST", "127.0.0.1")
port: int = _env_int("PVDL_PORT", 8000)
settings = Settings()