Overview
A simple YouTube downloader made in python. This project main purpose is demonstrate knowledge with Python and it's libraries (PyTube, CustomTkinter, Tkinter, OS, urllib, PIL, io, and pywin32). For more information, check out my GitHub page to see how you can install it and get it working.
Demonstration
What I Worked On
- The GUI Front-end. Using customTkinter and Tkinter, I put together the tools it had to make the GUI application the way it is. This includes:
- Text that indicates where to insert YouTube URL.
- A entry box where you can insert the YouTube URL.
- Text that indicates the status of the YouTube Video (Whether it has succeeded, failed, or no URL was provided).
- A option menu that shows a couple of options for downloading. These include:
- Download Video
- Download Audio (mp3)
- Download Audio (wav)
- Download Playlist (Video)
- A image thumbnail that will appear once the video has been downloaded.
- A context-menu that will appear if you right-click with the mouse, allowing you to paste the text within the entry field.
- The backend. This is where the downloading functionality works behind-the-scenes. Using OS, PyTube, pywin32, urllib, PIL, and io, the tools were put together to help the application ability to download video in mp4 and audio format.
- PyTube: Downloads the YouTube based on the URL provided. Allows you to download single videos or entire playlists.
- OS: For audio format, this was used so that the audio only versions of the videos that were downloaded can be converted to either mp3 or wav formats.
- pywin32: Allows access to windows clipboard so that data can be pasted onto the entry field.
- urllib: Once the video is downloaded, the thumbnail URL is retrieved. Using the thumbnail URL, we read the data from the URL and store it into a variable.
- io: Once the URL data is stored, the IO library is used to read the data from the variable and transfer it to bytes so that it can be displayed as a image.
- PIL: Once the data is in bytes, PIL image is used to convert that bytes into a image to be shown once the video is fully downloaded.