#youtube #terminal #subscription #tui #raspberry-pi #peertube #ui

app youtube-subscriptions

terminal UI for viewing youtube subscriptions

18 releases

0.2.80 Dec 30, 2023
0.2.79 Nov 13, 2023
0.2.77 Oct 16, 2023
0.2.74 Nov 17, 2020
0.1.0 Jun 23, 2019

#777 in Command line utilities

MIT and GPL-3.0-or-later




terminal UI for viewing youtube and/or peertube subscriptions. Especially well suited for Raspberry Pi.



You can download a self-contained binary from releases page

setup (youtube)

Create an subscription_manager file:

echo '<opml></opml>' > ~/.config/youtube-subscriptions/subscription_manager

Go to your channel page: https://www.youtube.com/feed/channels Scroll to the bottom of the page til all your channels are loaded. Save the source of the page in channels.html.

Then recover your channels list by running the following command (can take a long time if you have a lot of channels)

./extract-channel-ids.sh channels.html | tee channel_ids

copy all those id in channel_ids list (see configuration section)

setup (peertube)

Create a configuration file (see configuration section) and add the channel urls you want to register to channel_urls list.

backround mode

Sometimes reloading the video list can take a long time.

To avoid blocking the main app, you can run the video reload in a separate process.

Just run with --background flag (you can have it in a cron), and you can reload the main UI with r.


press h for help.


You can optionnaly add a user configuration at



  "video_path": "__HOME/.cache/yts/videos",
  "cache_path": "__HOME/.cache/yts/yts.json",
  "youtubedl_format": "[height <=? 360][ext = mp4]",
  "youtube_instance": "https://invidious.privacydev.net/",
  "video_extension": "mp4",
  "kind_symbols": {
    "Audio": "",
    "Video": "",
    "Other": ""
  "players": [
    ["/usr/bin/mplayer", "-fs"]
  "channel_ids": [],
  "channel_urls": [],
  "mpv_mode": true,
  "mpv_path": "/usr/local/bin/mpv"

field description default value
video_path directory where videos will be stored /tmp
cache_path file path where video list will be stored /tmp/yts.json
blockish_player blockish player to use (supersedes players) None
players list of players command for videos in order of priority
youtubedl_format see youtube-dl doc [height <=? 360][ext = mp4]
youtube_instance invidious / youtube instance to use to open videos https://www.youtube.com/
video_extension youtube-dl video extension as per format mp4
kind_symbols hash of characters to describe the media { "Audio": "a", "Video": "v", "Magnet": "m", "Other": "o" }
channel_ids list of additional channel ids which will be also fetched []
channel_urls list of additional channel urls which will be also fetched (can be used for peertube) []
mpv_mode try and start mpv to play the youtubee video first true
mpv_path path to mpv binary (will be use if mpv_mode is true) /usr/bin/mpv
open_magnet tool to use to open magnet links (e.g. transmission-remote-cli None
auto_thumbnail_path file path to write thumbnails to when cursor is moved None

__HOME will be substituted with the home path.

cross compiling for raspberry pi

simply run:


binary will be in target/arm-unknown-linux-gnueabihf/release/youtube-subscriptions


~1M SLoC