Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Invidious: an alternative front-end to YouTube (github.com/omarroth)
216 points by yarapavan on Nov 15, 2019 | hide | past | favorite | 132 comments


What's your plan on possible user account terminations, if Google decides to act on their Terms Of Service?

> YouTube may terminate your access, or your Google account’s access to all or part of the Service if YouTube reasonably believes that its provision of the Service to you is no longer commercially viable.

https://www.youtube.com/static?gl=GB&template=terms


They have clarified that this means they can terminate their services, not your accounts. However with recent balls ups it was easy to read it differently


It written right ther:

> Terminations and Suspensions by YouTube for Cause

> YouTube may suspend or terminate your access, your Google account, or your Google account’s access to all or part of the Service

The question is why we still don't believe it even when it's written in black and white?


What is there to terminate if you browse Youtube without signing in?


When regular users visit youtube.com, they get a page with some videos on it. Regardless of whether they're logged in or not, there are videos there.

Banned users visiting youtube.com will just get a text page[0] with zero video content. Google will use all the dirty tracking tricks to make sure that banned users remain banned even when their IP or device changes.

[0] https://i.imgur.com/qTTGhhG.png


Incognito window, different browser, clear cookies... any of these will make you look like a new user to youtube. Just don't sign in of course.


I stopped signing in when they broke Gmail on Firefox. Now I just use Chromium as my mail browser and everything else is on my secure browser.


Please, do you know how to get banned from Google? I'd love to not be tracked by them anymore.


Didn't he just described that they were in fact heavily tracking you in order to make sure you didn't see the content?


Open an Adsense account and click your own ads. Though I'd think these days it just bans you from the Adsense program.


Why am I getting down voted for asking an honest question?


I block doubleclick and randomly get a degraded YouTube page with no content outside the video box rendered. It also goobers up the browser history so you can't go to previous videos.


That's because you are randomizing your user agent, not because of the doubleclick ban. (source: had some problem, solved it by emitting a consistent but fake user agent to youtube. It sniffs UA, against all recommendations and common sense)


Your accounts? As if they don't know who you are when you're not signed in.


Well, if you can imagine that there is a world where people can use the same device in the same home to access videos (ever heard of families?), surely you can imagine that Google would not terminate all accounts used on that device because they have no clue who is watching what when they are not logged in.


