Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/sourabhkv/ytdl

A GUI web media downloader program that runs on top of youtube-dl/yt-dlp and ffmpeg to download videos and audio
https://github.com/sourabhkv/ytdl

atomicparsley audio converter ffmpeg gui mp3 mp4 pytube video youtube youtube-dl youtube-downloader yt-dlp

Last synced: about 1 month ago
JSON representation

A GUI web media downloader program that runs on top of youtube-dl/yt-dlp and ffmpeg to download videos and audio

Awesome Lists containing this project

README

        

#
ytdl ![output-onlinepngtools](https://user-images.githubusercontent.com/55890376/147201322-7cb830c8-9a47-4bbb-ad0b-d79d4c09b58a.png)


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](https://user-images.githubusercontent.com/55890376/208916421-d983d873-8dd8-4d53-949a-16959f9f6df9.png)    
![yt-dlp](https://user-images.githubusercontent.com/55890376/208916592-4cfc3036-6b0b-4ccf-9fa7-5214c9440bc5.png)    
![ffmpeg](https://user-images.githubusercontent.com/55890376/208916616-76aace34-17e9-4865-b73c-bd1777b416bc.png)    
![ps](https://user-images.githubusercontent.com/55890376/208916682-7d245f1a-1881-42dc-b56c-b3ff8fe11939.png)    

**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](https://github.com/sourabhkv/ytdl) will focus on supporting legacy systems till Oct,2024 with little to no compromise on features. [ytdl unlocked](https://github.com/ytdl-official/unlock) 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](https://github.com/yt-dlp/yt-dlp) and [youtube-dl](https://github.com/ytdl-org/youtube-dl) licensed under [The Unlicense](https://unlicense.org/)

[FFmpeg](https://ffmpeg.org/) is licensed under the [GNU Lesser General Public License (LGPL)](http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html) version 2.1 or later.

[AtomicParsley](https://github.com/wez/atomicparsley) is licensed under [GPL-2.0 license](https://github.com/wez/atomicparsley/blob/master/COPYING)

[pygame](https://www.pygame.org/news) is licensed under [GNU LGPL version 2.1](https://www.gnu.org/copyleft/lesser.html)

![me at zoo](https://user-images.githubusercontent.com/55890376/203128753-56e932a5-89fc-4470-bc9c-bfb8300f6f2b.png)

[More Screenshots](https://github.com/sourabhkv/ytdl/tree/main/screenshots)

[Installation demo](https://www.youtube.com/watch?v=PUY7VNR4Ql8)

[Full demo](https://www.youtube.com/watch?v=EZfyzXdNv9s)

| Features⬇️\Application➡️ | [Ytdl](https://github.com/sourabhkv/ytdl) | [4k downlader](https://www.4kdownload.com/products/videodownloader/10) | [YTD Downloader](https://www.ytddownloader.com/) |[yt1s website](https://yt1s.com/en300)|
|:---: |:---: |:---: |:---: |:---: |
|Video download YouTube| yes |yes|yes|yes|
|playlist download|yes|yes|no|no|
|Specific video inside playlist|[yes](https://github.com/sourabhkv/ytdl/blob/main/README.md#playlist)|no|no|no|
|Audio download|[yes](https://github.com/sourabhkv/ytdl/edit/main/README.md#music) |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+](https://github.com/yt-dlp/yt-dlp/blob/master/supportedsites.md)|[11](https://www.4kdownload.com/faq/faq-what-sites-are-supported)|[48](https://www.ytddownloader.com/video_sites.html)|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](https://user-images.githubusercontent.com/55890376/146916497-d6422aaa-ea57-4bdc-bf44-e336a1034aba.jpg)

Version 22.208.02 and above with dark theme and categorized data.

![youtube-dl GUI new](https://user-images.githubusercontent.com/55890376/154851022-a187920a-cd3e-4b81-8d4d-b4d77b1095d6.jpg)

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

:ballot_box_with_check:`Alsina` - Settings menu, history of saved files , auto update(June end)

:ballot_box_with_check:`Transition release` - Help users with old version to migrate to Meteor release

:ballot_box_with_check:`Meteor` - updater changes stable(July-Aug)

:ballot_box_with_check:`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](https://drive.google.com/file/d/1CWW5YTK7MjIQ3ZyQdsN7TSNu_K-F3hxN/view?usp=sharing)

[old version demo](https://drive.google.com/file/d/1OaQTnjXC8wvLKSkWYx_8j8pEyUu7IYXq/view?usp=sharing)

[Playlist demo](https://user-images.githubusercontent.com/55890376/168638995-183ba08b-91ac-4a72-a6c1-bf152d71c0ea.mp4)

Older version [watch demo here](https://user-images.githubusercontent.com/55890376/114445050-398c9100-9bed-11eb-9b17-aea0be0704d8.mp4)

## ⚠️ 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
```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](https://github.com/sourabhkv/ytdl/releases/latest/download/YouTube-dl.GUI.exe)|
|Web Installer |[Youtube-dl GUI Webinstaller.exe](https://github.com/sourabhkv/ytdl/blob/main/Youtube-dl%20Webinstaller.exe)|
|Portable Installer|[Youtube-dl GUI Portable.zip](https://github.com/sourabhkv/ytdl/releases/latest/download/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](https://user-images.githubusercontent.com/55890376/156933091-b3e380c3-0673-4baa-9c1d-4667d5a52f4d.png)

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\\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
```
3. Run the [builder.ps1](https://github.com/sourabhkv/ytdl/blob/main/builder.ps1)
4. 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
3. Run the builder.sh
```
./builder.sh
```
4. 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](https://user-images.githubusercontent.com/55890376/177182681-ecd68e0c-c8f8-433f-978b-70f6cbb7aa84.jpg)

**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=`*

**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](https://github.com/sourabhkv/ytdl/blob/main/screenshots/ytdl2.png) 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`](https://t.me/ytdlgui)**

NOTE for Windows 7 users



![image](https://user-images.githubusercontent.com/55890376/178449538-824d6501-5404-47b0-a2db-f9bd14b0c999.png)



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](https://github.com/sourabhkv/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`](https://www.paypal.com/paypalme/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](http://ytdl-org.github.io/youtube-dl/supportedsites.html)

[Supported websites yt-dlp](https://github.com/yt-dlp/yt-dlp/blob/master/supportedsites.md)

[youtube-dl](https://github.com/ytdl-org/youtube-dl)

[yt-dlp](https://github.com/yt-dlp/yt-dlp)

[Pytube](https://pytube.io/en/latest/)

[ffmpeg](https://ffmpeg.org/ffmpeg.html)

[AtomicParsley](http://atomicparsley.sourceforge.net/)

[Pygame](https://www.pygame.org/wiki/about)

[Inno Setup](https://jrsoftware.org/isinfo.php)