Skip to main content

A command-line tool to convert YouTube videos to MP3 or MP4 using yt-dlp

Project description

ytconvert-cli

Production-ready YouTube to MP3/MP4 converter.

PyPI

PyPI: ytconvert-cli 1.0.1

Github: click here!

PyPI version Python 3.10+ License: MIT


🚀 Features

  • Convert YouTube videos to MP3 (audio extraction)
  • Download YouTube videos as MP4 (with quality selection)
  • Custom output directory support
  • Progress indicators with download speed and ETA
  • Clean error handling with specific exit codes
  • FFmpeg is bundled—no separate install needed
  • Uses yt-dlp Python API (no shell calls)
  • Pip-installable and PyPI-ready

📦 Installation

From PyPI (recommended)

pip install ytconvert-cli

From source

Fork https://github.com/Alkyones/ytconvert-cli

git clone https://github.com/Yourusername/ytconvert-cli
cd ytconvert-cli
pip install .

🖥️ CLI Usage

# Convert to MP3 (default)
ytconvert https://www.youtube.com/watch?v=VIDEO_ID

# Convert to MP4
ytconvert https://www.youtube.com/watch?v=VIDEO_ID --format mp4

# MP4 with specific quality
ytconvert https://www.youtube.com/watch?v=VIDEO_ID --format mp4 --quality 720p

# Save to custom directory
ytconvert https://www.youtube.com/watch?v=VIDEO_ID -f mp3 -o ./downloads

# Get video info only (no download)
ytconvert https://www.youtube.com/watch?v=VIDEO_ID --info

# Show help
ytconvert --help

Short options:

Long Short Description
--format -f mp3 or mp4
--quality -q Video quality
--output -o Output directory
--info -i Info only
--verbose -v Debug mode
--version -V Show version

🐍 Python API Usage

from ytconvert import YouTubeConverter

# Convert to MP3
converter = YouTubeConverter(output_dir="./downloads")
mp3_path = converter.convert_to_mp3("https://youtube.com/watch?v=VIDEO_ID")
print(f"Saved: {mp3_path}")

# Convert to MP4 with quality
mp4_path = converter.convert_to_mp4("https://youtube.com/watch?v=VIDEO_ID", quality="720p")

# Get video info only
info = converter.get_video_info("https://youtube.com/watch?v=VIDEO_ID")
print(f"Title: {info['title']}")
print(f"Duration: {info['duration']} seconds")

🛠️ Integration Example (Django, subprocess)

import subprocess
import sys

def convert_youtube_video(url: str, format: str = "mp3", quality: str = "best"):
    cmd = [
        sys.executable, "-m", "ytconvert.cli",
        url,
        "--format", format,
        "--output", "/path/to/downloads",
    ]
    if format == "mp4" and quality != "best":
        cmd.extend(["--quality", quality])
    result = subprocess.run(cmd, capture_output=True, text=True)
    if result.returncode == 0:
        return {"success": True, "output": result.stdout}
    else:
        return {"success": False, "exit_code": result.returncode, "error": result.stderr}

⚠️ Exit Codes

Code Meaning
0 Success
1 Invalid YouTube URL
2 Download failure
3 Format or quality unavailable
4 Unexpected error

🏗️ Project Structure

ytconvert-cli/
├── ytconvert/
│   ├── __init__.py      # Package exports
│   ├── cli.py           # CLI entry point
│   ├── converter.py     # yt-dlp logic
│   ├── validators.py    # URL/format validation
**PyPI:** [ytconvert-cli 1.0.2](https://pypi.org/project/ytconvert-cli/1.0.2/)
│   └── utils.py         # Utilities
├── pyproject.toml       # Packaging config
├── README.md            # This file
└── LICENSE              # MIT License

📝 Development

# Run tests
pytest

# Format code
black ytconvert/
ruff check ytconvert/ --fix

# Type check
mypy ytconvert/

📄 License

MIT License - see LICENSE


🙏 Acknowledgments


📢 Disclaimer

This tool is intended for downloading videos you have the right to download. Please respect copyright laws and YouTube's Terms of Service. The authors are not responsible for misuse.

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

ytconvert_cli-1.0.2.tar.gz (12.3 kB view details)

Uploaded Source

Built Distribution

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

ytconvert_cli-1.0.2-py3-none-any.whl (13.5 kB view details)

Uploaded Python 3

File details

Details for the file ytconvert_cli-1.0.2.tar.gz.

File metadata

  • Download URL: ytconvert_cli-1.0.2.tar.gz
  • Upload date:
  • Size: 12.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.4

File hashes

Hashes for ytconvert_cli-1.0.2.tar.gz
Algorithm Hash digest
SHA256 26c3f929071aa2acd76bf303e0dacd20c0335b049bc4e53013cc8f5a2bd6c02c
MD5 b2328be40c73bd1f6b3e0939620582a1
BLAKE2b-256 02084cf82b415b75ad3446a80e7d59f774082fa8dbd5741f2ea290e9647af5c7

See more details on using hashes here.

File details

Details for the file ytconvert_cli-1.0.2-py3-none-any.whl.

File metadata

  • Download URL: ytconvert_cli-1.0.2-py3-none-any.whl
  • Upload date:
  • Size: 13.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.4

File hashes

Hashes for ytconvert_cli-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 c4b7eac435078198ccd68263c9e053cc30a69c2bfcfabac30088f164249f9301
MD5 622eaa5f9f00bcf6851e12b3dff26eae
BLAKE2b-256 e9643f3d7286437dab90b1f215d15ca853bf68c1ddec1be8e519e396cd94e46e

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