I can imagine it would. My experience tells me it's not out of the question. With Google it's improbable at the moment, but it happened to me (someone got nasty under my ISP's CGNAT) with the other service which will remain unnamed.


I'm pretty sure they wouldn't care and ban the device


It may not apply to this particular implementation, but users who've downloaded alternative YT clients (which offer ad-free experiences, or playback while the screen is off) an Android devices, may have their Google account flagged, even if the apps were sideloaded.


I admit having never heard or encountered that, so do you have any kind of evidence to support the claim?


The new terms of service go into effect on December 10th, so I wouldn't expect there to be any reports before then.


This is not true. They can and will suspend your accounts for blocking ads or not being "Economically viable".

One reason I removed youtube vanced and reinstalled official youtube app.


I'm fairly sure this applies to content creators, not consumers. To avoid storage and bandwidth for content that doesn't show ads but has a high maintenance cost.

If they really intended to remove the bandwidth cost from people watching youtube without ads they would start by implementing ad blocker detection.


Hmm. The reason doesn't look immediately obvious to me. What does your switching from Vanced to the official yt app have to do with someone's account getting suspended? Care to expand on it?


By using the official app then you get the ads, and won't be singled out as unprofitable by google. Hopefull as a result hopefully you won't be banned.


If the text hasn't been changed, what they say it means isn't relevant - they can still end up going for a different interpretation later and be entirely in the right.


Has it been verified in a lawsuit? It seems silly to give the benefit of the doubt in this situation. Especially when the grammar of the wording empowers them to do more than just terminate services.


As long as you don't use your account, it'll remain working. Google can't just ban 33% of the internet users (read: those with adblockers) over night without repercussions. If they'd, a YouTube clone with network effect would rise up right away. So they'll want to play some kind of other game. A long game (Manifest v3), a FUD game, who knows?


May be they can't do it to 33%, but they might start with some smaller strata, Invidious users for example.


I've been consuming my YouTube videos via RSS and youtube-dl these days. I have a little python script that collects the video urls from the feed, downloads them, and then NewsBlur notifies me of the new videos.

NewsBlur has become the way I find new academic papers (arXiv/journal RSS feeds), consume the news, webcomics, and YouTube videos.


Youtube-dl is an incredible tool, and supports far more than YouTube. I was pleased as punch yesterday to discover that Shoshana Zuboff's talk (shared to HN) on a video site I'd never previously heard of was supported.

There are other related tools.

VLC, both the desktop client (Linux, MacOS, Windows), and to a somewhat lesser extent, the Android client, can also stream video, most certainly from YouTube. Given the superiority of playback controls and for Picture-in-a-picture / pop-up view, this is my preferred option for Android when I want video, generally.

mps-youtube is an absolutely amazeballs console-based YouTube client. It offers search (text, title, channel), playlists, preferred search context (music or all), playback (audio only, video, resolution), and local client(s).

My preferred mode is to curate a playlist off of various searches, and to play that back, either through mps-youtube, or another player capable of using a local file. A disadvantage of mps-youtube is an application-based API cap which doesn't seem to apply to other options.

mpv is a console multimedia player, successor to mplayer, which can integrate with youtube-dl via the '--ytdl' switch. This means you can stream any youtube-dl supported streaming service or target, from raw MP3s or Oggs, to YouTube, Vimeo, and numerous other online media platforms.

I've been making (slightly) increased use of RSS, but have yet to wire that into my media player(s).

All of the console options work in Android under Termux, a Linux-like console userland that's one of the very few things on Android which Does Not Manifestly Suck.


> "mpv is a console multimedia player, successor to mplayer, which can integrate with youtube-dl via the '--ytdl' switch."

No switch is needed anymore, mpv has built in support for youtube-dl now through the ytdl.lua extension which automatically uses youtube-dl when necessary. Simply run `mpv [URL]`


TIL, thanks!


Pssh be quiet. The normally quiet Google employees will arrive, calling for stronger attacks on the ytdl.


FWIW youtube-dl supports downloading from a channel directly, and with a flag can spit out a file with every previously downloaded video. So the next time you run youtube-dl itll just grab new stuff.


That reminds me of Stallman browsing the web with wget and cat hahaha.


This solution offers total automation, filtering and allowing perusal of the content in the same way it was presented in the first place


Could you elaborate on how you find new papers that you are interested in? Do you just subscribe to RSS sources and going through all of them? Or do you have some way of filtering?


I didn't know arxiv had an rss feed, I usually find interesting papers through reddit, twitter and paperscape. Do you do any filtering on the feed to find the good stuff?


No, but I've definitely thought of using sklearn's Naive Baye's implementation to give me paper highlights (a la Mendeley, minus Elsevier). You can train on paper abstracts you've previously found interesting/uninteresting.

Luckily arXiv RSS feeds are by category, so I scan the titles of all e.g. qbio papers for a day and add the interesting ones to my reading list.


ArXiv feeds are organized by category (more like tags in that papers could be cross-listed, but need a primary category). Daily traffic in different categories is very different. Eg, at some point I used to subscribe to hep-ph/hep-th/gr-qc and they combined to something between 50-100 papers a day. I’d mostly just scan the titles/abstracts, to pull out particularly interesting papers.


Care to share the script?


Sure :) Although it's not much more use than my description if I don't clean it up and write docs, so will have to do that first. Will let you know when/if I do :)


'Log in with Google' asks me for my google account and password. Wat. No.

You should never, ever be asking people for this information, even if you're transparently passing it upstream. This is a tier-one no-no.


I agree. Unfortunately OAuth is impractical for this project, as it requires registering your application with Google.

Instead I've done my best to make clear how it works[0][1] and what is stored[2].

As mentioned in a sibling comment Google does not have a good track record with similar projects. AFAIK the only project that provides similar functionality is youtube-dl[3], which works the same way.

