Closed omarroth closed 4 years ago
Please note that I am not a developer. Therefore, I will most likely not be able to implement breaking changes from YouTube in Invidious. I will do my best to manage the issue section and to answer questions. Previous code collaborations were also invited to the GitHub organization.
While I'm here at the top of the thread, I'll start a list of things you can switch to for youtube viewing alternatives.
The most obvious answer is to just go on youtube. If this isn't acceptable, read on.
You can go to https://instances.invidio.us to see a list of other instances that will hopefully stay running. Please pick random entries from that list to find your new home. If everyone picks the options at the top, those instances will likely be overwhelmed with new users, and become extremely shaky or forced to close entirely.
For android phones, use NewPipe. NewPipe does not rely on Invidious.
To download videos, use youtube-dl, or one of the many frontends for it.
My website, https://cadence.moe/cloudtube/subscriptions, uses the Invidious API. I will try to keep it running, since I use it myself, but at this point it is basically unmaintained.
FreeTube https://freetubeapp.io can either use the Invidious API or the built-in extractor. It is maintained and a rewrite of the code is being actively developed by Preston, and myself.
For an implementation of the API, my project here implements a few endpoints by calling the youtube-dl command line and reformatting the response into JSON on a webserver. I intend to develop this further. https://github.com/cloudrac3r/youtubedl-invidious
For RSS, youtube offers RSS feeds directly.
This list may be updated in the future.
Thank you for what you have provided @omarroth we appreciate what you've done
Is this only for the invidio domain or does this affect every other domain alongside it? I use Snopyta and Yewtube whenever the main domain has issues.
Is this only for the invidio domain or does this affect every other domain alongside it? I use Snopyta and Yewtube whenever the main domain has issues.
It only affects the invidio domain. It will eventually affect the other domains if no one can improve/fix the project as needed.
I am building Parasitter. It is an app to follow and watch Youtube and Twitter with privacy. It uses Nitter's RSS feeds and Invidiou's API and RSS feeds. I will try to keep it up and I will investigate to see if I can break de dependence with Invidious API.
Thank you for your hard work. You built more than a side project, you built a real alternative to YouTube, that respect privacy without cutting on features or requiring to give up on our subscriptions and watching habits.
Good luck for whatever you will do next, and please know that you built something really meaningful and should be proud of the work done, and your investment in this project.
I love your decision to take care of yourself!
Thank you for all the hard work!
The title of your post is very misleading. You are not stepping away any millimeter from open source software, just from maintaining invidious.
If I had experience in Crystal I would definitely find some time to contribute but I have none in Crystal or similar languages. Choosing niche programming languages for projects has its drawbacks.. sadly.
@SuperSandro2000 I am thinking about learning Crystal. Is is worth it?
I discover such an awesome project, and a week later this happens... thanks for you work though!
It's not gone. I have a question: Is it at all possible for Invidious to join the Fediverse? Fediverse
Invidious in the fediverse would be interesting, indeed. Perhaps you could even create ActivityPub accounts for a YouTuber dynamically? And then have their videos posted in the stream?
All good ideas!
Wait does this mean that https://invidio.us will be shut down forever..? Sorry I'm kind of a noob.
Hi!
Thanks for the hard work you did past years, Omar, it has been very appreciated and you opened the way for different cool projets (Nitter, Bibliogram, etc.). So, thank you very much for all you did for everyone.
I have two questions, though. The first one is for you, @omarroth: Are you about to give/sell the domain to someone? To @Perflyst? I am a bit worried that scammers or whatever would get the domain and scam users which don't know that this instance in unmaintained. Edit: I just saw this other thread, talking about that.
The second one is for you, @Perflyst. Since you are not a developer, are you willing to seek actively a second maintainer, which would help with programming? I know it can be pretty hard, especially since Crystal does not seem to be a very known language.
Anyway, thanks again, both of you, for what you did already for Invidious. It's really appreciated.
The domain will not be sold, for now omarroth keeps it and if in any case he wants to get rid of it I am sure it will stay in the community.
are you willing to seek actively a second maintainer
I am not sure how that should work. The attention on Omar's blog post is now at its highest. There are threads on Reddit and Hackernews. After the whole thing flattens out again, it becomes even more difficult to find a new maintainer.
The domain will not be sold, for now omarroth keeps it and if in any case he wants to get rid of it I am sure it will stay in the community.
Perfect. That's what I wanted to read!
are you willing to seek actively a second maintainer
I am not sure how that should work. The attention on Omar's blog post is now at its highest. There are threads on Reddit and Hackernews. After the whole thing flattens out again, it becomes even more difficult to find a new maintainer.
Yeah, definitely.
Maybe If you are willing to find another maintainer to help you on this side, maybe we could use this momentum and the community to help to find a Crystal developer.
Anyway, I am happy you decided to maintain the project.
What's the next recommended Instance for now? I usually try Snopyta but NoScript blocks the video (even after setting permissions) unless i use Dash quality only, but that only ever gives me 360p video when i use that. I also tried Yewtube but that wouldn't let me import my .us settings into it (Just says "A bug has been found in Invidious)
@WandeingLagomorph793 I've had success importing YouTube & Invidious data as "youtube subscriptions"
@WandeingLagomorph793 I've had success importing YouTube & Invidious data as "youtube subscriptions"
Does it matter if it's .json? I used it's regular format for Snopyta and that transferred fine for that.
What's the next recommended Instance for now? I usually try Snopyta but NoScript blocks the video (even after setting permissions) unless i use Dash quality only, but that only ever gives me 360p video when i use that. I also tried Yewtube but that wouldn't let me import my .us settings into it (Just says "A bug has been found in Invidious)
You should try any instance up to date.
Honestly, looking at this issue now. Invidious is practically screaming for a URI scheme, e.g. invidious://video/...
, so we can easily switch which instance we use.
This would avoid the whole "stop linking to invidio.us" debacle.
Thanks for handing the project over to someone and not walking away it. And thank you for all you have done for invidious
@Perflyst while I love that Omar Roth has made you a maintainer, I can't see how Invidious would keep up with YouTube's tomfoolery against Invidious without a dedicated maintainer that can code. As you said yourself, you are not a programmer, so who is going to keep the project's code up to date?
Has anyone offered to do this, yet?
(there was a blog article about this, I'm just mirroring it)
You are right, this is a problem we are aware of.
Has anyone offered to do this, yet?
Nobody yet, but we all hope that someone is interested in developing the project further
Hopefully... I would offer to help, but a lot of it is in Crystal.
I understand omarroth's reasons for leaving Invidious, but I am not sure what to use as a replacement, now. This was the same fate of another YouTube frontend called Hooktube. The problem is that the YouTube website itself is almost unusable as it is bogged down with ads and finding many videos is difficult due to the horrible search algorithm that YouTube has not to mention all of the data-mining that Google does through YouTube. Finally, this is the only frontend that I have seen that gives you the option to stream videos in audio-only.
Another good thing about Invidious is the fact that there are several add-ons for Firefox that redirect YouTube links to their Invidious equivalent, as well as embed Invidious players in place of an embedded YouTube video on a website. If anybody can recommend a frontend that has similar support in terms of website add-ons, I will be much obliged. I took a look at Freetube.io, but it looks like you need to download it first to use it which I cannot do on my work computer.
I second the idea of omarroth finding a maintainer while he is away. Invidious is too useful of a website to let it languish.
@Hepativore (or anyone reading this) If you are a developer, you are very welcome to contribute to Parasitter as I'm trying to make an alternative written in Python+Flask of what invidious was.
@Hepativore (or anyone reading this) If you are a developer, you are very welcome to contribute to Parasitter as I'm trying to make an alternative written in Python+Flask of what invidious was.
I am a histologist (biologist), not a programmer. I might be slightly better than average in terms of a few tricks here and there when it comes to computer stuff, but I would not be able to help you directly with Parasitter.
Will Parasitter also have its own website for those of us who cannot always use a downloadable app?
@Hepativore yes, that is the idea. I already have the parasitter.net domain, but until a minimum viable product is not ready it won't be online.
Hello @omarroth I want to start by thanking you for this marvellous service, you have achieved something truely great in this project and I hope you are very proud of it.
I'd like to help with the future maintenance of this project but unfortunately I know little about Crystal, however I am a Ruby developer so perhaps that's a start?
Anyway, for now I work on the Privacy Redirect extension for both Chromium and Firefox, which makes use of the invidio.us service, where it is the default instance for Youtube redirects. Given the shutdown of this instance, I'm going to change this to instead be randomised on installation, picking an instance from the list of available instances, which I've already done for Bibliogram, on request by @cloudrac3r, to help share the load around. Any instance owners who are listening to this thread and would not like me to do this, please let me know and I'll make sure your instance is not included.
Thanks again @omarroth, all the best in your future endeavours mate!
EDIT - almost forgot...
Thank you very much @Perflyst for taking up the challenge to continue this project, please don't hesitate to contact me if you need any assistance. As mentioned I'm not familiar with Crystal but I do have a fair amount of experience with Ruby, so perhaps I could be of some help, as it appears they share a similar syntax.
I second the idea of omarroth finding a maintainer while he is away. Invidious is too useful of a website to let it languish.
Agreed. I am pretty worried. I should probably cut down on my Invidious usage, but I am most worried about the people that might give in to YouTube if this module is broken without repair.
@pluja I love your module! If I'm reading it correctly, can it be used as a webapp?
I'd like to help with the future maintenance of this project but unfortunately I know little about Crystal, however I am a Ruby developer so perhaps that's a start?
If you (or anyone else looking to contribute) has any questions about specific functionality or lines of code feel free to open a new issue here or message me on Matrix.
I second the idea of omarroth finding a maintainer while he is away. Invidious is too useful of a website to let it languish.
Agreed. I am pretty worried. I should probably cut down on my Invidious usage, but I am most worried about the people that might give in to YouTube if this module is broken without repair.
@pluja I love your module! If I'm reading it correctly, can it be used as a webapp?
@resynth1943 Not yet but it will soon!
@omarroth , thanks so much for all of your hard work, it's super appreciated by so many people. I also routinely use the super-clean invidious sites to demonstrate to people how the internet should have looked.
As far as a path forward goes, I've been mulling over a bit whether I want to do anything here, and I keep coming to the conclusion that really we probably just need something that uses youtube-dl as a back-end. It seems to be a very widely used tool and though it doesn't look like it has a particularly high truck factor, it seems unlikely to be going away any time soon. After all, writing code to host a static site isn't hard or particularly painful, web scraping on the other hand is inhuman torture.
and I keep coming to the conclusion that really we probably just need something that uses youtube-dl as a back-end.
This is what I am trying to do with https://git.sr.ht/~cadence/Second . It will be an implementation of the API, so when it works fully, it can be used with any front-end that uses the API, like CloudTube and FreeTube.
An important question though, does youtube-dl really not use the official google API's? That seems like one of the essential design features of invidious and it would be a shame to move to tools that weren't true to that.
youtube-dl does not use the APIs, and this is why you do not need to generate an API token to use it.
As far as a path forward goes, I've been mulling over a bit whether I want to do anything here, and I keep coming to the conclusion that really we probably just need something that uses youtube-dl as a back-end. It seems to be a very widely used tool and though it doesn't look like it has a particularly high truck factor, it seems unlikely to be going away any time soon.
I was doing this previously for my similar Youtube client and wouldn't recommend it long-term. The only advantage you really get is that the data for the watch page is provided to you. All the other pages in Youtube require your own scraping because youtube-dl is really only meant to be used for, well, downloading videos. Additionally, in order to add additional features, such as getting captions and the music list, it required modifying youtube-dl and maintaining a mini-fork inside my project. This made it a bit tedious to integrate changes from upstream. Plus, the youtube-dl code is quite old, has a lot of cruft, and I've found that it breaks more frequently than a more robust, custom backend (it also depends on the disable_polymer layout which Youtube might remove suddenly in the future). For this reason, I made my own backend with a greater focus on making it more resilient towards changes upstream from Youtube. The client is here for anyone who's interested.
To cite @SuperSandro2000 from an earlier comment:
Choosing niche programming languages for projects has its drawbacks.. sadly.
There's nothing wrong with Crystal itself and Invidious seems to be one major projects showcasing the capabilities of Crystal as a programming language. The Invidious project lost traction simply due to the lack of man power, i.e. developers that know Crystal.
Several people in this thread already showed interest in contributing to Invidious, but have no programming experience in Crystal. So would it be feasible to port the codebase of Invidious to a more popular programming language, e.g. Python or Go?
This could attract more contributors, thus distributing the effort of maintenance and development over multiple people. @pluja for example stated that he's working on a project written in Python that aims to provide a similar functionality as Invidious.
In general it might be interesting to have a general overview of
Maybe we could copy how NewPipe does it and use it in invidious (or some other web interface app that people might be creating). Its pretty well established already and does not have the limitations of youtube-dl. It would also address the issues with the video tab we're having now because if they want to do that again, they will have to affect newpipe as well. (I know its not a permanent solution but scraping youtube isn't permanent anyway)
And obviously the server will do the scraping, not the client (in newpipe it's a client-side app so the client does the scraping) like currently.
@zethexx the NewPipeExtractor library is Java-based and independent from the NewPipe app. So code reuse might be possible.
https://github.com/Tyrrrz/YoutubeExplode is C#-based library that should cover a lot of needed functionality. According to the repo's commit log the project is being developed since three years and looks well maintained.
https://github.com/iawia002/annie, a video downloader written in Go, provides extractors for Youtube videos.
Another promising option is Freetube, an open source desktop YouTube player written in JavaScript. Its reliance on the Invidious API and intentions to improve the quality of the codebase led to an in-progress rewrite of Freetube. The rewrite cuts the dependency on Invidious by replacing the functionality of the Invidious API using already existing packages (e.g. this and this) in the Javascript ecosystem. The current state of the rewrite looks already quite feature complete.
You can find more information in a response to the future of the Invidious project by the maintainer of Freetube, @PrestonN.
In a joint effort the Freetube and Invidious communities could maintain a shared library that scrapes all necessary metadata for an alternative Youtube-frontend without relying on Youtube's API. Both projects would share a common core, where Freetube remains a desktop app while Invidious can wrap the library in a web-based frontend.
That's a good idea and is viable.
Again, I'm currently working on an implementation of the API in Python, which should also meet the goal of being compatible with an alternative front-end. https://git.sr.ht/~cadence/Second
@cloudrac3r I like what you're doing with 'Second', I'll be taking a look to maybe integrate it with Parasitter.
@digitalcraftsman i have developed an open source android app which uses invidious API's too. Your idea is interesting !
can anyone amuse me by confirming that google doesn't rate limit or captcha blocking chinese VPN companies like Nord VPN or Express VPN because chinese government is effectively bribing google through unskippable embedded sponsorships in vlogs
I apologize for keeping on "ranting" about this, but - as far as I can see - the only way to give the Invidious project a chance of finding a new developer and surviving into the future would be to thoroughly document it. IMHO, without that, it's doomed.
If it was thoroughly documented, the fact that much of it is written in Crystal would not be so much of a problem. I'm guessing that Crystal is just another procedural language and would be learnable.
If the project's architecture and functioning was thoroughly documented, it would be feasible to pick up the development.
Unfortunately, @omarroth 's kind offer to answer specific questions about the code would not be enough. It would take a proper enterprise on documentation, such as I proposed on Matrix.
I was sad to take down my own Invidious instance already. Google is shutting down Google Play Music very shortly, and is going to merge it into YouTube Music. I am betting that they will rewire their APIs.
If Omar can't be persuaded to undertake a detailed documentation effort with me and whatever other community members who are willing, then I would say this project is going to come to an end...
Great progress today with Parasitter. Parasitter server is now MUCH less dependent with Invidious as I'm trying to make it a stand-alone option for watching youtube!
Starting September 1st, I'm shutting down the user-facing portion of https://invidio.us and stepping away from development. You can read more here.
@Perflyst has been promoted to project owner.