2026-06-11 01:01:37 +02:00
|
|
|
fastapi>=0.115,<1.0
|
|
|
|
|
uvicorn[standard]>=0.30,<1.0
|
|
|
|
|
sqlalchemy>=2.0,<2.1
|
|
|
|
|
psycopg[binary]>=3.2,<4.0
|
|
|
|
|
alembic>=1.13,<2.0
|
|
|
|
|
pydantic>=2.7,<3.0
|
|
|
|
|
pydantic-settings>=2.3,<3.0
|
|
|
|
|
authlib>=1.3,<2.0
|
|
|
|
|
httpx>=0.27,<1.0
|
feat: M2 (part 2) — RSS poller, backfill, enrichment, scheduler
- Free per-channel RSS reader for quota-less fresh-video detection
- Recent-first backfill (configurable: 100 videos / 1 year) plus resumable deep
backfill from the uploads playlist
- Enrichment via videos.list: duration, view/like counts, category, topics,
language, Shorts heuristic and livestream/premiere classification
- Reusable sync runners + APScheduler jobs (rss / enrich / backfill), all
quota-aware with a reserve so backfill never starves fresh enrichment
- Manual triggers: POST /api/sync/{rss,backfill,enrich}
- Exact insert counting via RETURNING with in-batch de-duplication
2026-06-11 01:36:41 +02:00
|
|
|
feedparser>=6.0,<7.0
|
|
|
|
|
apscheduler>=3.10,<4.0
|
2026-06-11 01:57:19 +02:00
|
|
|
py3langid>=0.3,<1.0
|
2026-06-11 01:01:37 +02:00
|
|
|
itsdangerous>=2.1,<3.0
|
2026-06-14 05:59:34 +02:00
|
|
|
cryptography>=46.0.7,<47
|
2026-06-19 14:03:11 +02:00
|
|
|
argon2-cffi>=23.1,<26
|
feat(downloads): M1 — schema, config, worker container, deps
- models: MediaAsset (shared file cache, unique on source+format_sig), DownloadJob
(per-user request), DownloadProfile (presets), DownloadShare (ACL), DownloadQuota
- migrations 0036 (5 tables) + 0037 (6 builtin presets)
- sysconfig 'downloads' group (per-user defaults, retention/GC, layout, worker concurrency)
- config: DOWNLOAD_ROOT / WORKER_ENABLED env + download defaults
- deps: yt-dlp in requirements, ffmpeg in Dockerfile runtime stage
- worker: dedicated container (python -m app.worker), thin idle entry (loop lands in M2)
- localdev compose: worker service + downloads bind-mount; gitignore downloads/
2026-07-02 23:57:40 +02:00
|
|
|
# Download center: yt-dlp does the extraction/download; ffmpeg (installed at the OS level in
|
|
|
|
|
# the Dockerfile) does the merge + postprocessing. yt-dlp is release-often (YouTube changes),
|
|
|
|
|
# so keep the floor loose and bump it when extraction breaks.
|
2026-07-03 04:40:10 +02:00
|
|
|
yt-dlp>=2025.5.22
|
|
|
|
|
# PO Token provider plugin: talks to the bgutil sidecar (brainicism/bgutil-ytdlp-pot-provider)
|
|
|
|
|
# to mint YouTube Proof-of-Origin tokens on demand, bypassing "confirm you're not a bot" and
|
|
|
|
|
# unlocking high-quality formats. Pin to match the sidecar image tag (versions must align).
|
|
|
|
|
bgutil-ytdlp-pot-provider==1.3.1
|