Techie Stack 💻:
Status : Blocked ⛔
TODO: Put the current gui of the application here
- Learning about the integration of libraries (Pytube & Tkinter)
- Learning how library works (Pytube)
- Learning about GUIs
- Learning how Asynchrony works in Python
- Learning about threading module
- Learning good practices (PEP8 - Style Guide for Python Code)
- Reading libraries documentation (yep, I'm not hiding gurl)
The main reason is because Pytube is an obsolete library (not updates since 2021) Every time YouTube updates its API, things break (logically). One day it works fine, the next it doesn't
Boxing against Pytube ...
[Context]
I wanted the user could a choose a video resolution, the thing is, the Progressive streams are video-audio joined but never have the highest resolution (720p instead 1080p), so I had to work with DASH (separate video and audio).
Downloading the video and audio per separate, is no problem because then they can be merged with a module called ffmpeg.
[Status of my app on that point]
I had 2 threads :
- To download the stream itself
- To update the progress bar as the stream download progresses
That worked well 👍
[THE PROBLEM]
Pytube is not «thread-safe», because of this, it would not be able to make a third thread which unloads a second stream in parallel to the other 2.
- How to design and set up an GUI (Tkinter)
- How streams works
- Difference between Progressive vs DASH (Dynamic Adaptive Streaming over HTTP)
- Threading and Asynchronous process (well ... something ... around 1%, I hate it)
- Events
- Buffering
- Lambdas function
- How the progress bar works and synchronizes with a downloading stream
- Find alternatives to Pytube (yt-dlp is popular, but its api ... no)
- Choose the directory where to save the content
- Download only audio from videos
- Download playlists