Show HN: I built the YouTube Music TUI I wanted (Vim registers, 0-9 to seek, –.)

indigo04452 pts0 comments

GitHub - indigo0445/yt-collate: Efficient, well-rounded YouTube Music TUI client · GitHub

/" data-turbo-transient="true" />

Skip to content

Search/

Sign in<br>Sign upAppearance settings

You signed in with another tab or window. Reload to refresh your session.<br>You signed out in another tab or window. Reload to refresh your session.<br>You switched accounts on another tab or window. Reload to refresh your session.

Dismiss alert

{{ message }}

indigo0445

yt-collate

Public

Notifications<br>You must be signed in to change notification settings

Fork

Star

main

BranchesTags

Go to file

CodeOpen more actions menu

Latest commit

History<br>46 Commits<br>46 Commits

Folders and files<br>NameNameLast commit message<br>Last commit date<br>assets

assets

src

src

tests

tests

.gitignore

.gitignore

LICENSE

LICENSE

README.md

README.md

pyproject.toml

pyproject.toml

todo.txt

todo.txt

uv.lock

uv.lock

View all files

Repository files navigation

yt-collate

Motivation: This is a personal passion project I made in my spare time, after I realized no YTM client had all the features/specs/quirks I wanted

A Terminal User Interface client for YouTube Music, with a focus on efficiency and ease-of-use while also offering a comprehensive feature list .

Originally planned to only focus on gathering/arranging tracks in playlists (hence name), Collate has become a full-fledged music client that is reliable and "just works". Developed for Linux (likely compatible with Mac; untested yet).

Built with Textual , ytmusicapi , mpv , and yt-dlp . Keybinds are a mix of Vim binds and general binds for efficient keyboard navigation (mouse is supported as well). Collate is inspired by youtube-music-cli and yazi; check them out!

Home page, with personalized recommendations once authenticated

Features

Clean, minimalistic, modern TUI client for YouTube Music

Extremely fast, lightweight, and responsive

Authentication to access your Library and personalized recommendations

Includes YouTube Music Home, Explore, Search, and Trending pages

Smooth playback experience, with a simple dynamic queue

Download songs/playlists to local / automatic audio retrieval from local

Vast set of intuitive keybinds (e.g. n for next track, d to download, etc.)

Easy management of Library (e.g. o to create playlist, x to delete song/playlist, etc.)

"Marking" playlists to easily add to collection from anywhere

YouTube Music subscribers benefit from enhanced audio bitrate (both streams and downloads)

Discord Rich Presence integration

Distinct Touches

Has Vim's "unnamed register" for x (cut), y (yank), and p (put/paste) for songs

0-9 keys jump around current track, imitating YouTube's playback keybinds

Audio bitrate indicator, originally added to verify enhanced premium bitrate

Local filter / can jump to line numbers, allowing fast go-tos

Search screen accepts YouTube URLs, useful if you prefer exploring YouTube on a browser (me)

Option to hide "Episodes for Later" in Library, I'm sure many find this annoying (me)

No concept of "unshuffle", s reshuffles queue everytime; I have no use "unshuffling" my queue

Prerequisites

Python 3.12+

mpv

yt-dlp (nightly build) (Certain non-music videos will not play on current stable build. Can run yt-dlp --update-to nightly)

Deno or Node or QuickJS (A JS runtime is needed for yt-dlp to reliably fetch)

Install / Update

pipx install yt-collate

Make sure ~/.local/bin is in your PATH.<br>When a new version is released, update with:

pipx upgrade yt-collate

Collate is also available on AUR:

yay -S yt-collate

Library playlist, with a local filter (/) and download notification

Usage

To set up authentication, run:

yt-collate auth

and follow the prompts. The file is written to ~/.config/yt-collate/browser.json, and this will likely last a few years. Run Collate with:

yt-collate

Press ? in-app to view list of all keybinds.

Config

Data lives under ~/.config/yt-collate/. Downloads appear in ~/Music/yt-collate.

Development

Contributions are welcome! As a start, consider adding your favorite genre to GENRES in src/services/random_song.py.

uv sync --group dev # install dev packages<br>uv run pytest # for testing<br>uv run ruff check . # for linting/formatting

About<br>Efficient, well-rounded YouTube Music TUI client<br>Topics<br>climpvtextualtuiyoutubeyoutube-cliyoutube-musicyoutube-music-player<br>Resources<br>Readme<br>MIT license<br>Activity<br>Stars<br>1 star<br>Watchers<br>0 watching<br>Forks<br>0 forks<br>Report repository

Releases

Packages

Contributors

Languages

You can’t perform that action at this time.

collate music youtube client local keybinds

Related Articles