Important to note is that this functionality is optional; you do not need to log in with Google to store subscriptions or preferences. The main benefit currently is that it will automatically sync subscriptions with YouTube, otherwise I would recommend creating a new account on Invidious and then importing subscriptions from YouTube.

0. https://www.reddit.com/r/SideProject/comments/8wvazc/invidou...

1. https://github.com/omarroth/invidious/blob/8af87f1/src/invid...

2. https://invidio.us/privacy

3. https://github.com/ytdl-org/youtube-dl/blob/76e510b/youtube_...


There's no way for me to verify that what you're running is the same as what you have in GitHub. And for anyone else running it. You should disable this feature.


Why should he? It‘s your choice to use it or not. If you feel uncomfortable, go and selfhost it. Or don‘t use it at all. But there is no reasoning to prohibit it for everyone.


Altruistically, it trains users that it is ok, which it isn't.

Selfishly, the author really does not want to be storing or even handling these kinds of credentials. It makes them a very juicy target for all kinds of bad actors. Imagine finding yourself in the middle of some kind of account hijacking nightmare that you have unwittingly enabled, having to deal with people who trusted you and have lost access to their account or have lost money because people accessed data in their account that allows for id theft.

Basically people should treat passwords (even other people's passwords) as radioactive material and not attempt to handle them unless they really know what they're doing.



The privacy policy of not storing passwords is nice but what about when they get hacked and the site starts uploading passwords to some attacker's website?


I am guessing that this service falls squarely into "prohibited by Google's AUP" and thus they don't have much of a choice. Either that or, to prevent clones like this one, Google has deliberately not exposed an API to do whatever this app needs to do.


Yep. Hooktube's been through this already.

https://hooktube.com/changelog


Giving a fake username and password results in

> Expected Array for #[]?(index : Int), not Int64

> Traceback:

> Getting lookup...done, returned 200.

> Getting challenge...done, returned 400.

So, yeah, nope. Why not use Google's SSO to connect accounts?


Google has a history of disabling oath for services like these. There is also an invidious account system you can use to avoid using your Google account.


This looks neat! Without all the Google/Alphabet spying.

I’ve noticed that this project is written in Crystal, is Crystal production ready?

I've looked into it months ago and it seems that there are a lot of breaking changes on every release and this scares me from using it.


Breaking changes have been fairly minor and I haven't found them to be an issue for the project. It's also possible to anticipate most changes early (compile with `crystal --warnings all`).

I'm not sure I would recommend it for something on the scale of Apple or Microsoft, but for a personal project like this I've found it a very enjoyable experience.


I wouldn't consider v0.30 "production ready", especially for a programming language. Breaking changes should be expected until they reach 1.0.


> I've looked into it months ago and it seems that there are a lot of breaking changes on every release and this scares me from using it.

Don't worry, as soon as Auntie Apple, Uncle Uber or someone as large as Mr Microsoft goes and adopts Crystal as soon as it reaches 1.0, then we will all immediately run to learning it just like we all did for Kubernetes, Docker, Elixir, Go and finally with its great success and without any formal introduction, we have all wanted to purse learning Mozilla's new and most excellent general-purpose programming language:

Rust.


Crystal is most certainly not production ready but nonetheless I find it interesting and useful and use it for https://ratwires.space (nsfw)


If you included fairtrending.com into the trending page, that'd be a 100% reason to use this.

Unfortunately they took their page down since they didn't find it financially sensible (and after emailing them he doesn't want to open source it)

If you could implement real trending based on views/hours or some logical way that'd be amazing (understandably, this is open-source, so if I find the time I'd love to help too).


If you are using Firefox, there's a great add-on called Invidition that you can install. It redirects Youtube to Invidious and Twitter to Nitter.

https://addons.mozilla.org/en-US/android/addon/invidition/


I have used that add-on for a while, but half the time the video's stop playing after a while.

Instead I now have a youtube container and have set firefox to open all youtube urls in that container. That way all cookies and session are contained.

