feat(e-pub): e-bog/lydbog fra et indsat link, med live-log, kø, timeout og /admin/epub
Claude-Session: https://claude.ai/code/session_01AUj1LSMmrowcomkn1ciAgj
This commit is contained in:
@@ -40,6 +40,25 @@ pr. person under `PORTAL_DATA/erindringer/` (persondata, aldrig i git).
|
||||
Røgtest uden OIDC: `PORTAL_DATA=/tmp/x python tests/erindringer_smoke.py` (kalder de rigtige
|
||||
API'er, koster lidt credits).
|
||||
|
||||
## E-bog / lydbog (`/e-pub`)
|
||||
|
||||
Ét felt: indsæt et link, få en `.epub` eller `.m4b` at hente. Selve arbejdet laves af
|
||||
medfølgende kommandolinjeværktøjer (`fetch.sh`, `run.sh`, `run-audiobook.sh`, `lib.sh`), som
|
||||
portalen kører i en frisk mappe pr. job (under `EPUB_SCRATCH`, standard `PORTAL_DATA/e-pub-scratch`)
|
||||
med et minimalt env (`PATH`, `TMP`, `RP_API_KEY`, `RP_BASE_URL`, `RP_REQUIRED`). stderr vises live
|
||||
(siden poller `/e-pub/status/<id>`). En færdig fil kan hentes én gang og slettes ellers efter
|
||||
`output_ttl_seconds`; jobs lever i hukommelsen, så en genstart/udrulning afbryder igangværende jobs,
|
||||
og scratch-mappen ryddes ved opstart.
|
||||
|
||||
- Adgang: admins, plus medlemmer af den Authentik-gruppe der står i `allowed_group` (tom = kun admins).
|
||||
- `/admin/epub`: adgangsgruppe, samtidige jobs, timeout, TTL, værktøjsmappe, "proxy påkrævet".
|
||||
Siden viser også, om værktøjer, programmer og `RP_API_KEY` mangler.
|
||||
- **Skal være installeret hvor portalen kører:** `bash`, `curl`, `jq`, `openssl`, `ffmpeg`
|
||||
(`apt install jq` m.fl.) og værktøjsfilerne i `tools_dir` (standard `/opt/portal/tools/e-pub`,
|
||||
uden for appmappen/git, læsbare for brugeren portalen kører som).
|
||||
- Plads: et job kan give op til ~300 MB (plus midlertidige filer), gange antal samtidige jobs.
|
||||
- Test uden OIDC og med et stub-værktøj: `python tests/epub_uvicorn.py`.
|
||||
|
||||
## Kør
|
||||
|
||||
```bash
|
||||
|
||||
Reference in New Issue
Block a user