Skip to main content

Simple multi-platform downloader for social media and direct stream/video URLs.

Project description

ytd-wrap

Download videos from social media platforms and direct stream URLs — a friendly wrapper around yt-dlp.

Maintainer: Shyam Darshanam (Shyam-Dev18)

PyPI Python License: MIT


Features

  • Arrow-key format selection — pick resolution and codec interactively
  • Smart container selection — mp4 for H.264/AAC, mkv for everything else
  • Rich terminal output — progress bars, tables, and coloured panels
  • One-command doctor — verifies all dependencies in one shot
  • Non-blocking update checks — notified of new versions once per day
  • Graceful error handling — actionable hints for age-restriction, geo-blocks, and missing ffmpeg

Prerequisites

Python 3.11 or newer

Download from https://python.org/downloads/.

ffmpeg

ffmpeg must be on your system PATH. Pick the instructions for your OS:

macOS (Homebrew)

brew install ffmpeg

Windows (winget)

winget install --id Gyan.FFmpeg -e

Windows (Chocolatey)

choco install ffmpeg

Debian / Ubuntu

sudo apt update && sudo apt install ffmpeg

Fedora / RHEL

sudo dnf install ffmpeg

Verify the installation:

ffmpeg -version

Installation

pip install ytd-wrap

Or for development:

git clone https://github.com/example/ytd-wrap.git
cd ytd-wrap
pip install -e ".[dev]"

Usage

Download a social media video

ytd-wrap "https://www.youtube.com/watch?v=dQw4w9WgXcQ"

The tool will:

  1. Fetch available formats and display them in a table
  2. Let you pick resolution/quality with arrow keys
  3. Download with a live progress bar
  4. Report the saved file path

Download a direct stream / m3u8

ytd-wrap "https://example.com/stream/video.m3u8"
ytd-wrap "https://example.com/video.mp4"

Direct URLs skip format selection and download with the best available quality automatically.

Show version

ytd-wrap --version

Check environment health

ytd-wrap doctor

Checks:

  • Python version (3.11+ required)
  • yt-dlp installed and importable
  • ffmpeg found on PATH

Shows OS-specific install hints if anything is missing.


Supported sites

ytd-wrap uses yt-dlp under the hood, which supports 1 000+ sites including:

Platform Notes
YouTube Full format selection, age-gated content with cookies
Twitter / X Videos from tweets
Instagram Reels, posts, stories
TikTok Public videos
Twitch VODs and clips
Vimeo Public videos
Direct URLs .m3u8, .mp4, .mkv, .webm, .ts streams

Output format logic

Video codec Audio codec Container
h264 aac .mp4
h264 mp4a .mp4
vp9 any .webm
anything else anything .mkv

Files are saved to ~/Downloads/ (falls back to ~/ if Downloads does not exist).


Troubleshooting

ERROR: Sign in to confirm your age

This video is age-restricted. Sign in to YouTube in your browser, then pass your browser cookies to yt-dlp directly:

yt-dlp --cookies-from-browser chrome "https://..."

ERROR: The uploader has not made this video available in your country

The content is geo-blocked. Use a VPN to access it from a supported region.

ERROR: ffmpeg is not installed

Install ffmpeg (see Prerequisites) and ensure it is on your system PATH.

postprocessing: error

ffmpeg found an incompatible stream. Try selecting a different format or use ytd-wrap doctor to confirm ffmpeg is working.

ERROR: This video is available to this channel's members

Members-only content requires a session cookie from a subscribed account.

Download starts but no file appears

Check ~/.ytd-wrap/logs/ytd-wrap.log for details.


License

MIT — see LICENSE for details.

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

ytd_wrap-1.0.0.tar.gz (47.7 kB view details)

Uploaded Source

Built Distribution

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

ytd_wrap-1.0.0-py3-none-any.whl (35.5 kB view details)

Uploaded Python 3

File details

Details for the file ytd_wrap-1.0.0.tar.gz.

File metadata

  • Download URL: ytd_wrap-1.0.0.tar.gz
  • Upload date:
  • Size: 47.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for ytd_wrap-1.0.0.tar.gz
Algorithm Hash digest
SHA256 01cb136eb747f2163a02c008561e76702ebbe75e25f77c324909748128989041
MD5 1bed20ba34ec9510cf4f13ef84940544
BLAKE2b-256 b709b85187e132eff082fcc90706cee3d3079fa7ae413d897e152b9485f115db

See more details on using hashes here.

File details

Details for the file ytd_wrap-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: ytd_wrap-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 35.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for ytd_wrap-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 caa485e21bf889f4f057f2fe5be9c1c3311d15f2be0bc302fd376ef5b5b609db
MD5 0c4d865941da7d72f483b054c789d470
BLAKE2b-256 b16b058e279dab807dca1eaf2a4056ff1098ef5a31994a08517161c0fa9bca0a

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