MCPcopy Index your code
hub / github.com/Siriusmart/youtube-tui

github.com/Siriusmart/youtube-tui @v0.9.4

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.9.4 ↗ · + Follow
566 symbols 1,354 edges 105 files 95 documented · 17%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Read more in the user manual (including installation guide and documentation).

Overview

Written in Rust, the YouTube TUI is a lightweight and user friendly TUI for browsing YouTube content from the terminal. Works out of the box and easily configurable.

It is like an app launcher, it launches other programs to do the heavy lifting (for example, mpv for playing videos).

It also has an embedded mpv music player, but that can be disabled in compile time.

Consider regenerating config files on updates to allow new features.

Customisable

The YouTube TUI can be customised through config files, they are located in ~/.config/youtube-tui and are in the YAML format.

Here's an example of the config file:

mouse_support: true
max_watch_history: 50
allow_unicode: false
images: Sixels
refresh_after_modifying_search_filters: true
provider: YouTube
env:
  browser: xdg-open
  video-player: mpv
  youtube-downloader: yt-dlp
  terminal-emulator: konsole -e

Anything from layouts to colours and keybindings can be customised, more on that later.

Dependency-free*

See installation#features for more info on dependencies.

The YouTube TUI does not work on its own, it is instead like a TUI frontend for programs like mpv or yt-dlp/youtube-dl.

However, the programs to launch can be changed, and therefore the YouTube TUI does not rely on any specific dependencies to run.

Powerful

The YouTube TUI allows you to browse YouTube with (almost) all of it's features, functions including:

  • View information about channels, playlists and videos
  • Use search filters to sort and filter search results
  • Save browsing history
  • Embedded audio/music player

It also includes features like:

  • Vim-like commands
  • Mouse support
  • Extensible keybindings system
  • Offline library
  • Subscriptions

TODO

  • [URGENT] Replace the no-longer-going-to-compile typemap dependency with either a self implementation of it or a useable crate.

    This has been urgent for over 2 years now, maybe the deprecation warnings aren't real, nothing ever happens.

  • Git like command line to improve on yt-dlp - make changes to existing downloaded playlists instead of redownloading the entire thing.
  • Channel caching and bookmarking.
  • Selecting item on channel list moves focus to feed items.

How to contribute

You will need a general knowledge of the Rust programming language, and the ability to understand my spaghetti.

  1. Open an issue to make sure nobody else is working on the same feature
  2. Write code
  3. Open a pull request
  4. Get merged?

Or just fix that typo in README -_-

Extension points exported contracts — how you extend this code

ConfigTrait (Interface)
Trait for loading, saving config files [9 implementers]
src/global/traits/configtrait.rs
SearchFilterItem (Interface)
trait for on single search filter [4 implementers]
src/global/traits/searchfilteritem.rs
AsUrlString (Interface)
A single URL param for search filters [4 implementers]
src/global/traits/asurlstring.rs
Collection (Interface)
(no doc) [3 implementers]
src/global/traits/collection.rs
CollectionItem (Interface)
(no doc) [2 implementers]
src/global/traits/collection.rs

Core symbols most depended-on inside this repo

clone
called by 188
src/global/structs/mpv.rs
to_string
called by 125
src/global/structs/message.rs
push
called by 105
src/global/structs/tasks.rs
into
called by 60
src/config/remap.rs
iter
called by 54
src/config/pages.rs
is_empty
called by 51
src/global/structs/tasks.rs
get
called by 31
src/config/remap.rs
to_color
called by 24
src/config/serde.rs

Shape

Method 304
Function 122
Class 99
Enum 34
Interface 7

Languages

Rust100%

Modules by API surface

src/config/main.rs37 symbols
src/global/structs/item.rs35 symbols
src/config/appearance.rs34 symbols
src/global/traits/search_provider.rs30 symbols
src/config/pages.rs23 symbols
src/global/structs/subscriptions.rs21 symbols
src/global/structs/providers/rustypipe.rs21 symbols
src/items/singleitem.rs19 symbols
src/global/structs/tasks.rs19 symbols
src/global/structs/providers/invidiousclient.rs19 symbols
src/config/commandbindings.rs19 symbols
src/config/search.rs16 symbols

For agents

$ claude mcp add youtube-tui \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page