Skip to main content

🎬 vyank - YouTube Downloader

vyank is a small Tkinter desktop tool for downloading YouTube videos, audio, playlists, and channel videos. It uses yt-dlp by default for reliable downloads, keeps pytubefix available as an alternate backend, and uses ffmpeg for merging separate high-resolution video and audio streams into a final MP4 file.

✅ Features

  • Simple Tkinter GUI with tabs for different download workflows
  • Download a single YouTube video
  • Download comma-separated video URLs from the General tab
  • Download audio-only streams
  • Download playlists
  • Download channel videos
  • Automatically sanitizes video titles for safe filenames
  • Downloads to the user Downloads folder by default
  • Uses yt-dlp as the default downloader backend
  • Keeps pytubefix as a selectable alternate backend
  • Top-of-window downloader engine selector: yt-dlp or pytubefix
  • Uses FFmpeg to merge adaptive video-only and audio-only streams
  • Packaged with a vyank console entry point for PyPI installation

⚠️ Important Notes

YouTube Terms

Only download content that you own, are allowed to download, or are permitted to use under the content owner's terms. YouTube access behavior may change over time, so updating yt-dlp or pytubefix may occasionally be required.

FFmpeg Requirement

vyank needs FFmpeg for video downloads that require separate video and audio streams to be merged.

The application calls ffmpeg from your system PATH. Check whether FFmpeg is available:

ffmpeg -version

💾 Installation

uv tool install vyank

For local development from this repository:

cd /path/to/vyank
python -m venv .venv
source .venv/bin/activate
pip install -e .

🚀 Usage

Launch the GUI after installation:

vyank

Run directly from the repository without installing:

python -m vyank.main

If you use the included virtual environment during development:

.venv/bin/python -m vyank.main

🖥️ GUI Workflow

Downloader Engine

At the top of the GUI, choose the download engine:

  • yt-dlp is the default and recommended backend.
  • pytubefix remains available as an alternate backend.

Use yt-dlp first for normal downloads. Switch to pytubefix only if you specifically want the older backend behavior.

General Tab

Use the General tab for one or more normal YouTube video URLs.

  1. Paste a YouTube URL into the input field.
  2. For multiple videos, separate URLs with commas.
  3. Choose the output directory.
  4. Select the download mode:
    • Video downloads the highest available MP4 video stream and merges audio with FFmpeg.
    • Audio downloads audio only.
    • Video and Audio downloads both outputs in one click: a merged video .mp4 with audio and a separate audio-only .m4a file when yt-dlp selects m4a audio.
  5. Click Download.

Playlist Tab

Use the Playlist tab for a YouTube playlist URL.

  1. Paste the playlist URL.
  2. Choose the output directory.
  3. Select video or audio mode.
  4. Click Download.

Channel Tab

Use the Channel tab for a YouTube channel URL.

  1. Paste the channel URL.
  2. Choose the output directory.
  3. Click Download.

📁 Default Download Folder

By default, downloads go to:

Linux/macOS:

~/Downloads

You can override this from the GUI by choosing another output directory.

📦 Project Structure

vyank/
├── CHANGELOG.md
├── LICENSE
├── MANIFEST.in
├── README.md
├── pyproject.toml
└── vyank/
    ├── main.py
    ├── application/
    │   ├── config.py
    │   └── core.py
    ├── basic_functions/
    │   ├── os_funs.py
    │   └── text.py
    └── gui/
        ├── gui.py
        └── tab_base.py

🔧 Development Setup

Clone the repository:

git clone https://github.com/benevantmathew/vyank.git
cd vyank

Create and activate a virtual environment:

python -m venv .venv
source .venv/bin/activate

Install the package in editable mode:

pip install -e .

Install build tools when preparing a release:

pip install build twine

Run a quick import/compile check:

python -m compileall -q vyank
python -c "import vyank.main; print('vyank import ok')"

🧪 Build and PyPI Readiness

Build source and wheel distributions locally:

python -m build

Check the generated distributions:

twine check dist/*

Install the locally built wheel for testing:

pip install --force-reinstall dist/vyank-0.2.0-py3-none-any.whl

Run the installed command:

vyank
twine upload dist/*

📌 Package Metadata

  • Package name: vyank
  • Current version: 0.2.0
  • Python requirement: >=3.10
  • License: MIT
  • Author: Benevant Mathew
  • Repository: https://github.com/benevantmathew/vyank
  • Main GUI entry point: vyank.main:main
  • Console script: vyank

🧩 Runtime Dependencies

Python packages:

  • yt-dlp
  • pytubefix

System packages:

  • ffmpeg
  • tkinter / Tk support for your Python installation

On some Linux distributions, Tkinter is packaged separately. If the GUI fails with a Tkinter import error, install the Tk package for your Python version.

📝 Changelog

See CHANGELOG.md for release notes.

📄 License

This project is licensed under the MIT License. See LICENSE for details.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

vyank-0.2.0.tar.gz (12.9 kB view details)

Uploaded Source

Built Distribution

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

vyank-0.2.0-py3-none-any.whl (11.7 kB view details)

Uploaded Python 3

File details

Details for the file vyank-0.2.0.tar.gz.

File metadata

  • Download URL: vyank-0.2.0.tar.gz
  • Upload date:
  • Size: 12.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.12

File hashes

Hashes for vyank-0.2.0.tar.gz
Algorithm Hash digest
SHA256 668ef55c7618799b504028bd893ea3009be1a20748485122a28754e5874cce20
MD5 39a790589b25f6e2c40f4845ffd7584d
BLAKE2b-256 49e4e7687eebe426134d5ddfaefd2ad877c0e38ee71e508483de8b404675c69d

See more details on using hashes here.

File details

Details for the file vyank-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: vyank-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 11.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.12

File hashes

Hashes for vyank-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 08a4d733d467a4c565b9ea09ff7487b52faf2324e24ee1cba102e8ac5591b111
MD5 9be4e212121e236dda01cd1d0af9cf19
BLAKE2b-256 6346397a7047c1bd844b5b0b81f5143e79f10f1c3a85ab5d13fb75209931e07e

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page