| Crates.io | youtui |
| lib.rs | youtui |
| version | 0.0.35 |
| created_at | 2023-12-03 14:48:31.05769+00 |
| updated_at | 2026-01-14 09:11:42.414427+00 |
| description | A simple TUI YouTube Music player |
| homepage | https://github.com/nick42d/youtui |
| repository | https://github.com/nick42d/youtui |
| max_upload_size | |
| id | 1056935 |
| size | 882,623 |
Youtui - a simple TUI YouTube Music player written in Rust aiming to implement an Artist->Albums workflow for searching for music, and using discoverability principles for navigation. Inspired by https://github.com/ccgauche/ytermusic/ and cmus.
Ytmapi-rs - an asynchronous API for YouTube Music using Google's internal API, Tokio and Reqwest. Inspired by https://github.com/sigma67/ytmusicapi/.
This project is not supported or endorsed by Google.
paru -S youtui
pkg install youtui
cargo install youtui --locked
youtui with no arguments.youtui --help to see available commands.music.youtube.com.Cookie into a text file named cookie.txt into your local youtui config directory. Note you will need to create the directory if it does not exist.
Firefox example (Right click and Copy Value):
config.toml file in the local youtui config directory (e.g ~/.config/youtui/ on Linux).config.toml format is unstable and may change in future.config.tomls have been provided in the youtui/config/ directory in the project.auth_type = "OAuth".downloader_type = "YtDlp".yt-dlp can be supplied as yt_dlp_command = "command".config.toml (see examples for the syntax).po_token.txt into your local youtui config directory. For more information on PO Tokens and how to obtain them, see here.OAuth client ID for the application type TVs and Limited Input devices.youtui setup-oauth with your Client ID and Client Secret and following the instructions. This will create a new oauth.json file in the default configuration directory.libasound2-dev (Debian / Ubuntu)alsa-lib-devel (Fedora)alsa-lib (Arch)Feature parity with ytmusicapi
| Endpoint | Implemented: Query | Implemented: Continuations |
|---|---|---|
| GetArtist | [x]* | |
| GetAlbum | [x] | |
| GetArtistAlbums | [x] | |
| Search | [x] | [x] |
| GetSearchSuggestions | [x] | |
| GetHome | Not Planned* | |
| GetAlbumBrowseId | [ ] | |
| GetUser | [x] | |
| GetUserPlaylists | [x] | |
| GetUserVideos | [x] | |
| GetSong | [ ]* | |
| GetSongRelated | Not Planned* | |
| GetLyrics | [x] | |
| GetTasteProfile | [x] | |
| SetTasteProfile | [x] | |
| GetMoodCategories | [x] | |
| GetMoodPlaylists | [x] | |
| GetCharts | Not Planned* | |
| GetWatchPlaylist (tracks): GetWatchPlaylist | [x] | [x] |
| GetWatchPlaylist (lyrics_id): GetLyricsID | [x] | |
| GetLibraryPlaylists | [x] | [x] |
| GetLibrarySongs | [x] | [x] |
| GetLibraryAlbums | [x] | [x] |
| GetLibraryArtists | [x] | [x] |
| GetLibraryArtistSubscriptions | [x] | [x] |
| GetLibraryPodcasts | [x] | [x] |
| GetLibraryChannels | [x] | [x] |
| GetLikedSongs | [ ] | [ ] |
| GetSavedEpisodes | [ ] | [ ] |
| GetAccountInfo | [ ] | |
| GetHistory | [x] | |
| AddHistoryItem | [x] | |
| RemoveHistoryItem | [x] | |
| RateSong | [x] | |
| EditSongLibraryStatus | [x] | |
| RatePlaylist | [x] | |
| SubscribeArtist | [x] | |
| UnsubscribeArtists | [x] | |
| GetPlaylistTracks | [x] | [x] |
| GetPlaylistDetails | [x] | |
| CreatePlaylist | [x] | |
| EditPlaylist | [x] | |
| DeletePlaylist | [x] | |
| AddPlaylistItems | [x] | |
| RemovePlaylistItems | [x] | |
| GetChannel | [*] | |
| GetChannelEpisodes | [*] | |
| GetPodcast | [*] | [ ] |
| GetEpisode | [*] | |
| GetEpisodesPlaylist | Not Planned* | |
| Original: GetNewEpisodes | [*] | |
| GetLibraryUploadSongs | [x] | [x] |
| GetLibraryUploadArtists | [x] | [x] |
| GetLibraryUploadAlbums | [x] | [x] |
| GetLibraryUploadArtist | [x] | [x] |
| GetLibraryUploadAlbum | [x] | |
| UploadSong | [x] | |
| DeleteUploadEntity | [x] |
* GetArtist is partially implemented only
* Only the tracking url from GetSong is implemented - as GetSongTrackingUrl. Any additional features for GetSong are not currently planned - recommend taking a look at rusty_ytdl library for these features.
* Note, significantly dynamic pages, such as GetHome and GetSongRelated are not currently planned.
* GetEpisodesPlaylist is not implemented - it seems the only use case is to get the New Episodes playlist, which has been implemented instead as GetNewEpisodes.
See the wiki for additional information https://github.com/nick42d/youtui/wiki