sleepytaco / UnTube

A simple, comprehensive YouTube playlist manager web app powered by YouTube Data API V3. Built with ❤ using Django, htmx and Bootstrap.
50 stars 3 forks source link
bootstrap5 charts-js chartsjs django django-application htmx javascript python3 pythonanywhere youtube

UnTube

A simple, comprehensive YouTube playlist manager web app powered by YouTube Data API V3. Built with ❤ using Django, htmx and Bootstrap.

UnTube Dashboard

Update: I have revised the project structure to make it easier to run locally. Instructions to run UnTube locally can be found below.

About

I built UnTube with the goal of making it easier to manage multiple YouTube playlists. UnTube makes it possible to bulk delete videos from a playlist, take care of duplicate or unavailable videos, bulk copy/move videos from one playlist to other playlists. All you have to do is log in with your Google account and import your playlists to access these basic features + more!

Features

Apart from the base features mentioned above, UnTube offers more:

Walkthroughs

Organize your playlists using Tags + Search for videos and playlist found in your UnTube collection

UnTube Organize and Search

Import public playlists into your UnTube collection

UnTube Import Public Playlists

Perform bulk playlist operations

UnTube bulk playlist operations

Mark playlists as watching

UnTube Mark Watching

Running UnTube locally

Optional: If see a SocialApp matching query does not exist error, please go into the local/local-settings.py file and increment the SITE_ID by one. Then, when the server re-runs the error should go away when you try to log in. If it still does not go away, keep incrementing it until it does...

Libraries/Resources Used

Notes

Most of the dynamic interactivity on this site was made possible due to htmx. When I began implementing core site features like moving, deleting, checking for updates, etc., and tried to make it interactive, I found myself writing a lot of AJAX code each and every time, for even the simplest of interactivity. It was when I found htmx my development process sped up quite a bit. Who would have thought that instead of replacing the whole page with the response, just replacing a particular target element within the page with the HttpResponse would do wonders? Some of the major places I've used htmx on this site:

Additional interactive features such as the progress bar and tagging playlist were all made possible because of htmx. Any questions on how I've implemented some of the features on this site? Please send me an email at abukhan363@gmail.com with your feedback and questions. I will be happy to share my code and thought process to illustrate how I implemented the site's features using htmx.

To Do