Pre-commit runs ruff, isort and bandit through uv run, so it uses the versions in uv.lock. Bandit moves from runtime dependencies to the dev group.
unshackle
Movie, TV, and Music Archival Software
A modular archival tool for movies, TV, and music. Fork of Devine with DASH/HLS/ISM parsing, Widevine & PlayReady DRM, and a REST API.
Install
The recommended way is a git clone with the install script. The script installs uv and unshackle, then runs unshackle setup to download the external tools and write a first config.
git clone https://github.com/unshackle-dl/unshackle.git
cd unshackle
sh install.sh # Windows: .\install.bat
uv run unshackle env check
In a clone, run every command as uv run unshackle ....
Note
Advanced:
uv tool install git+https://github.com/unshackle-dl/unshackle.gitinstalls unshackle into the tool folder ofuv, not a folder that you choose.unshackle setupthen puts the tools, config, and data in your user data and config directories. See Installation for details.
Requirements
External tools. (recommended versions):
- Python - 3.11 - 3.14
- uv - ≥ 0.5
- FFmpeg - ≥ 6.0
- MKVToolNix - ≥ 80
- shaka-packager - 2.6.1, or ≥ 3.10.0
Optional:
- Bento4 - ≥ 1.6.0-639
- dovi_tool - ≥ 2.1
- SubtitleEdit - ≥ 5.0 (
SeConvCLI)
License
GPL-3.0. Do not use unshackle for content you do not have the rights to. Keep the core free and open. Keep service code private. Be kind.