Skip to main content

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:

pip install https://github.com/Agaroth0x1e/melt/releases/download/v1.0.1/melt-1.0.1-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

meltdl-1.0.1.tar.gz (151.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

meltdl-1.0.1-py3-none-any.whl (148.0 kB view details)

Uploaded Python 3

File details

Details for the file meltdl-1.0.1.tar.gz.

File metadata

  • Download URL: meltdl-1.0.1.tar.gz
  • Upload date:
  • Size: 151.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.5

File hashes

Hashes for meltdl-1.0.1.tar.gz
Algorithm Hash digest
SHA256 a1013dd22b7fd596aa84c4ff817904a50c2b26ff241b06a5a001b0d63e3b02f6
MD5 f0aaf7dca1128c3ec9224ed502f0ac1c
BLAKE2b-256 c610ebb49323ed0801874ff9699c12378253c867d9ee7885aa938e8b5893e7f1

See more details on using hashes here.

File details

Details for the file meltdl-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: meltdl-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 148.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.5

File hashes

Hashes for meltdl-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 565914f4722e610cddb2b97e907b8088f548421b65923779342482bd659c3080
MD5 d26f7727173f1b9cfac2e65c5f6f3157
BLAKE2b-256 ed02240f3fa66b88f161077b6dd91e0fedda7bf0e3d54a808454b4fe5b53a580

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page