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:
+9
-1
@@ -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")
|
||||
|
||||
Reference in New Issue
Block a user