siftlode/backend/app
npeter83 cff1d23071 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
..
routes feat: M2 (part 2) — RSS poller, backfill, enrichment, scheduler 2026-06-11 01:36:41 +02:00
static fix: default app UI language to English (login page) 2026-06-11 01:03:36 +02:00
sync feat: M2 (part 2) — RSS poller, backfill, enrichment, scheduler 2026-06-11 01:36:41 +02:00
youtube feat: M2 (part 2) — RSS poller, backfill, enrichment, scheduler 2026-06-11 01:36:41 +02:00
__init__.py feat: M1 foundation — compose stack, FastAPI, Google OAuth, encrypted tokens 2026-06-11 01:01:37 +02:00
auth.py fix: request offline access on OAuth login so Google returns a refresh token 2026-06-11 01:14:06 +02:00
config.py feat: M2 (part 2) — RSS poller, backfill, enrichment, scheduler 2026-06-11 01:36:41 +02:00
db.py feat: M1 foundation — compose stack, FastAPI, Google OAuth, encrypted tokens 2026-06-11 01:01:37 +02:00
main.py feat: M2 (part 2) — RSS poller, backfill, enrichment, scheduler 2026-06-11 01:36:41 +02:00
models.py feat: M2 (part 1) — subscription import, YouTube client, quota guard 2026-06-11 01:22:07 +02:00
quota.py feat: M2 (part 1) — subscription import, YouTube client, quota guard 2026-06-11 01:22:07 +02:00
scheduler.py feat: M2 (part 2) — RSS poller, backfill, enrichment, scheduler 2026-06-11 01:36:41 +02:00
security.py feat: M1 foundation — compose stack, FastAPI, Google OAuth, encrypted tokens 2026-06-11 01:01:37 +02:00