Interactive CLI for finding recoverable hidden Twitch VOD playlists and downloading them with
ffmpeg.
- Finds recent Twitch streams by streamer name
- Searches known VOD playlist domains around the stream start timestamp
- Lets the user select a stream and quality
- Downloads remote M3U8 URLs or local playlists
- Rewrites segment URLs when needed
- Can recover unmuted segments and validate segment availability
- Can open playlists in an HLS-capable player
- Python
uv- Bun for repository tooling
- Network access to Twitch and playlist hosts
- Optional:
ffmpegandffprobeinPATH - Optional:
ffplay,mpv, VLC, or MPC-HC for playback
If ffmpeg or ffprobe is not installed locally, static-ffmpeg is used as a fallback.
Install as a uv tool:
uv tool install git+https://github.com/hu553in/vod-recovery.gitOr run without installing:
uvx --from git+https://github.com/hu553in/vod-recovery.git vod-recoverySettings are stored in the platform-specific user config directory. settings.toml is created with
defaults on first run.
| Name | Default | Description |
|---|---|---|
check_segments |
false |
Validate segment availability before downloading |
always_best_quality |
false |
Select the best available quality automatically |
default_directory |
user downloads directory | Download output directory |
default_video_format |
.mp4 |
Output container format |
playback_command |
"" |
Playback command or path, blank means auto |
Supported output containers: .mp4, .mkv, .mov, .avi, .ts.
When playback_command is blank, players are tried in this order:
ffplay -> mpv -> vlc -> mpc-hc64 -> mpc-hc
vod-recoveryFrom a checkout:
uv run vod-recoveryThe app asks for a streamer, lists recent streams, searches for a recoverable playlist, lets you choose quality, and downloads the result.
- Searches the exact stream timestamp first, then nearby seconds
- Warns when a stream is older than 60 days
- Stops M3U8 search after 60 seconds
- Writes generated playlists and downloads only under the configured output directory
- Uses explicit playback commands because many default media apps cannot play remote HLS reliably
make install-deps
uv run prek install
make check
make check-fixFocused checks:
make lint
make lint-fix
make check-types
make check-deps
make check-vulns
make check-unused
make check-security
make check-build
make test