mirror of
https://github.com/unshackle-dl/unshackle.git
synced 2026-06-22 08:57:25 +00:00
a9c677c349cce32d3716e5129c8d6fe91470945d
* feat: add native ExpressVPN HTTPS proxy provider Introduces ExpressVPN as a first-class native proxy provider for unshackle. This provider implements the full browser extension proxy authentication flow — from OAuth PKCE bootstrap through subscription validation to authenticated HTTPS proxy endpoints — without requiring any external tools or manual token management. Supports smart location selection, city-level targeting with intelligent abbreviation matching, and pinned server selection. All tokens are automatically cached and refreshed. No new dependencies required. * fix: address PR #126 review feedback - __repr__ no longer triggers network/OAuth calls; reads cached locations only - _match_city uses tiered priority buckets (abbrev > exact > prefix > substring) - Token cache writes race-free: os.open + os.fchmod(0o600) on Unix, fallback on Windows - Cookie/cache paths resolve under config.directories, not CWD - _get_connection_token parses response JSON once - Drop unused PKCE state parameter (never validated) - Add inline doc for _is_jwt_expired no-exp behavior - Fix 3 lines exceeding 120-col project style --------- Co-authored-by: MrMovies-Dev <MrMovies-Dev@users.noreply.github.com> Co-authored-by: sp4rk.y <george+slight@slight.me>
unshackle
Movie, TV, and Music Archival Software
Install · Wiki · Docs · Discord
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
uv tool install git+https://github.com/unshackle-dl/unshackle.git
unshackle --help
Tip
Prefer
uv run unshackle ...inside a clone to keep the virtual environment active.
Requirements
External tools on your PATH (recommended versions):
- Python - 3.10 - 3.12
- uv - ≥ 0.5
- FFmpeg - ≥ 6.0
- MKVToolNix - ≥ 80
- shaka-packager - 2.6.1
- Bento4 - ≥ 1.6.0-639
- dovi_tool - ≥ 2.1
Optional:
- SubtitleEdit - ≥ 5.0 (
SeConvCLI)
License
GPL-3.0. Do not use unshackle for content you lack the rights to. Keep the core free and open; keep service code private. Be kind.
Languages
Python
99.9%