For a long time I was never attracted to the concept of youtube “channels”, being put off by the required buy-in to the youtube ecosystem and by their awful web player, unskippable ads, and more.

Until one day I realised that I could subscribe to youtube channels using my own RSS reader, and without the need for any google account. With that, my interest in youtube channels experienced a resurgence, and within a few months, my RSS reader listed over a 100 video feeds.

Unfortunately, although most RSS readers are excellent for following mostly text-based content, the experience of watching videos leaves something to be said about ease of use. This is how a typical session could look like in TinyTinyRSS, with all video feeds organised into a single category, i.e., a single list):

In this post I will describe the simple tool that I have unimaginatively named ttrss-video-mpv and which I glued together from the TinyTinyRSS API, a Python library to access said API, and a few lines of bash to tie it into my desktop environment of choice, i3wm.

RSS is awesome!

But first, a short primer on why RSS is awesome. RSS is just XML (that is, structured data, no styling) which makes it easily machine-readable and easy to let your reader/client software apply whatever styling/layout suits you best. This is valuable for anyone who wants to control their viewing/reading experience to their own needs or likes.

RSS is a de facto standard syndication system for websites (it has been around since before social media).

All of this makes RSS accessible and useful. I don’t recall where I read the following, so I hope I am not mischaracterising here, but in essence, an RSS feed is just another way to publish a website:

  • HTML (plus CSS, JS, etc.) + HTTP → website
  • XML + HTTP → RSS feed

RSS is an umbrella term, and encompasses several different versions of both the RSS and Atom formats. In this post I’ll simply use the label “RSS”, and by that mean both Atom and RSS.

All websites should publish RSS feeds!

Let’s round off this ode to RSS with the unimitable words of Felicia Day:

RSS is a way to consume a lot of information very quickly, and store it in nice categories if you miss it. So I can catch up with a small blog’s output at the end of the week and, if I so choose, read every article easily in one sitting. You think on Friday I’m gonna go browse that same site’s Twitter feed on their page (digging through all the messy @ replies) and see what they did that week?! Or go to their Facebook page that is littered with contests? No way dude, I’m too busy for that!


If you just want to see the code, it’s available on codeberg.

And here is how it looks in action, when used with the rofi application launcher on the i3 window manager:

This way, following your youtube channels becomes almost as easy as following any other stream.

Note that this tool only works for the TinyTinyRSS feed reader, and assumes you have installed bash, python, mpv and youtube-dl.

Folllowing non-youtube video channels is straight-forward, assuming they offer an RSS feed, thanks to the massive list of websites supported by youtube-dl.

Ideas for future development?

Could we achieve similar functionality on Android devices? Today, on Android, I watch videos by browsing the TTRSS app and opening videos in NewPipe.

But creating a functionally similar playback of all videos in Android would require developing our own app for starters (and I’ve no experience with that) and a way to access the TinyTinyRSS API plus some way to use youtube-dl.