| Crates.io | youtui |
| lib.rs | youtui |
| version | 0.0.25 |
| created_at | 2023-12-03 14:48:31.05769+00 |
| updated_at | 2025-06-12 00:35:14.995495+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 | 712,226 |
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
The default option is to use browser authentication, To change this to oauth authentication, a config.toml file can be added to the local youtui config directory (e.g ~/.config/youtui/ on Linux), with the value auth_type = "OAuth". Please note however that config file format is currently unstable and could change in the future.
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):
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.po_token.txt into your local youtui config directory. For more information on PO Tokens and how to obtain them, see here.config.toml. Example config.tomls have been provided in the ./youtui/config/ directory. Please note, the config file format is currently unstable and could break between releases.libasound2-dev (Debian / Ubuntu)alsa-lib-devel (Fedora)Feature parity with ytmusicapi
| Endpoint | Implemented: Query | Implemented: Continuations |
|---|---|---|
| GetArtist | [x] | |
| GetAlbum | [x]* | |
| GetArtistAlbums | [x] | |
| Search | [x] | [ ] |
| GetSearchSuggestions | [x] | |
| GetHome | Not Planned* | |
| GetAlbumBrowseId | [ ] | |
| GetUser | [ ] | |
| GetUserPlaylists | [ ] | |
| GetSong | [ ]* | |
| GetSongRelated | [ ] | |
| GetLyrics | [x] | |
| GetTasteProfile | [x] | |
| SetTasteProfile | [x] | |
| GetMoodCategories | [x] | |
| GetMoodPlaylists | [x] | |
| GetCharts | Not Planned* | |
| GetWatchPlaylist | [x]* | [ ] |
| GetLibraryPlaylists | [x] | [x] |
| GetLibrarySongs | [x] | [x] |
| GetLibraryAlbums | [x] | [x] |
| GetLibraryArtists | [x] | [x] |
| GetLibrarySubscriptions | [x] | [x] |
| GetLibraryPodcasts | [ ] | [ ] |
| GetLibraryChannels | [ ] | [ ] |
| GetLikedSongs | [ ] | [ ] |
| GetSavedEpisodes | [ ] | [ ] |
| GetHistory | [x] | |
| AddHistoryItem | [x] | |
| RemoveHistoryItem | [x] | |
| RateSong | [x] | |
| EditSongLibraryStatus | [x] | |
| RatePlaylist | [x] | |
| SubscribeArtists | [ ] | |
| UnsubscribeArtists | [ ] | |
| GetPlaylist | [x] | [ ] |
| CreatePlaylist | [x] | |
| EditPlaylist | [x] | |
| DeletePlaylist | [x] | |
| AddPlaylistItems | [x] | |
| RemovePlaylistItems | [x] | |
| GetChannel | [*] | |
| GetChannelEpisodes | [*] | |
| GetPodcast | [*] | [ ] |
| GetEpisode | [*] | |
| GetEpisodesPlaylist | Not Planned* | |
| Original: GetNewEpisodes | [*] | |
| GetLibraryUploadSongs | [x] | [ ] |
| GetLibraryUploadArtists | [x] | [ ] |
| GetLibraryUploadAlbums | [x] | [ ] |
| GetLibraryUploadArtist | [x] | [ ] |
| GetLibraryUploadAlbum | [x] | |
| UploadAlbum | [ ] | |
| DeleteUploadEntity | [x] |
* GetWatchPlaylist is partially implemented only
* 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 Get Home 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