What you can also do is delete all cookies and site data when you close your browser and then add some sites to a whitelist (github, HN, etc) in order to prevent having to login all the time. In combination with a good password manager that shouldn't be a big problem anyway.


I have used that add-on for a while, but half the time the video's stop playing after a while.

Instead I now have a youtube container and have set firefox to open all youtube urls in that container. That way all cookies and session are contained.


There is also https://github.com/SimonBrazell/privacy-redirect which works for both firefox and chrome


wow, great! I am too on the "I do not like google to know what I see in youtube"


How many alternative YT front-ends are out there? I remember https://toogl.es/



http://fixyt.com

(Note that that's HTTP only, no HTTPS support.)


Fun fact:

This app is written in Crystal, with SSR Crystal + HTML templates.

It's source code is pretty interesting. One of the most popular Crystal apps I know of. (Huge fan of both Invidious and Crystal)

https://github.com/omarroth/invidious


How will this website not be killed by Google lawyers at any moment?


Essentially because it replicates the way a browser works, similar to youtube-dl. I would very much recommend taking a look through [0] for some more info, but one of the main goals of the project is to avoid use of any Google APIs. This also includes login, as mentioned in an earlier comment[1].

0. https://github.com/omarroth/invidious/issues/130

1. https://news.ycombinator.com/item?id=21545348


I was very confused at first. I didnt log into anything, yet https://invidio.us/ has plenty of creators from my YT subscriptions :o How the heck? Do the owner curate whats on the front page? I can only counts a couple video channels I have no interest in whatsoever (pie, h3, vox), or did Google finally started curating? No low value garbage on first page, something YT is usually struggling with. Still Peterson in related/recommendations tho.


The main algorithm is described here[0]. It's the most recent videos from the 40 most subscribed channels on the instance.

YouTube's recommendations are still used. They'll appear the same as if you viewed YouTube with a clean browser session, although you can disable them in your preferences if you'd like (under "Show related videos").

0. https://github.com/omarroth/invidious/issues/217#issuecommen...


Woah, this is amazing! When you click on a video, it just stays in one place and loads. It doesn't jump around the page resizing itself while you attempt to hit the play button.


Tried to log in with my Google account, got a message saying that it was temporarly disabled.


I tried writing a front end for youtube gaming to be able to list live streams of your subscriptions. Turns out the API doesn't expose this what I would assume to be a much needed bit of information. Discovery of live streams is hugely lacking compared to Twitch. Turns out that the API in general hasn't been really updated for half a decade, and the calls there appear to be focused on helping a channel owner rather than viewers

I gave up.


Is it possible to display my "Subscriptions" screen from YT? That's the only thing I use to decide what's to watch next.


For that I'd suggest different approach: using FreeTube[1][2] client which carries subscriptions locally; you can export and import channels in FreeTube format, NewPipe and OPML. FreeTube uses invidious to fetch and play videos - among other two players; it's also possible to change the instance in case of any issues. Sadly, I can't tell if it's possible to import YT subscriptions since I don't use the service with Google account for years.

[1] - https://freetubeapp.io/

[2] - https://github.com/FreeTubeApp/FreeTube


I think youtube subscriptions can be exported into opml and then import them into invidious


Also, what is registering for? Does it only save my preferences?


I believe registering also provides a non-google way of tracking subscriptions :)


While an interesting project, at first glance I don't really see what this front-end brings to YouTube compared to the original front-end. Speed, maybe? But this comes at the cost the UX.

I would much rather see something like this implemented: https://uxdesign.cc/my-attempt-at-redesigning-youtube-for-a-...


> I don't really see what this front-end brings to YouTube compared to the original front-end.

Well I don't want my Google account to be associated with the videos I watch. Nor do I want to be automatically signed into YouTube if I login to my Google account and watch a YouTube video.

As long it plays YouTube videos and it removes Google's tracking, then that is enough for me, UX changes is a bonus.


