Hacker News new | comments | ask | show | jobs | submit login
Show HN: Tube – Minimalist YouTube (quinzel.tech)
220 points by madamelic 9 months ago | hide | past | web | favorite | 111 comments

For some time I've been tinkering with a script which manages my own fine-grained youtube subscription preferences, periodically scrapes various pages for metadata, and then as necessary extracts videos by using the youtube-dl utility. The end result is a directory on my machine which always has a few interesting videos to watch, ad-free, tracking-free, network connection free, using my favorite full-featured video playback tools.

I think others seeking a minimalist youtube experience might enjoy youtube-dl: https://rg3.github.io/youtube-dl/

You don't need to scrap the page, YouTube provides the RSS stream for each channel: `https://www.youtube.com/feeds/videos.xml?channel_id=[ID]`. The RSS contains the "normal" link of each video, so you can invoke youtube-dl or mpv on it.

> You don't need to scrap the page

They do if they are scraping playlists.

Youtube assumes that when creators make a playlist, they’ll add videos to the top. As such, the RSS for a playlist[1] always returns just the top 15 results. But a lot of creators — typically the ones that take greater care into organising their playlists, such as Crash Course[2] — add videos to the bottom of their playlists. Those RSS feeds will be stuck at the same 15 items forever, and your only option is to scrape the page.

[1]: https://www.youtube.com/feeds/videos.xml?playlist_id={playli...

[2]: https://www.youtube.com/user/crashcourse

You can use youtube-dl's archiving feature for that.

I use it regularly on my fairly large music playlist and it goes through all 20 pages just fine despite adding stuff on the bottom occasionally (I sorted it by creation date)

youtube-dl is really cool, and supports loads of sites as well as just youtube.

VLC can also play youtube URLs directly, although buffering can be annoying.

There's also a Python package called "whitey" which provides an ncurses interface for searching youtube, and sending videos to e.g. mplayer or youtube-dl.

If you want to "subscribe" without needing an account, every youtube channel provides an RSS feed (look in the <head> of the page source).

VLC can also play youtube URLs directly

I legitimately did not know this, thanks for the knowledge share! Can it follow playlist s of videos?

There's a few video game streamers whose commentary and remarks are so funny and well written I find myself listening to them more like a podcast than watching the video, so I'm often queuing up playlists and having the background noise while doing house chores and the like

VLC can't play YouTube playlists natively, but there's a VLC add-on that supports doing so: https://addons.videolan.org/content/show.php/+Youtube+playli...

Also, mpv can use youtube-dl if both are installed to play YouTube playlists, e.g.:

    mpv https://www.youtube.com/playlist?list=PLhyKYa0YJ_5DfJnFBZwz8xd37MA6I16oJ  
Note that you need to pass it the link to the playlist itself and not a video in the playlist: https://github.com/mpv-player/mpv/wiki/FAQ#How_can_I_play_Yo...

Excellent, thanks!

Well, if you're on Mac and if you want to forgo the playback speed controls (like for, music) I can also recommend Vox earlier versions (2.8.26)[0]

It is an audio player with the youtube-list-as-playlist feature. In my experience, it generally delivers a better sound quality of the same videos than youtube. Copy the url (make sure it's /?list=<id>). Hit Cmd + U, paste, <Enter>. Then optionally download the extension for using keyboard buttons[1] and control playback from there.

Or you can always use `youtube-dl -ix /?list=` then open the resulting files with .opus extension with your favorite player.

[0]: https://vox.rocks/mac-music-player/old-versions [1]: https://vox.rocks/mac-music-player/control-extension-downloa... Disclaimers: No commercial interests. Just a happy user.

>youtube-dl is really cool, and supports loads of sites as well as just youtube.

Agreed, here's a list of sites it supports: https://github.com/rg3/youtube-dl/blob/master/docs/supported...

Not sure how much you'd benefit from it, given that you've already got a good setup, but I just made a website called HookRSSTube[0] that essentially proxies YouTube RSS feeds and replaces the video playback with HookTube[1] instead.

I'd love to know if you have any comments or suggestions.

[0] https://hookrsstube.com

[1] https://hooktube.com

+1 for hooktube! I now use a greasemonkey script to auto-redirect all youtube.com links to hooktube instead.

Do you have a way to ensure you get the highest quality?

I do similar with cron but often get videos as they're still processing (and thus only at lower qualities). One issue is the channels I 'subscribe' to don't always output at the same resolution and frame rate.. so I can't do a simple 'is video 4k60' test.

I don't think there's any way to know what qualities are currently being prepared. Your best bet might be to just figure out what time that creator typically uploads, and make sure your script doesn't run during that time and for several hours afterward, to give YouTube the time it needs to prepare the high-quality ones.

Could you look at the upload date and wait a certain amount until the processing is more likely to be done?

That's an excellent idea. You can work out a reasonable amount of time to allow YouTube to do the video processing, and then use youtube-dl's "--datebefore" option to only download videos that are at least that old. You'll have to manually compute the date and time for X hours in the past, I suppose.

Thanks for the hint wrt --datebefore. I'll give it a go :)

Ah! That could work indeed. Thanks :)

