Skip to main content

Small wrapper around yt-dlp for common downloads

Project description

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 dependency (optional if you already have yt-dlp)
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 .

Make executable (optional)

chmod +x bin/ez-yt-dlp
cp bin/ez-yt-dlp ~/bin/

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 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.8+
  • yt-dlp (auto-installed if missing)

Release (for maintainers)

# 1. Bump version in pyproject.toml

# 2. Run release script
./release.sh

# 3. Follow prompts to build and upload to PyPI

Requires: pip install build twine (handled by .venv setup)

License

MIT

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

ez_yt_dlp-0.2.1.tar.gz (7.9 kB view details)

Uploaded Source

Built Distribution

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

ez_yt_dlp-0.2.1-py3-none-any.whl (6.0 kB view details)

Uploaded Python 3

File details

Details for the file ez_yt_dlp-0.2.1.tar.gz.

File metadata

  • Download URL: ez_yt_dlp-0.2.1.tar.gz
  • Upload date:
  • Size: 7.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for ez_yt_dlp-0.2.1.tar.gz
Algorithm Hash digest
SHA256 457155395cbc80a16efccaa48336cee6d5f480fb7afada7e261b3ecf415d7159
MD5 ca20dfca660ab0b982b312590ffdff6d
BLAKE2b-256 651202730c6e390828f4d8ca68a6fd1837044effec44aeb4b4b52d9f0805e145

See more details on using hashes here.

File details

Details for the file ez_yt_dlp-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: ez_yt_dlp-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 6.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for ez_yt_dlp-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 8284c7b89aa19e04190c8b92bda176b197fbd164da63d0db4c45e5d89a774554
MD5 27fbe5a5a5175b53a454594c7f7b7471
BLAKE2b-256 501b7cbcc4211c250bb03163064dc35f4f610897364982fca36e811f92ead437

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