Auto Subs

January 2019

Youtube has the reputation of having a bad and user-hostile interface and it's for a good reason: they have a bad and user-hostile interface. Pretty much everybody that spends significant time on the site agrees that it's getting worse as well. Sure the new Polymer app is reasonably fast and it's pretty neat to keep the video going when navigating but everything else is worse. I don't like the look of the site but that's just my taste so I use at least 2 extensions to change the layout or colors (dark mode ftw), the best being Enhancer for Youtube. I also really hate their redesign of the "watch later" playlist; it now takes 3 clicks to clear watched videos up from 1, 2 clicks to remove one video manually up from 1, it looks worse and just serves its function worse. I understand they want us to use their "queue" feature but come on if you're going to have 2 systems doing the same thing don't cripple the older and better system...

But enough bashing, I'm sure the engineers are doing what they can with unreasonable requirements and management. Youtube also wants you to pay them to (maybe) have the right to download videos locally; coupled with the fact that they frequently and randomly remove videos[1] and I got the idea to make my own Youtube UI with downloadable videos, sensible speed and volume controls and other niceties.

So I got my trusty Vue toolbox and went to work. I made a local server that serves a static web app and has a simple REST API to start/stop downloading videos. All the app's data is stored in localStorage because it works 90% as well as putting it on the server and is about 5x easier to do. I wanted to play nice with Youtube and use their API but it turns out that it's a huge pain to get access to someone's subscriptions, you have to host your app online and do a bunch of verifications that I couldn't be bothered to do for my personal tool so I just ended up stealing Youtube's session cookie and scraping the website for data...

I used ytdl to download the videos, it works great but sometimes some videos just fail without reason (and break the writable stream without emitting an error...) and I've never been able to figure out why or to protect against it. Sometimes it would just stop downloading and die and no amount of defensive programming sufficed.

I used this tool for a good few months before going back to a customized Youtube (I now use custom scripts with GreaseMonkey to make the experience bearable). Some functionalities were really nice to have I found but I couldn't make it sturdy enough for real use. I won't show screenshots because it looks terrible but here's the Github.

[1]: I tried to find an article that talked about that time in 2019 where they just removed a bunch of funny animation and other videos for being "offensive" or something and couldn't find anything. Granted I am not the best at finding news articles (I don't watch or read any news usually) but I'm pretty good at googling. So it either means that YT fucks up often enough to bury the news or that Google buries the bad articles about its fuckups. Both are likely and sad.