After it has finished processing, youtube-dl will (by default) download the best format anyway.

I actually have a script running on a cron job on my personal server that does approximately this. It downloads into a Syncthing folder that automatically syncs to whatever devices I might want to watch videos on. The difference is I just have a set of playlists for it to download, so I'm relying on the YouTube creators to organize their videos into appropriate playlists, which means it's not exactly "fine-grained". It's basically an 80% solution, and for the remaining 20%, I just invoke youtube-dl manually.

Uploads is a playlist.

For the few YouTube channels where I actually want to watch every single video uploaded by the creator, I do use this. For the rest, I have to hope that they create playlists for the subset of their videos that I am interested in. Many creators are actually quite diligent about organizing their uploads into playlists.

Could you release some part of that script too? It sounds really interesting.

If you like youtube-dl you should check out mps-youtube (https://github.com/mps-youtube/mps-youtube) which has the ability to use youtuble-dl as the backend I'm pretty sure (i prefer to use the native one personally)

It's also gpl vs youtube-dl's public domain.

I'm sure eventually I'll figure out a way to just do it in emacs. (I'm mostly joking... kinda... maybe.)

> (i prefer to use the native one personally)

Then you should try - SMTube[0].

SMTube allow use "mpv + youtube-dl" for play videos.[1]

[0] http://www.smtube.org/

[1] https://blog.smplayer.info/how-to-download-videos-with-the-n...

> mps-youtube

Funny that state[0] on PyPi[1] is [downloads|no longer available]

[0] https://img.shields.io/pypi/dm/mps-youtube.svg

[1] https://pypi.python.org/pypi/mps-youtube

PyPI no longer tracks download counts on its own. Instead, they pipe access logs to Google BigTable, so you can BigQuery the heck out of them.

I've been a youtube-dl fan for a long time -- it was essential whilst traveling a few years ago with suboptimal 3G bandwidth... these days I usually just paste the URL in to a terminal after typing `mpv` for a minimal experience but still with all the control you might want for playback speed, brightness, screenshots, & skipping around etc. Those who prefer a GUI could use SMplayer.

For anybody interested I've written a tutorial for youtube-dl: https://spapas.github.io/2018/03/06/easy-youtube-mp3-downloa...

I have a project that kinda acts as music assistant: "Search and play any song from terminal"

The project is somewhat inactive right now due to personal priorities. http://github.com/NISH1001/playx

How well does youtube-dl deal with video playback being restricted to play only from youtube.com? For instance this Tube site can't really play most music videos.


See also mps-youtube, a Python utility installable via pip.

> ad-free

You don't want the people who make the content you enjoy to earn a living doing that?

This could be "code golfed" into even smaller app. Ditch all third party resources: jquery (use vanilla js), stripe (why?), fontawesome (just use some inline svg symbols), tachyons (you could probably write few custom CSS rules yourself and throw in some minimalistic styling too). Not sure about usefulness of service workers, as youtube app won't work offline.


Yeah, you kind of got me there. I re-use the same template for all of my sites. Those must've missed my trimming. I'll remove them tonight.


It's strangely huge for what it does (presumably author was going for just visual minimalism), trimming it down is wouldn't exactly be 'code golf'.

Hey all!

I tossed this together because I had trouble with YouTube and its rabbit hole. I wanted a way to still watch my favorite people without a lot of noise + distraction. I also use YouTube for live music while working (which is an issue if I get distracted by a neat looking video)

So I made Tube. It is just a search box and it shows you the top few results, you click on one and all you get is the player.

Let me know what you think. This is the first time I'm showing it off so there is likely still some rough edges! :)

First, I'm probably not the only one but I find ads really annoying. Also, I always find myself spending so much time on Youtube when I was just coming for one video, that can be problematic. I think Tube is simple but effective.

Unfortunately, it won't filter out pre-roll ads, but there is always YouTube Red, if you dislike ads and don't hate Google.

And there are always ad blockers, if you dislike ads but do hate Google!

And hate the content producers too!

All the content producers I follow have either a Patreon or a Tipeee page, which allows me to give them some money (probably much more than what they would earn if I watched the ads).

Considering just about everyone I watch ends up being demonized that’s not such a bad thing.

YouTube Red is nice, but so many videos bake-in ads. It would be nice to have a player only play selected portions of a video; for a video with an ad baked in from 0:11 to 0:41, the player would play from 0:00 to 0:11, then auto-skip from 0:11 to 0:41, and continue playing. These could be set from an earlier viewing, suggested by the site by other viewer behavior, or have common shows have a "time file"of clips to skip to. "Abridged" shows could use a "time file" and subtitle track for easier content creation.

> but there is always YouTube Red

For the majority of the World there is not

This is awesome! Is the code available as open source anywhere? I might be interested in making my own personal deployment because I think youtube is far too distracting

Oh! Yeah, I can totally do that tonight. I'll link it (I have to remove a key from the code... oooops. :))

I would look at Youtube Feather. It was a stripped-down version of Youtube Google made several years back. Sadly it's discontinued now.

I think you've gone too far. Tearing out bloat and psychological manipulation is good, but it should have playlists, channels, and search filters. Those are important features for finding videos.

>Tearing out bloat and psychological manipulation is good, but it should have playlists, channels, and search filters.

I'll definitely consider it. I didn't expect it to get this response to be honest.

The target is more about cutting out the psychological rabbit hole, less about making it really light (although it would be a nice side effect)

This is the best software ever written. Salut.

Aww, thanks! :)

I started a project to make websites like this for all websites, but didn't get very far. I feel like pretty much every other website could use a lightweight and fast version. Creating those versions is a lot of boring work, though, as you're just parsing DOMs or APIs and there is no challenge to it. (Never mind when they change the HTML again.) Thanks for creating this one!

One thing I love to do is to block all the garbage of websites with uBlock Origin by adding my own filters. That does not give a result as good as this project but it quicker to do.

Yes. One example where this worked particularly well for me is the Youtube homepage, where I blocked all the content so only the search bar and sidebar are still visible. They've since changed the html and I have since made two workarounds for the homepage, but for years that saved me from getting distracted by all the crap people watch and forgetting what I was going to search for.

For this, you could use uMatrix (by the same author).

It would be easier to "make" these with semantic web. Maybe your browser would just have some generic viewer so that you would not have to make any at all.

I'm writing a small JavaScript engine that converts websites to JSON, and displays JSON as websites. Since an entire site is described in the same JSON file, the whole site is a single download, and it rebuilds pages in the browser instead of calling the server - much faster, especially on mobile.

If the browser had this small engine, it could render these sites natively.

Neat. But my comment is about the exact opposite: having a standard way to represent data in place of HTML and custom formats.

Your project sounds very interesting, is it hosted somewhere?

The site is in alpha, at https://www.sparational.com. it has links to my GitHub, and to the site engine on S3. It started as a simple Node project to host a blog and a few random pages. Now, the goal is a single-page application, in more than one sense.

If I could make a design suggestion, from a minimalist perspective:

When showing results, the text that you choose to show kinda feels like the design equivalent of "HEY YO WELCOME TO MY CHANNEL MASH THAT SUBSCRIBE BUTTON!!!".

When looking at what to display for a video, maybe consider just <Video Title>, and <Channel Link> below that?

Other thing - Maybe have some kind of simple "searching..." indicator? I hit enter, and the feedback for it was nil, so I just assumed my keystroke didn't actually search, then all of a sudden stuff just popped up.

Other than that, this is really cool! Nice and simple, very usable.

>When looking at what to display for a video, maybe consider just <Video Title>, and <Channel Link> below that?

I can definitely do that. The search term I was using while designing returned much nicer descriptions. I'll just remove them completely.

>Other thing - Maybe have some kind of simple "searching..." indicator?

I agree. It is definitely an oversight. Thanks! :)

