ez-yt-dlp
Small, focused wrapper around yt-dlp to make common downloads easier.
This is a single-file Python module that provides a clean CLI for downloading videos and audio from YouTube and other sites supported by yt-dlp.
Features
- Simple CLI - argparse-based with sensible defaults
- Interactive mode - Run without arguments for guided prompts
- Video/Audio modes - Download video (mp4) or extract audio (mp3, m4a, etc.)
- Playlist support - Download single items or entire playlists
- Dry-run - Preview commands before executing
- Auto-install - Attempts to install yt-dlp if missing (can be disabled)
Install
From source
# Install yt-dlp for direct use
python3 -m pip install --user -r requirements.txt
# Run directly
python3 ez_yt_dlp.py --help
# Or install as a package
python3 -m pip install --user .
Installing the package provides the ez-yt-dlp command.
Usage
Interactive mode
ez-yt-dlp
# or
python3 ez_yt_dlp.py
Command-line mode
# Download video (default)
ez-yt-dlp "https://www.youtube.com/watch?v=..."
# Download audio (mp3)
ez-yt-dlp --audio "https://www.youtube.com/watch?v=..."
# Download audio playlist as m4a
ez-yt-dlp --audio --format m4a --playlist "https://..."
# Custom output directory
ez-yt-dlp --output ~/Downloads "https://..."
# Dry-run (preview command)
ez-yt-dlp --dry-run --audio "https://..."
# Don't auto-install yt-dlp
ez-yt-dlp --no-install "https://..."
Options
positional arguments:
url URL to download (if omitted, interactive mode starts)
optional arguments:
-h, --help Show help message
-v, --video Download video (default)
-a, --audio Extract audio
-p, --playlist Download entire playlist
-o, --output DIR Save directory (default: ~/Videos)
-f, --format FMT Audio format with --audio (e.g., mp3, m4a)
--dry-run Print command without executing
--no-install Don't auto-install yt-dlp
--version Show version and exit
Development
Run tests
python3 -m pip install -e ".[dev]"
python3 -m pytest -v
# or without pytest
python3 tools/run_tests_no_pytest.py
Project structure
ez-yt-dlp/
├── ez_yt_dlp.py # Main module
├── bin/ez-yt-dlp # Executable wrapper
├── tests/test_cli.py # Test suite
├── pyproject.toml # Package config
└── README.md # This file
Requirements
- Python 3.10+
- yt-dlp
- ffmpeg and ffprobe for video merging and audio extraction
Release (for maintainers)
# 1. Bump version in pyproject.toml and ez_yt_dlp.py
# 2. Run release script
./release.sh
# 3. Follow prompts to build and upload to PyPI
Requires: python3 -m pip install -e ".[dev]" (handled by .venv setup)
License
MIT
Release files for ez-yt-dlp 0.2.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| ez_yt_dlp-0.2.2.tar.gz | 9.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ez_yt_dlp-0.2.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 15.7 kB
Release files / ez_yt_dlp-0.2.2.tar.gz
| Download URL | ez_yt_dlp-0.2.2.tar.gz |
|---|---|
| Size | 9.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e19874893845b24ca0358129877f81de3b9c11077ab7d09f80fb5a77bbf3bd62
|
|
BLAKE2b-256 checksum How to use checksums |
7114dd255fb1c06ef0fb646a8dcc6bf8d68fb4326ef40d060ea2c4ac9a673971
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.7
|
Release files / ez_yt_dlp-0.2.2-py3-none-any.whl
| Download URL | ez_yt_dlp-0.2.2-py3-none-any.whl |
|---|---|
| Size | 6.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ee75cef8b6f0a4c2808ec906b7d741e4e198ba73b13127145c38aae5bfb7c9af
|
|
BLAKE2b-256 checksum How to use checksums |
4e4f96667a2e11d065a812c04a77a19e416273e07db4c28acb5b721173daf9ae
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.7
|