Skip to content

sourabhkv/ytdl

Repository files navigation


ytdl output-onlinepngtools

GitHub release (latest by date) GitHub release (latest by date) GitHub YouTube Channel Views GitHub commit activity python python Windows

python
python python

GitHub release (latest by date)

GitHub release (latest by date)

A GUI program that runs on top of yt-dlp and ffmpeg to download videos and audio. This project is only for educational purpose DO NOT SELL . DO NOT plagiarize. USE AT YOUR RISK . I DO NOT PROMOTE ANY ILLEGAL DOWNLOADS .

                    python     yt-dlp     ffmpeg     ps    

Version 23.xx.yy coming soon....
Update model 3 will built using python 3.8.10
Windows 7 support will be dropped in Oct 2024.
⚠️UPDATE : ytdl will focus on supporting legacy systems till Oct,2024 with little to no compromise on features. ytdl unlocked will focus on enhancing look and feel, features of application with no compromise, will use higher version of Python 3.11.x and only x64 builds will be developed and maintained.
⚠️ ALERT CURRENTLY SUPPORTED VERSIONS WILL NO LONGER RECEIVE UPDATES ,YTDL WILL USE PYTHON 3.10.7 with latest libraries
⚠️ Windows 7 version will be released separately which will be based on python 3.8.10

yt-dlp and youtube-dl licensed under The Unlicense
FFmpeg is licensed under the GNU Lesser General Public License (LGPL) version 2.1 or later.
AtomicParsley is licensed under GPL-2.0 license
pygame is licensed under GNU LGPL version 2.1

me at zoo

More Screenshots
Installation demo
Full demo

Features⬇️\Application➡️ Ytdl 4k downlader YTD Downloader yt1s website
Video download YouTube yes yes yes yes
playlist download yes yes no no
Specific video inside playlist yes no no no
Audio download yes yes no (Pro) yes (mp3,m4a)
Converter yes no yes no
8K support yes yes yes no
Ads no no yes yes
Downlaod limit no limit 5/day no limit no limit
thumbnail download yes no no no
Captions support yes yes no no
Proxy support yes no no no
Supported website 1700+ 11 48 2
Simultaneous downloads upto 5 Pro Pro No
Create custom command yes no no no
Metadata yes no no no
Updates yes yes yes -
Size of application 37 Mib 78.5 Mib 13.7 Mib -

Screenshots of changes

ytdlgui3

Version 22.208.02 and above with dark theme and categorized data.

youtube-dl GUI new

Select audio ,video and caption stream(s).
Click Browse to browse the location where video/audio will be saved if not clicked default browse location is downloads

Special features

Captions support (YouTube)
Thumbnail download
Advanced option to specifically select audio , video separately
Convert video into music MP3(64,128,320 KB/S), M4A , WAV ,FLAC WITH METADATA
Supports upto 5 Youtube downloads parallely
Full application can be updated by clicking on update button (including yt-dlp) version 22.0526.23 or higher required
Variety of supported websites
Proxy support.
Rate limit
File converter

Ytdl unlocked (Pro)

Expanded supported websites
made with python 3.8 and 3.10
multi video supports que
multi video supports more URLs other than youtube.com
Hyper user
Wav format for playlist and more.

Roadmap of releases

☑️Alsina - Settings menu, history of saved files , auto update(June end)
☑️Transition release - Help users with old version to migrate to Meteor release
☑️Meteor - updater changes stable(July-Aug)
☑️Clang - Regex support in output template, (Sept-Oct)

Coming features

Better playlist support.
tag editor.
Output template with regex support.

Stream selection

If you have VLC not installed try using these combination. Recommended combination of audio and video codecs
MP4 --> video: avc1 & audio: mp4a
WEBM --> video: VP9 & audio : OPUS
NOTE : Files are converted into MKV format since other combination are incompatible

Music