Sounds like a fun project, I'm glad it turned out so well - I wish you luck with everything!

I searched for "darkest dungeon" and first hits were for Ed Sheeran and One Direction. I know searching is a tricky problem, but this is ridiculously bad.

I got the same results for a completely unrelated term. Probably something hard-coded it's falling back on?

I just tried "darkest dungeon" and didn't get that, and it's the same as the ones on https://www.youtube.com/results?search_query=darkest+dungeon .

Actually, I can't see why OP wouldn't just use YT's search API (they have one). I'm pretty sure that's what OP uses. So yeah, like you said, probably some hard-coded fall-back.

Hijacking this thread to share other approaches to YouTube without YouTube. This site takes a YouTube URL, extracts the audio and adds a link to your personal podcast feed on huffduffer. It’s great for loading a bunch of interviews, lectures, and other things that don’t require the video into your podcast player.


Another approach for YouTube without YouTube: subscribe to YouTube channels and playlists by RSS. I set up an app for this. Just head over to https://www.epiyoutube.com. Or whenever you're on YouTube and viewing a channel, user, or playlist, just add 'epi' to the url, right in front of 'youtube,' and there's your RSS feed.

Oh, and another approach: watch YouTube videos on Bing Videos. I actually use that more than I use my RSS app. Just make sure you've got your adblocker on, and you're all set.

