Chad Wilson

ytTUI -- A Terminal User Interface for YouTube


Over the last few weeks (and, maybe even months) I have become increasingly more interested in and aware of three things-- privacy, free software as a philosophical concept, and terminal minimalism.

There is a wealth of information on the internet concerning anything and everything. Google's YouTube is no exception. YouTube is a fantastic place to learn about new things, find interesting topics, or just waste hours upon hours falling down a rabbit hole *because you just can't stop watching cat videos*. However, even though it has its advantages, there are several things wrong with YouTube. Broadly, these are it being 1) YouTube and 2) Google. More concisely, YouTube doesn't respect user privacy, it is not free software, and perhaps most importantly, it doesn't exemplify terminal minimalism.

That brings me to the topic of today: the ytTUI-- or, YouTube Terminal User Interface for those people who'd rather speak with long words instead of short letters. After slaving away at trying to find a program that would allow me to browse the terabytes of videos on YouTube without using YouTube, I decided "I can just write my own!" Because its obviously a trivial task.


The end goal of the project is twofold:

By "respect user privacy," I mean exactly what I say-- the end user of this program will not have YouTube or Google snooping on what they search or watch. Even though (initially, perhaps not permanently) I decided to use the YouTube data API, these companies won't be able to see who is searching or watching what. Searches are handled by the API key through the program. "Subscriptions" will be using a separate system of generated RSS feeds (more on that down below). The only thing that they might be able to see is the IP address from which the http request was made, but this is a nonissue considering how this is more or less open information and if a user is concerned about it, they're probably already doing something about it.

What I mean by "be extensible" is a little less clear. On top of being completely free (free as in freedom), I plan for it to be configurable. Not just in colors and layout, but in which video player is used, among other things. There will also be a 'playlist' feature where users can add videos to local lists to collect videos they like, want to watch later, or collect for another reason. In the end, users will be able to browse YouTube content in a comfortable terminal environment, without the prying eyes of their internet overlords.


YouTube has a feature called 'subscriptions' which allows a user to 'subscribe' to a channel and get notified when a new video gets uploaded (or at least, that's the idea-- you now have to hit the 'notification bell,' because subscriptions don't mean a whole lot on YouTube anymore). ytTUI will have a similar feature, but in a way which the user has total control over.

ytTUI's 'subscription' system will revolve around generating an RSS feed for specific channels that users flag. This will 'subscribe' them to the channel-- when there is a new video posted on the channel, the RSS feed will update and an asterisk (or something) will notify the user that a new video is available to watch.

a mockup of ytTUI

The first mock up of the ytTUI interface. The 'history' playist that is listed would keep a local list of the videos a user has played so they can revisit them later if they wish. It has an asterisk for two reasons-- 1) I'm not sure if I want to keep it, and 2) if I do keep it, it would probabaly be disabled by default.

Want to keep track of the project? Visit the GitHub page.

by Chad Wilson