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 and Mac.

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.5.tar.gz (85.9 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.5-py3-none-any.whl (76.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: yt_collate-0.0.5.tar.gz
  • Upload date:
  • Size: 85.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.9 {"installer":{"name":"uv","version":"0.12.9","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.5.tar.gz
Algorithm Hash digest
SHA256 041d7d4c98766a6ccdf2c4977d191c33f08150aeb7e0866205568f11e864bcd0
MD5 7a92b516ce92893c0597dce60869dc03
BLAKE2b-256 a4a8b2358feb6c8eb8b9fe4d3598a28c3ce2aa5605e7fc0e8ac35eff8d320780

See more details on using hashes here.

File details

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

File metadata

  • Download URL: yt_collate-0.0.5-py3-none-any.whl
  • Upload date:
  • Size: 76.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.9 {"installer":{"name":"uv","version":"0.12.9","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.5-py3-none-any.whl
Algorithm Hash digest
SHA256 49b6c8f5e095b2f78b471bdfb1d715956379eb851094b932366ecc1027a3e635
MD5 4618503853b048dd89ec597b37259f3d
BLAKE2b-256 f0ad687a687815ded5609e2c6790d0ae373b2d2976ac53df752460f73b149d94

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.0.5 This release

2 files

0.0.4

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