Skip to main content

A terminal UI wrapper for yt-dlp — paste URL, pick format, download

Project description

yank ⬇️

yank the web. Paste a URL, pick a format, download. No flags to remember.

                      __
   __  ______ _____  / /__
  / / / / __ `/ __ \/ //_/
 / /_/ / /_/ / / / / ,<
 \__, /\__,_/_/ /_/_/|_|
/____/

         yank the web

    Paste a video URL · or multiple URLs (one per line) for batch

  ┌────────────────────────────────────────────────────────────────┐
  │ https://…                                                      │
  └────────────────────────────────────────────────────────────────┘

  ┌──────────────┐  ┌────────────────┐  ┌──────────────┐
  │   Continue   │  │   Batch mode   │  │    Clear     │
  └──────────────┘  └────────────────┘  └──────────────┘

  Queue [F2]    History [F3]    Settings [F4]

Features

  • URL input — paste one or multiple URLs, auto-detects platform (YouTube, TikTok, Twitter/X, Instagram, Vimeo, etc.)
  • Format browser — interactive table of available formats with resolution, codec, filesize
  • Download manager — real-time progress bars with speed, ETA, per-download controls
  • Queue system — batch multiple downloads, reorder, pause, cancel
  • History — every download logged with title, URL, format, and status
  • Settings — default download directory, format preferences, concurrent downloads, audio extraction
  • yt-dlp management — auto-installs and updates yt-dlp, no manual setup
  • Beautiful dark theme — purple/cyan accent palette with tasteful terminal styling
  • Keyboard + mouse — navigate with arrow keys or click

Installation

Quick install (recommended)

pipx install yank-tui

Or from source:

git clone https://github.com/wanazhar/yank.git
cd yank
uv venv
uv sync

Usage

yank

Or from source:

cd yank && .venv/bin/python -m yank

Workflow

  1. Paste a URL — the app opens to a clean input screen. Paste a video URL (YouTube, TikTok, etc.)
  2. Choose format — browse available formats in a sortable table. Best quality is pre-selected
  3. Configure options — set output directory, filename template, subtitles, thumbnail
  4. Download — watch real-time progress with speed and ETA
  5. Done — file saved, logged to history

Keyboard shortcuts

Key Action
Esc Back / Quit
F2 Queue view
F3 History
F4 Settings
Ctrl+Q Quit
Ctrl+P Palette
↑↓ Navigate
Space Select
Enter Confirm

Configuration

Config stored at ~/.config/yank/config.toml:

download_dir = "/home/user/Downloads"
format_preference = "best"
max_concurrent = 2
filename_template = "%(title)s.%(ext)s"
subtitle_lang = "en"

How it works

yank wraps yt-dlp as a Python library (not subprocess). All format extraction, downloading, and metadata handling goes through yt_dlp.YoutubeDL with progress hooks. The TUI is built with Textual — a modern Python terminal UI framework.

The app is fully local. No cloud, no accounts, no telemetry. Your downloads and history never leave your machine.

Requirements

  • Python 3.11+
  • A terminal that supports 24-bit color (most modern terminals do)
  • ffmpeg (optional — needed for some format merges and audio extraction)

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

yank_tui-0.1.1.tar.gz (54.6 kB view details)

Uploaded Source

Built Distribution

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

yank_tui-0.1.1-py3-none-any.whl (48.5 kB view details)

Uploaded Python 3

File details

Details for the file yank_tui-0.1.1.tar.gz.

File metadata

  • Download URL: yank_tui-0.1.1.tar.gz
  • Upload date:
  • Size: 54.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.18 {"installer":{"name":"uv","version":"0.11.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for yank_tui-0.1.1.tar.gz
Algorithm Hash digest
SHA256 3fb749fa24c89099dd5320154b5fd769e2da4d993b8e3827c46e666b8c7b55a8
MD5 1741a788c463879fb1ff4e9244dca79f
BLAKE2b-256 b0280e070dd57c7f95d1e0b8eda694456696e275904994f5d592938fb4c5d98a

See more details on using hashes here.

File details

Details for the file yank_tui-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: yank_tui-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 48.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.18 {"installer":{"name":"uv","version":"0.11.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for yank_tui-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 0ce47ea8e7c8e3d0b8d1758e78056240e4a8f8a607c4435675374be84c8f1445
MD5 c60aee705fe2ba0d1dd6f7b60ee64e18
BLAKE2b-256 c2863d5acbd021f1a406b6c55813038908f34c5e844ae042ef1ad405b7b08a5e

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