mp3 64K, mp3 320K, m4a, wav, flac available
m4a, mp3 320K, flac includes thumbnail and Metadata
flac , wav formats takes more space than mp3 and m4a

Playlist

Currently supports Youtube playlist
Enter playlist url select format (144p,240p...,mp3,m4a) hit download

Download specific episodes in playlist
Playlist video items to download. Specify indices of the videos in the playlist separated by commas like: 1,2,5,8 if you want to download videos indexed 1, 2, 5, 8 in the playlist. You can specify range: 1-3,7,10-13, it will download the videos at index 1, 2, 3, 7,10, 11, 12 and 13.
If nothing is specified whole playlist will be downloaded.

New version demo
old version demo
Playlist demo
Older version watch demo here

⚠️ DEPRECATION WARNING

Windows 7 support will be dropped in Oct 2024.
Playlist items selector will no longer be based on text input. Direct terminal option will be shifted to custom command section.(Discontinued)
Full installer will not use program files instead will use {localappdata} dir, it will remove admin requirement. Program folder will not be used in future. To update uninstall existing version and install August version when available (Updater will not work for older version).

INSTALLATION

Currently this is supported only on windows.
System Requirement : Windows 7 SP1 or above (x86 & x64)

Installing via powershell

Execute the following command in powershell

iex ((New-Object System.Net.WebClient).DownloadString('https://raw.githubusercontent.com/sourabhkv/ytdl/main/WebInstaller%20CLI.ps1'))

Setup

Installer Type Name
Full Installer Youtube-dl GUI.exe
Web Installer Youtube-dl GUI Webinstaller.exe
Portable Installer Youtube-dl GUI Portable.zip

⚠️ Note : Some browsers may block this download because of lack of certificate , select keep anyway : Updates will be delivered automatically. Latest 2 releases will be supported for updates.

setup complete

Click Launch button after downloading.
You are ready to go 🚀.

Update application

Few update model were tested in past to update application.
Model 1 : Manual updates with admin rights (to make changes directly in programs folder)
Model 2 : Auto updates without admin rights (using C:\Users\<username>\AppData\Local\Youtube-dl GUI)
Model 1 & 2 required additional component like updater.exe where as upcoming Model 3 no such additional component is required.
Model 3 : Updater will be baked in main executable. Resulting in size reduction. ytdl will store temporary folder to store update. Each update.zip will contain script.bat to guide how changes will be made.
Model 3 is under development

.
..
Youtube-dl GUI
|--certify
        *.*
|--Cryptodome
        *.*
|--database
        args.txt
        cookies.txt
        history.txt
        loc.txt
        log.txt
        output_temp_vid.txt
        output_temp_plst.txt
|--temp
        script.bat
        Youtube-dl GUI.exe
        *.*(Other files depending upon update)
*.*

If any updates are available ytdl will clear temp dir contents before downloading.
After downloading update script.bat will launch to taskill & delete current Youtube-dl GUI.exe and place new Youtube-dl GUI.exe at same location to prior and perform any other task depending upon update.

Building executable

Windows


  1. Clone this repository
  2. Install the following dependencies
python >= 3.8.10
ffmpeg >= 3.3.4
yt-dlp latest version
  • ffmpeg and yt-dlp should be placed in cloned dir Libraries
pyinstaller==5.6.2
Pillow==9.4.0
yt-dlp==2023.1.6
virtualenv==20.17.1
pycryptodomex==3.16.0
requests==2.28.1
psutil==5.9.4
pytube==12.1.2
  1. Run the builder.ps1
  2. Build will be generated ./dist/Youtube-dl GUI/ folder

Linux (Still in preview)


  1. Follow step 1 and 2 as above
  2. Give permission to builder.sh
chmod +x builder.sh
  • Before compiling change few lines in code which ask for logo.ico
  1. Run the builder.sh
./builder.sh
  1. Build will be generated ./dist/Youtube-dl GUI/ folder

