Modern YouTube downloader CLI with subtitle cleaning, parallel downloads, SponsorBlock, and sound notifications
Project description
MelT — Modern YouTube Downloader CLI
Download video, audio, and subtitles from YouTube with a modern CLI. Supports playlists, parallel downloads, thumbnail/subtitle embedding, SponsorBlock, and more.
Quick Start
Download from Releases (recommended):
https://github.com/Agaroth0x1e/melt/releases
melt.exe— Windows (standalone, ffmpeg bundled)melt— Linux (standalone, ffmpeg bundled)
Install via pip (PyPI):
pip install meltdl
Or install direct wheel (no PyPI):
pip install https://github.com/Agaroth0x1e/melt/releases/download/v1.0.2/melt-1.0.2-py3-none-any.whl
From source:
pip install -r requirements.txt
python main.py
Termux (Android): See BUILD.md#termux-android for full setup guide.
Pre-built binaries bundle ffmpeg. Source mode requires ffmpeg in PATH (scoop install ffmpeg / brew install ffmpeg / sudo apt install ffmpeg).
Features
- Single video & playlist downloads
- Multi-URL support (paste space-separated URLs)
- Batch file loading (
@file.txt) - Video (mp4) or Audio (m4a) with thumbnail embedding
- Subtitle download with roll-up caption cleaning
- Subtitle embedding into video/audio
- Parallel downloads (configurable threads)
- SponsorBlock integration (auto-skip sponsored segments)
- Dry-run mode to preview before downloading
- Download queue persistence (resume crashes with
--resume) - Rate limiting, cookies file support, archive dedup
- Standalone .exe with bundled ffmpeg
Usage
python main.py # Interactive mode
python main.py --resume # Resume interrupted queue
python main.py --help # Show help
python main.py --version # Show version
Multi-URL
Enter YouTube URL: https://youtu.be/A https://youtube.com/playlist?list=XYZ
Batch file
Enter YouTube URL: @videos.txt
File format (one URL per line, # for comments):
https://youtu.be/A
https://youtube.com/playlist?list=XYZ
# This line is ignored
Configuration
Edit config/config.json:
| Key | Default | Description |
|---|---|---|
max_threads |
3 |
Parallel downloads |
default_format |
"video" |
"video" or "audio" |
clear_temp |
true |
Delete temp files after download |
numbering |
false |
Prepend index to filenames |
duplicate_action |
"skip" |
"skip", "overwrite", or "keep" |
sponsorblock |
true |
Skip sponsored segments |
dry_run |
false |
Preview without downloading |
exit_on_complete |
false |
Exit after download (false = loop back) |
reverse_playlist |
false |
Process newest-first |
rate_limit |
"" |
e.g. "5M", empty = unlimited |
cookies_file |
"" |
Path to cookies.txt |
playlist_folder_template |
"%(playlist_title)s" |
Subfolder naming for playlists |
timeout_seconds |
5 |
Seconds before auto-confirm prompts |
video.preferred_format |
"mp4" |
"mp4", "mkv", or "webm" |
video.quality_priority |
["480","360","720"] |
Preferred resolutions |
video.preferred_codec |
"h264" |
"h264", "h265", or "vp9" |
audio.preferred_format |
"m4a" |
"m4a", "mp3", or "opus" |
audio.quality_priority |
["128","192","264"] |
Preferred bitrates |
audio.default_quality |
128 |
Fallback bitrate |
subtitle.prefer_human |
true |
Prefer human subs over auto |
subtitle.language |
"en" |
Language code |
subtitle.preferred_format |
"srt" |
"srt", "vtt", or "ass" |
Build from Source
See BUILD.md for platform-specific build instructions.
Requirements
- Python 3.8+
- ffmpeg (bundled in .exe, system install for source)
- Node.js (optional, 2x yt-dlp speed)
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file meltdl-1.0.2.tar.gz.
File metadata
- Download URL: meltdl-1.0.2.tar.gz
- Upload date:
- Size: 159.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8817a3c08ed7c6b9b5e093232d97db7c54ade1735e3d913e92465962531bd30d
|
|
| MD5 |
5c2c12f032a0ddb6463363d6e18b3b57
|
|
| BLAKE2b-256 |
3b778b82689c1a8d6c4697b081ce49a5edf29359d67a2e6bf047a4c2fe64e02a
|
File details
Details for the file meltdl-1.0.2-py3-none-any.whl.
File metadata
- Download URL: meltdl-1.0.2-py3-none-any.whl
- Upload date:
- Size: 157.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7df929f1d8f6407d3219b2a8eb42186cba200fcfc77bfb97e644d0b7264810ef
|
|
| MD5 |
e6bb6bd1e70792d13c86bd2a073458f5
|
|
| BLAKE2b-256 |
c584159896b6d9598ec77c1b04cf08b0e0062bcd10439697dd6552ed3f1872d1
|