I've been working on a "streaming music" version of youtube for about 10 years off and on (https://github.com/kristopolous/ytmix) ... it's really designed for self-hosted personal use. I use it probably an hour or two a day.

I think this is a good idea, but it seems like you've made the .css file more minimalist than the actual website. I guess there's a distinction to be drawn between making YouTube less appealing to get distracted by, and making the YouTube experience nicer by reducing distraction and noise. If you're going for the latter, here are a few tweaks I would suggest:

* Pick a more aesthetically pleasing than default font, ditch the blue default link colors.

* Normalize the thumbnail size.

* Consider normalizing the video titles to all lowercase. It's still possible to search for something and see all caps everywhere which feels very noisy to my brain.

* Consider leaving the descriptions off altogether

But still, very cool idea!

Thanks for the recommendations. I will definitely work on these. :)

Kind of tangential, but I am enjoying NewPipe[0], which can be installed from F-droid. Background audio, video on overlay mode so you can watch it while using some other app, downloading videos/audio. Supports YouTube and SoundCloud.

[0] https://newpipe.schabi.org/

If you want a standalone app, I would recommand youtube-viewer: https://github.com/trizen/youtube-viewer

CLI and GTK!

If you are looking for a lightweight, less minimalist youtube interface, there is tonvid[1], used by smtube.

[1] http://www.tonvid.com/

Are there any alternatives out there that let me:

1) Oauth2 into my account so I can see new postings in my subscriptions (not "the one you've been avoiding clicking for 8 weeks")

2) Minimalist dashboard that doesn't have all the "recommended for you" clutter

3) Simple search results like the one here?

4) A "show me similar" button next to vids that would let me pick out my own recommendations if I want to expand on what I'm watching, and not get signed up for all the crap their broken algos throw at me

I'm seeing a permanent back arrow overlapping the video itself. Don't cover up the screen.

At the end of the video, it still shows recommendations. Do you have any control over that? Can you set it to not show recommendations?

It is missing comments. I can see why you would choose that, but I'd rather have comments (something I also miss when I watch YouTube on a Roku) and still not have recommendations because they lead to watching too many videos.

>I'm seeing a permanent back arrow overlapping the video itself. Don't cover up the screen.

