No description
- Python 63.7%
- HTML 35.8%
- Dockerfile 0.5%
|
All checks were successful
Build and Publish / build (push) Successful in 5m27s
Een langlopend serve-proces logde maar één keer per serverleven in en ververste de sessie nooit. Na verloop van tijd (de session-token verloopt) viel stream-capture terug op de anonieme plus-paywall, waardoor de player nooit een stream-link request deed → 30s timeouts en mislukte downloads die alleen met een handmatige herstart op te lossen waren. - auth: invalidate() (met min_age-guard tegen login-thrashing) + ensure_valid_session() proactieve check met double-checked locking, en _login() zet nu daadwerkelijk self._client. - stream: paywall-detectie -> gerichte SessionExpiredError i.p.v. blinde timeout; robuustere wait (profile/player/paywall/unknown); profielselectie via accessible-name; debug-screenshot bij falen; cookies lazy via callable zodat een mid-run re-login verse cookies oppikt. - web/pipeline: _run_prep logt opnieuw in bij SessionExpiredError; web-queue en CLI roepen ensure_valid_session() aan vóór stream-capture. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|---|---|---|
| .forgejo/workflows | ||
| docs/superpowers | ||
| src/npo_dl_ng | ||
| tests | ||
| .env.example | ||
| .gitignore | ||
| .pre-commit-config.yaml | ||
| CLAUDE.md | ||
| docker-compose.yaml | ||
| Dockerfile | ||
| pyproject.toml | ||
| README.md | ||
| renovate.json | ||
| uv.lock | ||
npo-dl-ng
Python rewrite of npo-dl. Zelfde functionaliteit, kleinere Docker image (~300MB vs ~1.5GB), native pywidevine.
Vereisten
- Python 3.11+
- uv
- Een Widevine device file (
.wvd) - NPO Start account
Installatie
uv pip install -e ".[web,browser]"
playwright install chromium
Configuratie
Kopieer .env.example naar .env en vul in:
NPO_EMAIL=your@email.nl
NPO_PASSWORD=yourpassword
WVD_PATH=/pad/naar/cdm.wvd
OUTPUT_DIR=./videos # standaard
MAX_CONCURRENT_DOWNLOADS=3 # standaard
Gebruik
# Info over een serie
npo-dl-ng info "https://npo.nl/start/serie/<slug>"
# Lijst alle afleveringen
npo-dl-ng series "https://npo.nl/start/serie/<slug>"
# Download één aflevering
npo-dl-ng download "https://npo.nl/start/serie/<slug>/afleveringen/<seizoen>/<slug>"
# Web UI op http://localhost:8000
npo-dl-ng serve
npo-dl-ng serve --port 9000
Docker
docker compose up
Zet in docker-compose.yaml de juiste paden voor je .env en .wvd.