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 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, 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.
nfor next track,dto download, etc.) - Easy management of Library (e.g.
oto create playlist,xto 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), andp(put/paste) for songs 0-9keys 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",
sreshuffles queue everytime; I have no use "unshuffling" my queue
Prerequisites
- Python 3.12+
- mpv
- yt-dlp
- 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.
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
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
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 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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
041d7d4c98766a6ccdf2c4977d191c33f08150aeb7e0866205568f11e864bcd0
|
|
| MD5 |
7a92b516ce92893c0597dce60869dc03
|
|
| BLAKE2b-256 |
a4a8b2358feb6c8eb8b9fe4d3598a28c3ce2aa5605e7fc0e8ac35eff8d320780
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
49b6c8f5e095b2f78b471bdfb1d715956379eb851094b932366ecc1027a3e635
|
|
| MD5 |
4618503853b048dd89ec597b37259f3d
|
|
| BLAKE2b-256 |
f0ad687a687815ded5609e2c6790d0ae373b2d2976ac53df752460f73b149d94
|