🎬 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
Downloadsfolder by default - Uses
yt-dlpas the default downloader backend - Keeps
pytubefixas a selectable alternate backend - Top-of-window downloader engine selector:
yt-dlporpytubefix - Uses FFmpeg to merge adaptive video-only and audio-only streams
- Packaged with a
vyankconsole 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-dlpis the default and recommended backend.pytubefixremains 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.
- Paste a YouTube URL into the input field.
- For multiple videos, separate URLs with commas.
- Choose the output directory.
- Select the download mode:
Videodownloads the highest available MP4 video stream and merges audio with FFmpeg.Audiodownloads audio only.Video and Audiodownloads both outputs in one click: a merged video.mp4with audio and a separate audio-only.m4afile when yt-dlp selects m4a audio.
- Click
Download.
Playlist Tab
Use the Playlist tab for a YouTube playlist URL.
- Paste the playlist URL.
- Choose the output directory.
- Select video or audio mode.
- Click
Download.
Channel Tab
Use the Channel tab for a YouTube channel URL.
- Paste the channel URL.
- Choose the output directory.
- 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-dlppytubefix
System packages:
ffmpegtkinter/ 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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
668ef55c7618799b504028bd893ea3009be1a20748485122a28754e5874cce20
|
|
| MD5 |
39a790589b25f6e2c40f4845ffd7584d
|
|
| BLAKE2b-256 |
49e4e7687eebe426134d5ddfaefd2ad877c0e38ee71e508483de8b404675c69d
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
08a4d733d467a4c565b9ea09ff7487b52faf2324e24ee1cba102e8ac5591b111
|
|
| MD5 |
9be4e212121e236dda01cd1d0af9cf19
|
|
| BLAKE2b-256 |
6346397a7047c1bd844b5b0b81f5143e79f10f1c3a85ab5d13fb75209931e07e
|