GIMME VIDEO banner

GIMME VIDEO

10 devlogs
22h 7m 45s

Hello
THis is a python application use yt-dlp to download video from various sources like Yt, insta, … It able to download specific resolution , video type and able to show the download status

This project uses AI

I used GitHub Copilot to help me with the download logic (using FFmpeg, specifically theremove_audio_from_video, _get_runtime_base_dir(), and _get_ffmpeg_location()). Because after users download the .exe file (version 1.0.0), they are unable to download videos with or without sound.

Demo Repository

Loading README...

SpeedySchweppers

Fix the logic for downloading videos and both options in the .exe file.
Switch to using FFmpeg, but only include the required FFmpeg components instead of downloading the full package.
Next steps:

  • Update the README file.
  • with a video with instructions on how to download and use the app.
0
SpeedySchweppers

Shipped this project!

Hours: 17.14
Cookies: 🍪 212
Multiplier: 12.35 cookies/hr

I built an app that allow the user to download video from various sources including youtube, instagram, and much more. The user able to download specific type of video they want to download such as audio/video only or both. THe user also able to download specific resolution they want their video at. The hardest part about this project is the download logic since at first, my app only download 360p or 144p video even though I choose 1080p. To solve it I changed the logic to first fetch all available formats, then filter by the user’s selected quality and type. I also made sure the app correctly handles separate video/audio streams and merges them when needed, so the final output matches the user’s selection. If the user just press download without fetch data, it will automaticly download either but not limited to ( 144p,360p, and 480p). I think this is like the hardest project I have ever done. Hope you guys found it useful. Please give feed back if anything is incomplete or need to fix. THANKS ;D

SpeedySchweppers

New Features

  • Added a new visual indicator so users can detect if they haven’t filled out the required field. When the download process is complete, it returns to a static state.
  • Added a settings button containing information about the app, a tutorial on how to use it, and details on how users can contribute to the app.
    -Added a status section that displays the video size, Wi-Fi speed, estimated waiting time, and download completion percentage.
    Things to Improve
  • Sometimes the video cannot be opened using the default media player, but it works with VLC Media Player.
    Things To Do
  • Convert the project into an executable (.exe) application file.
  • Gather user feedback, ideally by asking people to test the app before shipping.
0
SpeedySchweppers

I forgot to update the Dev Log.

New features:
The user can now download videos in a specific resolution (e.g., 1080p, 720p, down to 144p). The storage size is correct most of the time.
I also updated the naming system. The file name will now be: Title + (audio/video/both) + (resolution). If the user chooses auto download, the name will be: Title + (audio/video/both) + auto (usually around 720p–360p).

Things that need to be fixed:
Currently, some video resolutions do not open in Media Player but work fine in VLC Media Player. This is not a major issue right now, but I will investigate to ensure compatibility with Media Player.

Planning:
Add detailed information above the progress bar, including download percentage, download speed, and estimated time remaining.
Since most of the features are completed, I am planning to work on a custom user interface that allows users to change text and background colors.

Planning to implement:
A new user interface with custom GIF animations for the progress bar.
A message system that displays specific error messages.

0
SpeedySchweppers

Dev Log:

I redesigned the user interface, made it more user friendly and add new feature that the user can download video,audio only or both ( basiclly normal video)
New Feature:
The user can now download audio, video, or both options. Simply click on the checkmark and you can download it.
Known issues:

At first, while testing, the video doesn’t get replaced when I click different options, it’s still the same video file not the audio only or video only. To solve that, I made it so the name of the file will be title + _download option (video/audio/both). (SOLVED)
When downloading the video it still shows the same storage it will take up → planning to add a function so that if the user selects audio, just show the storage for audio. If video only: show it, but the video should be lighter than the both version.

Planning to implement:

Add a feature so that if the user clicks on audio/video/both → show the correct storage it will take.
Since right now, I already have a working box that will retrieve available resolution from the video and the storage it will take up. I’m planning to add a new feature so that if the user clicks/presses/selects the video option, that will download.

Help:

If anyone knows how to style an app, like add pixel art or something using python please help me. My UI cooked 💀

Attachment
1

Comments

SpeedySchweppers
SpeedySchweppers about 1 month ago

Credit: Me at the zoo by Jawed

SpeedySchweppers

I added a progress bar feature so users can see how much of their video download is complete. When a user starts downloading, the progress bar fills up and changes color based on what’s happening. Blue means the video is downloading, green means it’s done, and red means something went wrong. When the user downloads another video, the progress bar resets and starts over again.
##New stuff
Progress bar that fills up as the video downloads
Color changes to show the download status (blue = downloading, green = finished, red = error)
Progress bar resets automatically when downloading a new video
##Known Issue:
During some of my tests, when I turn off wifi, the progress bar does not turn red during the download process. The terminal does detect that something is wrong and returns errors. I’m planning to create a function to ensure that if an error occurs, the progress bar turns red and displays a message above the text indicating the error type.

1

Comments

SpeedySchweppers
SpeedySchweppers about 1 month ago

For anyone watching this, please check the second video for the actual demo. I accidentally used the wrong video for this one.

SpeedySchweppers

I added a feature that shows the user a list of resolutions they can download videos from. I use the yt-dlp library to extract video metadata without downloading the file. The get_video_qualities() function retrieves all available formats, filters out audio-only streams, extracts resolution heights and frame rates, then sorts them from highest to lowest quality before displaying them in a listbox widget.

New Feature:

  • Allow user to preview list of available resolutions before downloading
  • Display resolution with FPS information (e.g., “1080p (60fps)”)
  • Sort resolutions from highest to lowest quality

Known Issue:

Not really a bug, but when showing the resolutions, the list includes uncommon video resolutions like 180p, 90p, or 45p that I’ve never seen used in practice. I’m planning on creating a whitelist/filter that will remove these unusual resolutions from the video quality listbox to avoid confusing users with non-standard options.

0
SpeedySchweppers

I added a browse button using the askdirectory function that open the system file explorer and let the user to choose a folder they want to save their video . When the user clicks it, it opens the file explorer so they can pick a folder. I used tkinter.filedialog.askdirectory for this in the UI. If the user doesn’t select anything, the program just returns and nothing happens.

0
SpeedySchweppers

Dev Log 3: I made a simple Python UI where the user can paste a video link and choose where they want to save the video. I wired it so the UI grabs whatever the user enters (video link + save path) and sends it to download_logic to start the download. The video gets saved as video_name.mp4. If the video doesn’t have a proper title, the filename ends up as a blank/placeholder name instead, which I’ll probably need to handle better later.

0
SpeedySchweppers

I first created a test version with no UI yet. To download a video, you need to copy the video link and paste it into the save path field, then enter your desired save location. Using yt_dlp, the program downloads the video as an MP4 file. I also use it to extract the video title and save the file with the same name in the folder you choose

Attachment
0
SpeedySchweppers

So I basically created a list of goals I should accomplish to build this application.”

Attachment
0