imSp4rky
2ba442f50e
feat(dl): load the DRM system a cdm entry lists first
...
The first of the widevine / playready config keys in a cdm entry sets which device loads first and which DRM system licenses a track that offers the two. An entry that lists playready first changes from Widevine to PlayReady.
2026-10-13 12:44:11 -06:00
imSp4rky
94e5264396
fix(cdm): send a PlayReady licence without an XML declaration as XML
...
A remote CDM tried base64 first on any licence not starting with "<?xml", which can decode XML text into garbage. Also lists L3 as a device_name.
2026-10-06 13:59:40 -06:00
imSp4rky
1d2cb3a102
fix(dl): read the vaults first under --all-drm
...
A DRM system sends a challenge only for a KID with no content key. --cdm-only keeps one challenge per system for each set of KIDs.
2026-10-05 16:43:54 -06:00
imSp4rky
ee38477b11
feat(dl): add --all-drm to license Widevine and PlayReady per track
...
Each DRM system sends one challenge per KID set in a run, also when a vault has the content keys. Needs a CDM for each system in the cdm config.
2026-10-05 15:22:01 -06:00
imSp4rky
9a1abd23b6
feat(remote): license with the client's device when the user picked one
...
A remote client that passes --cdm, has a cdm entry for the service that named the loaded device, or sets server_cdm: false now declines the server CDM at session create, and warns when the server keeps it. A service option listed in SERVER_DEVICE_OPTIONS keeps the server CDM.
2026-10-01 13:21:53 -06:00
imSp4rky
c7ab04028a
feat(setup): add unshackle setup command and cross-platform install scripts
...
setup downloads the external tools, writes a first config and imports CDM devices; install.sh and install.bat bootstrap uv and run it.
2026-10-01 12:21:24 -06:00
imSp4rky
4f188b866f
fix(cdm): skip the server header probe for pywidevine and pyplayready remote CDMs
...
A reverse proxy or CDN rewrites the Server header, so upstream refused a working serve API.
2026-09-25 22:54:08 -06:00
imSp4rky
a7d6791136
feat(remote): verify server-CDM vault keys on the client and report bad pairs
...
The licence response lists KIDs a server vault supplied, the client proves them with the decode check, and a bad pair goes to the new session keys/bad route so the server flags its own row. Client vault keys go first over --remote, and the dashboard health warns when no SQLite vault can store flags.
2026-09-12 15:13:08 -06:00
imSp4rky
e804d09f0a
feat(dl): add --cdm to pin one CDM device for a run
...
Overrides the cdm config mapping (and its quality/DRM sub-entries) for the whole run; the REST API cdm field now flows through the same param.
2026-08-24 16:37:48 -06:00
imSp4rky
8b10b793e2
docs: phase 2 of the prose style across docs and docstrings
2026-08-19 20:59:09 -06:00
imSp4rky
66971230c3
docs: apply simplified technical english across docs and docstrings.
2026-08-19 16:31:06 -06:00
imSp4rky
c4b25756eb
docs: split configuration reference into per-area pages
2026-08-04 10:25:32 -06:00
imSp4rky
1cf9e5b487
docs: correct DRM, muxing, and proxy references (+ case-insensitive proxy prefix fix)
2026-07-13 09:09:46 -06:00
imSp4rky
84d9b92530
docs: expand config reference and genericize service names
2026-07-06 22:50:38 -06:00
imSp4rky
1d8cec6d2b
docs: restructure documentation into MkDocs Material site
2026-07-03 19:24:11 -06:00