I've been using invidio.us for months. It brings me back to a simpler time on the web. The interface is straightforward, does just what I need it to and not more, it doesn't relentlessly spy on me, and I can have a separate non-Google invidio.us user account (which, again, Google can't data mine, auto log me into, etc.). I've always figured it'd get shut down at some point. I'd actually pay a small monthly fee to keep access to it and avoid Google's official YouTube interface.


Lots of people like the content on YouTube but don't like all the Googley parts.

I frequently watch YouTube over Tor, and they've started making me do lots of reCAPTCHAs and occasionally even rejecting me after I've completed the reCAPTCHAs.

HookTube is an improvement over the real YouTube interface in the sense that it never makes me do CAPTCHAs, except some proportion of videos don't work on HookTube, it just gives a black box saying "Watch this video on YouTube".

From a sample of 1 video that I couldn't watch on HookTube, it worked straight away on Invidious. So it's useful in that sense if nothing else.


No ads.

No (direct) YouTube tracking.

No need to sign in for 18+ / age restricted video.

Within the past few days, YouTube's mobile website has changed the player, for me, removing:

- Removing double tap left/right to skip forward/back within the video.

- Removing mute audio control.

- Adding skip forward/back in playlist. A feature I never use (YT's suggestions suck, I curate my own playlist.)

For now, Invidious retains the old player controls, allowing me to mute annoying-ass video and skip forward/back to repeat / bypass interesting / annoying bits.


> "In the background, the first video of the user’s recommendations is playing"

Well that sounds horrendous.


Looks like everything wrong with the web. I'll keep the simple grid of static thumbnails.


"play audio in background on mobile" is quite a big feature.


cant find it hm :?


First bullet point of the original Invidious linked page README:

> Audio-only mode (and no need to keep window open on mobile)


So do you see on your front-page of yt relevant videos and channels?


This is very cool.

Especially:

kgg2m7yk5aybusll.onion

axqzx4s6s54s32yentfqojs3x5i7faxza6xo3ehd4bzzsg2ii4fv2iid.onion


How does the audiomode work? I tried playing a video and the backround and it doesn’t seem to continue streaming. Is it because i’m on IOS?


Actually I’ll take that back. Halfway though. Some videos go in streaming mode while others dont. Also some videos support pinch to fullscreen on IOS while others don’t. Youtube is weird


maximum resolution in Invidious is 720p even 1080p is supported when goes to youtube. Are there some technical limitations?


You can watch 1080p if you set "dash" as your default quality in preferences, or by adding `&quality=dash` to the end of a video URL. The reason it isn't enabled by default is that it requires proxying streams, which is more bandwidth intensive[0].

0. https://github.com/omarroth/invidious/issues/34


You shouldnt need to proxy anything, there are in browser js muxers that can splice separate video/audio streams into one, or find jsvideo player capable of playing it directly.


I would recommend reading the issue I linked for why it's necessary. JS needs special access to resources that can't be provided without proxying.

You can see this yourself in a DASH player[0] and testing with e.g. https://invidio.us/api/manifest/dash/id/CvFH_6DNRCY. It will fail with

> Access to XMLHttpRequest at 'https://r5---sn-ab5l6nzy.googlevideo.com/videoplayback' from origin 'http://reference.dashif.org' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.

0. http://reference.dashif.org/dash.js/nightly/samples/dash-if-...


The most likely reason for the error is badly decoded signature. YT uses &sig as a "crypto" access token (lasting couple of hours last time I checked). I have zero trouble playing dash videos in standalone mplayer (after manually extracting two video audio sources and decoding proper signatures).


Only browsers have this restriction.

The issue I linked above doesn't appear to explain this. I would instead recommend reading this[0] comment.

0. https://github.com/omarroth/invidious/issues/177#issuecommen...


Ok, so CORS prevents from manual muxing/proper DASH player playback. How about two separate video audio tags with javascript synchronized playback/seeking?


Yes, 720p and past is only stored on the google servers with audio and video seperate. So, the only way to watch at those resolutions is for invidious to pass through the video.

I think there is a plan to get 1080p working though


I would consider 1080p less important than a 360p fallback for videos without 720p source at all.


Very useful - no ads and I can run it in background audio only on my iPhone just using the webapp.


It does not ask for a login.

Here is a full Pink Floyd album for your streaming pleasure.

https://invidio.us/watch?v=k_MP8URO-Xc

Works perfectly in a private safari window on my iPhone.

Great work!


Kemal framework used. Interesting.


Looks great, except the search seems very limited.


Would you mind clarifying what you mean? If you're looking for search filters you can use them using operators[0][1], similar to Google or DDG.

0. https://github.com/omarroth/invidious/wiki/Search-operators

1. https://invidio.us/search?q=type%3Aplaylist+sort%3Adate+musi...


This is going to come in handy in avoiding Youtube's terrible recommendations engine.


Is there an ingest for my YT data?


it's fantastic. it's clean, it uses all my screen estate really well, I love it.


Not available yet on Android?


I use YouTube Vanced on Android. It's essentially a modded YouTube that you can install alongside the real one without issues (it doesn't replace the standard app).

https://forum.xda-developers.com/android/apps-games/app-yout...

https://www.xda-developers.com/youtube-vanced-apk/

Aside from a few additional options and interface tweaks, the main reason I use it is for playback with the screen off.


We seem to be going from pirated movies and music to pirated youtube. Not really sure how I feel about that.


The HN zeitgeist answers:

- Artists need to find a new business model then.

- Artists should be hobbyists.

- If it's on the internet, it's mine for the taking.


Does it hurt artists really? I imagine a lot of YouTube users use ad blockers anyways, so a lot of artists have switched to in-video paid promotions.


Absolutely.

Source: I watch YouTube.

In all seriousness you hear creators talking about collapsing revenues due to adblockers all the time.

Bigger ones survive with tools like Patreon but if you're new with only a small fan base? (<10k) It's not viable anymore. The good thing about YT was always being able to take that passion full time.

Artists will always create content, but they will always need to eat too.


> Artists will always create content, but they will always need to eat too.

So do devs, which is quite often neglected when talking about open source. It often goes along the "well, then do it in your spare time"-line.

Maybe there is a huge gap between expectations and what we, as people, can actually do. There are a few who can make a living off of their channel, but you shouldn't start a youtube channel today, expecting to make some "big money".

The more traditional way would be to start small, gain more and more visibility over time, and at some point companies might be interested in "in-video" promotions, like LTT does.


> "well, then do it in your spare time"

Or, get paid to do FLOSS. (paid, not donations)


Yeah, blame the adblockers. Google decided to not pay anything to smaller fish anymore.

> Artists will always create content, but they will always need to eat too.

Start out as a hobby, then maybe it'll turn into a job. You just need more patience and less expectations instead of the instant gratification. Golden days are long over.


How exactly does that pay for YouTubes storage, bandwidth and transcoding costs? How does that pay for music artists which request that their music is paid for when people are listening to it in background? Why the wierd double standard with YT?


Double standard compared to what?


Compared to any other service or product mentioned on this site.


Do you think people only use adblockers on YouTube? Plenty of people have advocated their use for many other sites and services here.


In-video paid promotions are strictly for creators with hundreds of thousands and millions of subscribers. Small to medium creators still rely on algorithmic pre-roll and interstitial ads.


So this allows free bypass of features that YouTube wants you to pay for via Premium subscription.

Why is this acceptable for YouTube? Can we start building and publishing plugins that bypass paid subscriptions for other SaaS services here too?

This is especially strange for music - music artists (in my experience) usually want you to pay for playing their music without video via subscription or by buying an album. This allows complete bypass of that - it's essentially Napster again.


Piracy is a service problem.

And so is adblocking.


"Piracy is a service problem." is an excuse thieves use.


Copyright infringement is not stealing. It's as much stealing as it's sharing.


And jumping turnstiles is just borrowing a ride.


I don't pirate and don't use adblockers.

It does not refute my statement.

The absolute state of the film/TV industry should be enough evidence that piracy is definitely a service problem.


> Can we start building and publishing plugins that bypass paid subscriptions for other SaaS services here too?

You mean like [1]? Yes!

[1] https://github.com/iamadamdev/bypass-paywalls-firefox




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

Search: