Skip to main content

yt-collate

PyPI AUR

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
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

Install / Update

pipx install yt-collate

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

pipx upgrade yt-collate

Collate is also available on AUR:

yay -S yt-collate

Library playlist
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
uv run pytest # for testing
uv run ruff check . # for linting/formatting

Download files

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

Source Distribution

yt_collate-0.0.4.tar.gz (86.0 kB view details)

Uploaded Source

Built Distribution

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

yt_collate-0.0.4-py3-none-any.whl (76.9 kB view details)

Uploaded Python 3

File details

Details for the file yt_collate-0.0.4.tar.gz.

File metadata

  • Download URL: yt_collate-0.0.4.tar.gz
  • Upload date:
  • Size: 86.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Arch Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for yt_collate-0.0.4.tar.gz
Algorithm Hash digest
SHA256 52f7e8b9d41a3fbfce45a82420385d7179a315ce0daf2954a6794c23c7d82063
MD5 beed2b9c99557423edf761868cdf13aa
BLAKE2b-256 e5ef54a90a1a6d323ea8f92ca54e8d2fbc7b330d053731e47f199efdaf64c213

See more details on using hashes here.

File details

Details for the file yt_collate-0.0.4-py3-none-any.whl.

File metadata

  • Download URL: yt_collate-0.0.4-py3-none-any.whl
  • Upload date:
  • Size: 76.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Arch Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for yt_collate-0.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 bac508f57f3b63e19adda629384b3e0e9ed6bc59ca33b4ee6a3b17873eb4d6c0
MD5 06b0fff9d376f465e43cde465bbfeabd
BLAKE2b-256 d69bb870908988217fe7f0c8d30151e38cae0bd0a252050276abb9582983faa3

See more details on using hashes here.

Release history Release notifications | RSS feed

0.0.5

2 files

This release

0.0.4 This release

2 files

0.0.3

2 files

0.0.2

2 files

0.0.1

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