Skip to content
This repository has been archived by the owner on Jun 30, 2022. It is now read-only.

An important anouncement about this library #189

Closed
mytja opened this issue Jun 21, 2022 · 3 comments
Closed

An important anouncement about this library #189

mytja opened this issue Jun 21, 2022 · 3 comments
Labels
information Information about the usage or bug dealing

Comments

@mytja
Copy link
Collaborator

mytja commented Jun 21, 2022

Hello, everybody.

This is a very important announcement about youtube-search-python. To waste the least of your time, I'll keep it short as possible. youtube-search-python will be retiring in a few days, to be exact, on 23rd June 2022, exactly 2 years from its initial release. In the following days, I, as the current maintainer of the library, will make last commits, fixing some issues, and merge some pull requests (if the community will make them). After that, I'll push a new release to Python Package Index, v1.6.6, which will be its final release. The library will archive all of its contents and will become read-only shortly after that. This library will not accept any Pull Requests, neither any Issues. Be sure to scroll down to the questions and answers section.

Story time. [TLDR: I'm retiring this library due to lack of time, lack of community support and the more or less bad code quality]
youtube-search-python's first release was on 23rd June 2020. It was started by @alexmercerind with purpose of building a working YouTube parsing library. The library was very basic at the moment. It has featured basic methods for searching. YouTube has evolved during this time, and so was this library. It got widely recognized within the Python community as one of best YouTube libraries. We have added some of the functionalities, such as Hashtag (by @raitonoberu), Video (by @alexmercerind), StreamURLFetcher (by @alexmercerind), Playlist (by @alexmercerind), Comments (by @mytja), Channel (by @mytja) and Transcript (by @mytja).

This library certainly features a lot of different functions, but was also very poorly designed. During 2 years, within which, this library was in development, there were a lot of bad practices used in the code. Let's be honest, this was one of the first (if not the first) project by @alexmercerind. Python is not really a "safe" language (from typing perspective), such as other typed languages (like Go, C, C++, Dart, TypeScript etc.). The core team of the maintainers (@alexmercerind, @raitonoberu and me) worked so hard on removing these bad practices and making the code more maintainable, and it worked to a certain degree, especially by pull request #117, yet this code still contains too many legacy code (that's not even used anywhere).

This is not the main point on why I'm retiring the library though. This library in total requires too much attention. Whenever YouTube feels like it, they will break something, and that's not something I can do about it. I can only patch the library, so that it works for another 3-6 months. Not all the classes are requiring such attention. For example, *Search classes haven't been touched since the rewrite to Core classes, and that's quite long time ago. Generally, *Search classes are the most stable, and they will probably continue to work for years. The problematic classes are StreamURLFetcher, Video, Playlist (and sometimes Transcript). These are one of the most important functions of YouTube, and that's why they are guarding them so hard. Once StreamURLFetcher was made, it was using PyTube, which is really cough poorly maintained and breaks too often, so once we've migrated to yt-dlp, it isn't that problematic anymore. The library requires so much attention, I just don't have any time to maintain it anymore. It was all good, but now I'm enrolling in a higher level of education, and thus I'll have less and less time.

One of the problems is the Stars to Issues, Stars to Pull Requests and especially Downloads to Stars ratio. With this library getting more than 1.25 million downloads this month and not even reaching 500 stars, it's disturbing, I can say the least. This library has 30k+ dependents according to GitHub (and probably even more, due to private repos not counting). @alexmercerind has always wondered why are we all still maintaining this library. I always wanted to maintain it, because there were a lot of people using it, and it would be more or less irresponsible for me to just leave it rot (aka. not maintain). But, the community support for this library is even worse. This library has the core maintainers (@alexmercerind, @raitonoberu and me) and besides that, only a few people submitting good code fixes. If I go to Dependents page of GitHub and have a look at few dependents, I can see a pattern. Everybody is using only *Search classes. I get it - they are extremely stable, but why have we added StreamURLFetcher, Video and Playlist classes?! Almost nobody uses these problematic classes, and yet, here I'm fixing more or less these classes.

I'd like to thank from the bottom of my heart to @alexmercerind for starting this library and @raitonoberu for great code reviews, the Hashtag class and his expertise knowledge about Python and async in general.

I'd like to thank @yt-dlp for their amazing library. I know how hard is it to maintain so huge library/projects.

I'd like to thank @Zocker1999NET, @fabi321 and @dscrofts for their help with the most problematic classes and bugs.

In this occasion, I'm sorry for everyone receiving an unwanted ping.

Thanks to the community for their support and their use of this library. I'm pretty sure, the community will make a better library for YouTube searching or even fork this library.

Thank you so much for all the experience, this library has given me. I really can't imagine, where I'd be right now, if I hadn't maintained this library.

I'm so sorry for the broken English in this announcement. I'm not a native English speaker.

Happy YouTube searching! 🤞


Q&A

What happens on 23rd June? Will this library stop working suddenly.

NO. That's not the case. This library will not stop working on 23rd June, unless YouTube changes something drastically. All the *Search classes will probably continue to work for years due to their stability. All the problematic classes mentioned above, will probably stop working within 1 year (when YouTube changes something). yt-dlp will probably add on stability of the StreamURLFetcher, but for how long... This library will NOT BE deleted from PyPi, neither will its repository be deleted. Everything will just become read-only.

Why are you archiving the repository? I wanted to contribute.

The trend of this library is, that after I step down as the maintainer of this library, this library will have NO ACTIVE MAINTAINERS. Due to the trend of this library having too little amount of outside contributions, I can't think of anybody, that'd be capable of maintaining this library. If the community organizes and makes a fork, great... You'll be able to contribute to that fork.

Do you know of any replacements for this library?

Not as of now. This library was one of the most extensive libraries and I currently can't think of a replacement. Maybe try with yt-dlp or PyTube.

What are you going to do now?

My focus has shifted to different projects (I don't want to self-promote my projects here, but you can see them if you have a look at my profile. My current projects are not affiliated/connected with youtube-search-python in any way) and the original author (@alexmercerind) is currently working on a really cool project, called Harmonoid. It's a really cool music player (not affiliated with youtube-search-python) and I recommend you to check it out.

@mytja mytja added the information Information about the usage or bug dealing label Jun 21, 2022
@mytja mytja pinned this issue Jun 21, 2022
@alexmercerind
Copy link
Owner

alexmercerind commented Jun 21, 2022

Thanks a lot for your awesome work @mytja here, either it be code contribution, documentations or issue triaging.

We've definitely grown out of this. None of us can afford time for this project.

We've learnt a lot more about programming (and good-practices) in general since we first started working on this. Now looking back, there are a lot of regrets & "eh"s about the code present in this repository.


Personal life, college/school, job, other OSS projects etc. play more important roles in our lives. One cannot work endlessly on something like this.

Thanks for staying, if you did.

@anshuman852
Copy link
Contributor

End of an era

@chirag127
Copy link
Contributor

Is it possible that someone can tell me how to fetch video_ids of playlist and channel in yt-dlp , it seems to be very easy in youtube-search-python , but not in yt-dlp.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
information Information about the usage or bug dealing
Projects
None yet
Development

No branches or pull requests

4 participants