FAQ

Youtube-dl GUI not installing
Click on more info then run anyway.

IMG-20210412-WA0007

URL not loading
Sometime it takes 1-2 minute to load URL try restarting router or reconnecting internet.

How to use multi video download?
It only supports 5 YouTube url at max (only video playlist excluded). Paste 1st URL then copy 2nd URL then paste spaces will be automatically added. If using keyboard add spaces manually between each URL.

How to download YouTube playlist?
Paste Youtube URL of form https://www.youtube.com/playlist?list=<playlist-id>

How to download specific videos in playlist?
1,2,5,8 if you want to download videos indexed 1, 2, 5, 8 in the playlist.
You can specify range: 1-3,7,10-13, it will download the videos at index 1, 2, 3, 7,10, 11, 12 and 13.
If nothing is specified whole playlist will be downloaded.

How to download music (MP3,M4A,WAV,FLAC) ?
After loading URL in basic tab click on checkbox which will enable music formats. Select your desired format and download.

How to update applcation?
Auto updater will check for updates
User can click on update button to check for update if updates are available user shall be given choice to update. If unsupported version is detected user will be prompted to forcefully update.
Latest 3 release will be supported for updates. User will be notified with message if existing version support will be dropped in future.

Any other issues join t.me/ytdlgui

NOTE for Windows 7 users

image

Source python.org
This project is based on python 3.8.10. In future this may use python 3.9+ which is not supported in Windows 7.

WORKING

yt-dlp (youtube-dl for older version) searches streams available in website and displays streams. sometimes there may only be only video stream(s) available or no streams at all.Using VPN might help. User selects streams and browse location (default location in downloads could be changed). ffmpeg converts it into videos/audios. if m4a is selected audio format ffmpeg uses AtomicParsley to write metadata in m4a file. Pygame window displays live download progress (for older version).

CONTRIBUTING

Opening an issue

Bugs and suggestions should be reported at: /ytdl/issues Select the type of issue

  • Bug report
  • Feature request
  • Ask a question

Please see the issues section before opening issue
Duplicate issues will not be entertained and make sure you are on latest version
Adding Screenshots/videos will be helpful.

Creating Pull request

Do not include database files, other dependencies in PR.

How development started and was carried?

This project development started with wish to download youtube physics video(Center of mass) at 240p in March,2021 because 240p quality was managable and took decent amount of mobile data compared to 360p. Many people don't have technical knowledge of how to use youtube-dl/yt-dlp command line, to make things easier to use (started to port yt-dlp/youtube-dl CLI to GUI) ,I thought of making GUI version of youtube-dl/yt-dlp for those having no knowledge about command line program. Initially it was a very basic program which lack many features as time passed encountered many bugs and fixed it ,specially giving the live download progress in main window statusbar took almost 2 months to fix this removing black console window at startup was also challenging to fix without using --noconsole option.

Threading helped execute many function at same time The function popens(cmd) never executed with object oriented programming (OOPs) Tkinter was easy to use and took less space compared to PySide2/PyQt5 After june,2021 there was no update to youtube-dl. Development stopped for 3 months finally backend changed to yt-dlp During this development period many bugs were encountered and fixed , many features were added ,hope this project will be active in future... Need help to make this better so that anyone with poor internet connctivity can learn something.

Support Us

If you have liked my work and want to support please consider donating.
Help to keep Ytdl active and running by donating. It will be really helpful and appreciated if you donate or contribute to us. Any amount is appreciated.

python : sourabhkv@upi

python :PinakiSahu

GitHub release (latest by date)

Want Early build access?

GitHub release (latest by date)

⚠️ Do note these builds may be buggy and features in this builds may or may not go to stable release.

Useful Links

Supported Websites youtube-dl
Supported websites yt-dlp
youtube-dl
yt-dlp
Pytube
ffmpeg
AtomicParsley
Pygame
Inno Setup