Removed that. Originally I wanted it to make it easy to go search more, but meh, people can use the back button. :)

>At the end of the video, it still shows recommendations. Do you have any control over that? Can you set it to not show recommendations?

Not as far as I know. And from what I've read from YouTube's ToS, it wouldn't be ok with them. (Can't disable functionality)

>It is missing comments. I can see why you would choose that, but I'd rather have comments (something I also miss when I watch YouTube on a Roku) and still not have recommendations because they lead to watching too many videos.

I'll consider adding them on dropdown. :)

The embedding API has an option for related videos at the end: https://developers.google.com/youtube/player_parameters#rel

This does not work for me. No matter what I search for I get the same results, namely, Marvel Studios' Avengers, Ed Sheeran, One Direction, etc.

I went back and tried it again a day later, and now it works -- it finds videos related to the topic I search for. Whatever the problem was, the author has now fixed it.

Same here.

Does this seem down for anyone else? All my requests seem to be "pending" in Chrome's network tab.

Looks nice, very similar to https://invidio.us/

https://github.com/omarroth/invidious (written in Crystal)

I have a 2-line shell script using only sed and curl (or equivalent) that obviates any need for youtube-dl, python, third party websites, etc. Unlike youtube-dl it will not download videos where the uploader is some commercial media outlet that wants to prohibit downloading.

Can you post this somewhere? Maybe a Github Gist?

As requested, see


Example usage: argv0 22 file

Where argv0 is the name of the script.

Where 22 is itag no. for HD mp4. 18 is itag no. for a lower quality mp4.

Will save video as file.mp4

If get HTTP 302, then retry.

If get HTTP 403, then retry or give up; video is probably commercial in nature and has restrictions.

That links to your user profile. Wrong link?

Yes, but It's really easy thing to do, they should make this greater than this time. It's not good just based on widget.

Thanks a lot for this! When I need to focus, sometimes I need to look stuff up on youtube and then I get distracted by all the clickbait meme shite.

Now I can use this site.

Few years ago there were sites like cull.tv and mox.tv that were really amazing interfaces for youtube. Its sad that now doesn't even exist a demo somewhere(?)

I thought there were also sites like this that you could make music playlists on and share them with others

I really like the minimal design.

One thing: when I am in the video view, I'd like <body> margin to be 0 so that there is no awkward white space around the video.

So minimal it doesn’t do anything on a mobile device?

Why is the aspect ratio of the videos weird? Fixed height, ~100% width? Why not 16:9 of window-size?

This is so great! Could you tell us a bit about how it works behind the scenes?

Yeah, it uses the YouTube API to search for videos. I am using another service to re-size the images to the right size (it still isn't perfect as you may notice), because some banners are slightly different sizes.

Then, on the /watch page, I embedded the YouTube player with a responsive design so you can view on both mobile + desktop (before, the player was HUGE on mobile)

It is quite simple thankfully.

The responsive design is great. I've been wishing that would become a standard option on video sites for some time. Full screen is rarely what I want and Theater Mode doesn't cut it. One suggestion, a black background and, if possible, vertically centered video might make it feel a bit more polished when the window ratio doesn't match the video.

I have wanted exactly this for over a year. Thank you for making it.

Brilliant stuff! followed the development on wip.chat

I really appreciate this. Thank you.

very cool. i prefer this than then the real one. YT has too much fluff and rabbit hole material

IANAL but I think this might be a violation of YouTube ToS

Ah, ok.

Hopefully they don't nuke my account.

No scraping or mean stuff, it's all above board and using Google's APIs.

Check the ToS of their APIs. I'm somewhat certain you aren't allowed to build alternative interfaces into their content.

I'm not OP, but that would be strange -- they offer a search API and a video player API. It would mean that they offer all the tools for you to build an alternative interface and then not let you do that?

True all these tools together can be used for building an alternative interface, but the company actually have APIs so that external services are able to integrate into their ecosystem. All the APIs are meant to be used together but each service can choose the API they see fit.

Even if it was you could just self host it and have your own private Tube site.

This is awesome, thank you!

This is freaking perfect. Thank you

Minimalist != ugly and unuseful.

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact