siftlode/backend/app/downloads
npeter83 f0fc542260 feat(downloads): editor backend — trim/crop derivatives (phase 2)
Per-user trim/crop clips derived from a finished download via ffmpeg, riding the same
MediaAsset/DownloadJob/worker/quota/GC machinery (asset source_kind='edit', per-user cache key):
- migration 0041: download_jobs job_kind/source_job_id/source_asset_id/edit_spec
- app/downloads/edit.py: spec normalize+sig, ffmpeg trim/crop cmd (fast stream-copy vs frame-
  accurate re-encode, per-edit 'accurate' toggle), progress+cooperative-cancel runner, filmstrip
- service.enqueue_edit; worker _process_edit branch; storage.edit_rel_path (.edits/{user} tree)
- routes: POST /edit, GET /{id}/storyboard(.jpg)
2026-07-04 01:01:46 +02:00
..
__init__.py fix(downloads): add the downloads package (was wrongly gitignored) + robust sanitizer 2026-07-03 00:19:22 +02:00
edit.py feat(downloads): editor backend — trim/crop derivatives (phase 2) 2026-07-04 01:01:46 +02:00
formats.py feat(downloads): automatic PO-token provider (bgutil sidecar) to beat YouTube bot-detection 2026-07-03 04:40:10 +02:00
gc.py feat(downloads): M3 — per-user quota + retention GC 2026-07-03 00:26:40 +02:00
quota.py feat(downloads): M4 — REST API (enqueue, manage, file-serve, sharing, admin) 2026-07-03 00:34:08 +02:00
service.py feat(downloads): editor backend — trim/crop derivatives (phase 2) 2026-07-04 01:01:46 +02:00
storage.py feat(downloads): editor backend — trim/crop derivatives (phase 2) 2026-07-04 01:01:46 +02:00