A video downloader rewritten in Rust from the Python downloader.py. Downloads videos from multiple platforms using yt-dlp.
- π Automatic yt-dlp Download: Automatically downloads yt-dlp from GitHub Releases to
./binaries/if not installed on the system - π― Platform Auto-Detection: Automatically detects Twitch, YouTube, Twitter/X, niconico, SoundCloud, Instagram, TikTok, bilibili from URLs and uses optimal settings
- π 3 Operating Modes: Interactive loop mode, single URL mode, and batch mode
- βοΈ Detailed Customization: output directory, quality, format, audio extraction, subtitle options, and more
- πͺ Cookie Support: Browser cookie authentication support
- π¦ Single Executable: Runs as a single compiled Rust executable
- β‘ Fast & Lightweight: High performance with Rust
-
YouTube (youtube.com, youtu.be)
- Chrome cookie authentication
- Best quality (bestvideo+bestaudio)
- Thumbnail & metadata embedding
- Processed as access from Japan
-
Twitch (twitch.tv)
- Saved in 1080p60
- Thumbnail & metadata embedding
-
Twitter/X (twitter.com, x.com)
- Saved in MP4 format
- Thumbnail & metadata embedding
-
niconico (nicovideo.jp, nico.ms)
- Best quality priority (
bestvideo+bestaudio/best) - Japan region bypass settings
- Best quality priority (
-
SoundCloud (soundcloud.com)
- Audio-first quality selection (
bestaudio/best)
- Audio-first quality selection (
-
Instagram (instagram.com)
- Generic browser User-Agent optimization
-
TikTok (tiktok.com)
- Generic browser User-Agent optimization
-
bilibili (bilibili.com, b23.tv)
- Generic high-quality setting (
bv*+ba/b)
- Generic high-quality setting (
-
Other Sites
- Best quality priority (
bv*+ba/b) - Subtitle download only when explicitly requested via options
- Chrome cookie authentication (default)
- Best quality priority (
# Release build
cargo build --release
# Executable is generated at target/release/downloader.exe# Clone the repository
git clone <repository-url>
cd Downloader
# Release build
cargo build --releaseLaunch without arguments to download multiple URLs continuously.
.\target\release\downloader.exe
# Enter URLs continuously
URL> https://www.youtube.com/watch?v=...
URL> https://www.twitch.tv/videos/...
URL> exit # Or quit, Ctrl+C to exitExit methods:
- Type
exitorquit - Force exit with Ctrl+C
- EOF with Ctrl+Z (Windows) or Ctrl+D (Unix)
Download one URL and exit.
.\target\release\downloader.exe --url "https://www.youtube.com/watch?v=..."Use yt-dlp for extraction only, then perform the actual file download in Rust.
.\target\release\downloader.exe --url "https://www.youtube.com/watch?v=..." --rust-downloadHigh-performance is the default. To use a more conservative mode (less CPU/parallelism):
.\target\release\downloader.exe --url "https://www.youtube.com/watch?v=..." --rust-download --rust-normal-perfDeveloper diagnostics example (prints detailed stream/range info to terminal):
.\target\release\downloader.exe --url "https://www.youtube.com/watch?v=..." --rust-download --dev--rust-downloadis available only with--url(single URL mode)- No automatic fallback to regular yt-dlp download in this mode
- If it hangs or fails, rerun without
--rust-download - Detailed logs are written to
%USERPROFILE%/downloader/errorlog/*.log - Tuning options (with
--rust-download):- By default, aggressive performance settings are used
--rust-normal-perf: use more conservative settings to reduce CPU and network load--rust-chunk-mb <int>--rust-chunk-workers <int>--rust-runtime-threads <int>
--dev: prints developer-oriented diagnostics to terminal
Download multiple URLs at once.
.\target\release\downloader.exe --urls "https://youtube.com/..." "https://twitch.tv/..." "https://x.com/...".\target\release\downloader.exe --helpUpdate the downloader itself to the latest GitHub Release binary.
.\target\release\downloader.exe -u
# or
.\target\release\downloader.exe --updateRelease notes are maintained in Changelog.md.
This program searches for yt-dlp in the following priority order:
- System PATH: Uses it if
yt-dlpcommand is available - Local Binary: Uses it if
./binaries/yt-dlp.exeexists - Automatic Download: Automatically downloads from GitHub Releases if the above are not found
If yt-dlp is not found on first run, it will be downloaded automatically.
Downloaded videos are saved to the directory where the program is executed (current directory).
Filename: {video title}.{extension}
- yt-dlp - Video download tool (automatic download)
- Rust 1.70 or higher
BSD-2-Clause