Update PVideoDl to support custom download strategies and enhance cookie handling. Added new downloader registration system, updated README for clarity on downloaders, and introduced cookies configuration in settings. Frontend now includes a dedicated tab for download strategies and API endpoints for listing them.

This commit is contained in:
Leonid Pershin
2026-06-20 09:08:31 +03:00
parent 3e47e95fc4
commit eae4def0bf
15 changed files with 639 additions and 74 deletions
+9 -1
View File
@@ -12,12 +12,13 @@ from fastapi.staticfiles import StaticFiles
from starlette.requests import Request
from starlette.responses import JSONResponse, Response
from app.api import downloads, events
from app.api import downloaders, downloads, events
from app.config import settings
from app.core.events import EventBus
from app.core.queue import DownloadQueue
from app.core.storage import SqliteStorage
from app.models import DownloadStatus
from app.services.extractors import load_extractors
from app.services.worker import WorkerPool
logging.basicConfig(level=logging.INFO, format="%(asctime)s %(levelname)s %(name)s: %(message)s")
@@ -26,6 +27,8 @@ logger = logging.getLogger("pvideodl")
@asynccontextmanager
async def lifespan(app: FastAPI):
load_extractors() # регистрируем расширения-экстракторы из app/services/extractors
storage = SqliteStorage(settings.db_path)
await storage.init()
@@ -46,6 +49,10 @@ async def lifespan(app: FastAPI):
await pool.start()
settings.download_dir.mkdir(parents=True, exist_ok=True)
logger.info("PVideoDl запущен. Файлы → %s", settings.download_dir)
if settings.cookies_from_browser:
logger.info("yt-dlp cookies: из браузера %s", settings.cookies_from_browser)
if settings.cookies_file:
logger.info("yt-dlp cookies: файл %s", settings.cookies_file)
try:
yield
finally:
@@ -65,6 +72,7 @@ def create_app() -> FastAPI:
)
app.include_router(downloads.router)
app.include_router(downloaders.router)
app.include_router(events.router)
@app.get("/api/health")