top | item 28478603

A cross-platform GUI for YouTube-dl

429 points| ducktective | 4 years ago |github.com | reply

151 comments

order
[+] iKlsR|4 years ago|reply
I built my own personal version where it runs in the background and automatically downloads stuff I like (I highly curate my likes) or send to select playlists. Too often I go through my favorites and see deleted videos so I just cooked up something one weekend. I have an entire hard drive dedicated as an offline archive where I can playback at anytime, search the library and it even alerts me if any video or audio I saved was deleted (I have quite some rare pulled videos). It will also grab the subtitles/transcript if available, description and top 100 comments (if a tutorial etc).

https://i.imgur.com/yxlRTI8.png

[+] flixic|4 years ago|reply
An idea that anyone is free to take: JSON-definable UI for command-line apps. Define checkboxes for flags, inputs for arguments, buttons for commands and file pickers / droppable wells for file input. Allow some customization of layout of these elements. Have in-app "store" to download these JSON definitions, maybe even suggest them based on `which` output. Electron app, obviously.
[+] discordance|4 years ago|reply
That sounds like Gooey: https://github.com/chriskiehl/Gooey, which creates GUIs for Python cli apps.

Autogenerated based on the args, but configurable and the widgets and menus can be defined in JSON.

[+] cabalamat|4 years ago|reply
You have to define the behavour of your UI elements as well as their placement, at which point you're writing a program.

The best language to write a program in is a Turing-complete programming language specially designed for that task, not some cobbled together UI-definition language with ad hoc add-ons to processing.

[+] colejohnson66|4 years ago|reply
XML based UIs already exist with GtkBuilder and QtQuick(?). Although, your idea is more complex than that.
[+] slightwinder|4 years ago|reply
Why JSON? Just use a simplified subset of HTML and ignore styling+scripts for commandline. And for GUI/Web you can still offer the full HTML+CSS+Scripting-experience.
[+] ape4|4 years ago|reply
Everything doesn't have to be JSON ;)
[+] smashah|4 years ago|reply
This would require some sort of open-api type spec but for CLIs. I like this idea. Good luck to anyone taking it up.
[+] MR4D|4 years ago|reply
So like a modern day VB3 but built on Electron. Would be nice to have!
[+] sen|4 years ago|reply
I’ve been using this[0] GUI for years which is cross platform (Python not electron) and works amazingly. Let’s you do custom download formats, and accepts any input normal YouTube-dl accepts (videos, playlists, channels, etc). I use it almost daily.

[0] https://mrs0m30n3.github.io/youtube-dl-gui/

[+] PaulKeeble|4 years ago|reply
youtube-dl doesn't seem to be getting much in the way of updates since the event but yt-dl fork has continued to progress and has fixed a lot of the weird problems that had crept up as youtube changes things. It also has a port of the GUI that goes along with it - https://oleksis.github.io/youtube-dl-gui/
[+] dEnigma|4 years ago|reply
Do you experience any issues with it? Seeing as it hasn't been developed further since 2018, while youtube-dl is still being worked on (including new features).
[+] davzie|4 years ago|reply
Many in here don't understand why you need this if it's a CLI app which obviously means you could probably monetise this and earn a living from it.
[+] colejohnson66|4 years ago|reply
If it’s monetized, I doubt many users would get it. There’s already many web based YouTube downloaders (that are free); Just Google “download youtube”. Sure, youtube-dl supports a hell of a lot more than just YouTube, but not everyone knows that.
[+] lostgame|4 years ago|reply
I think there’s a massive legal risk from monetizing something that exists to download mostly copyrighted content.
[+] ducktective|4 years ago|reply
How did you reach that conclusion from your premise?
[+] brabel|4 years ago|reply
In case you're wondering: yes, it uses Electron. Because you definitely need yet another browser just to watch youtube videos.
[+] poisonborz|4 years ago|reply
I just don't get these kind of comments. This person's javascript knowledge enabled him to develop this multi-platform app, it looks and feels great and does its job. Yes, it uses a lot of memory (140mb by just opening it) but how long does this stay actually open? You download some videos and close it in a few minutes. It's not a persistent use case like a chat client.

youtube-dl is a 10 year old project. Where are all the great qt gui-s for it?

[+] qwerty456127|4 years ago|reply
To download them, not to watch. You still are going to watch in a native player like VLC, MPV, MPC or whatever, and also have the video backed up (which is important as YouTube videos get deleted often).
[+] LordRishav|4 years ago|reply
Why not use FreeTube (https://github.com/FreeTubeApp/FreeTube) then if it is based on Electron anyway? Freetube also has support for watching videos directly alongwith downloading and can also route the video through Invidious servers if you prefer not giving your IP address to Youtube.
[+] hardwaresofton|4 years ago|reply
Another self-hostable option that runs as a server (and you access with a browser):

https://github.com/alexta69/metube

[+] bshep|4 years ago|reply
I was just about to ask about something like this! I looked at the page but couldn’t figure out if this allows you to watch the downloaded videos in the browser as well, does anyone know or if there is another docker/web app for that?
[+] yutijke|4 years ago|reply
I had so much hope when I saw "cross-platform", finally a youtube downloader my parents can use on their 8 year old laptops.

But alas, it's just electron. I guess they'll continue to use Newpipe on their phones, which has been working very well.

Edit: I just realised that my comment is a bit on the meaner side. While I absolutely detest the current trend of Electron apps I also realise that the ecosystem doesn't have any good options. QT can be okay if done right, but C++ is neither ideal nor approachable for Application development, especially for hobbyists.

[+] zapzupnz|4 years ago|reply
Electron apps run just fine on my 8 year old laptop. So long as there's only a couple of them at a time, mind you.
[+] guilamu|4 years ago|reply
Have you tried freetube? (I'm unsure if it's electron though)
[+] aero-glide2|4 years ago|reply
Newpipe has been working well? Throttling issues. Takes too much time to load. Video is black for a few seconds when changing to full screen. Comments don't load sometimes. Only comment loads sometimes. It is fundamentally broken.
[+] user234683|4 years ago|reply
Somewhat related self-plug: Self-hosted browser client for watching YouTube anonymously (Python):

https://github.com/user234683/youtube-local

It supports downloading all the raw formats (the video only ones, audio only ones, and the 360p & 720p integrated formats). More meant for watching than downloading, but some more advanced downloading features, such as merging audio+video with ffmpeg to get more downloadable qualities and auto-downloading options for playlists are planned.

[+] KaoruAoiShiho|4 years ago|reply
Is this using the original yt-dl or the fork with more features? https://github.com/yt-dlp/yt-dlp
[+] filmgirlcw|4 years ago|reply
The original but the dev has it as a priority to replace with yt-dlp. You can use that now by replacing the youtube-dl binary with yt-dlp and renaming it and turning off auto-updates, but it doesn’t support some of the other features like SponsorBlock for now. The dev has PRs open to investigate that.

If I had just a bit more time I might try to contribute. In fact, I might actually see if I can help with the replacement of the engine and then let the dev decide on how to implement some of the extra features.

[+] jslpc|4 years ago|reply
This past week I made/forked something similar for macOS only.

There was a GUI for youtube-dl I liked but never could get to work called Get-It (https://github.com/Kevin-De-Koninck/Get-It), and with many people switching to the actively-maintained fork yt-dlp, I decided to try using that as a base for making a clone with the latter as a backend.

I don't know Swift at all but thought I'd try it out to see if I could, and it seems to work for the most part on my end. I also cleaned up random errors I found in the code (like a rogue youtube link to a Grand Theft Auto 5 video?) and made things a bit more consistent, or at least I'd like to think so. Changed the UI and added a toggle to block sponsorships from videos as well, but not totally sure if that works all that well yet.

I'd love if anyone would try it out and report any issues they run into, it's been fun trying to fix it up!

https://github.com/jslpc/Swift-DL

[+] BiteCode_dev|4 years ago|reply
How does it manage to stay up to date? It's crucial for youtubedl which breaks regularly because youtube changed something and you now need the latest version.
[+] AndyPa32|4 years ago|reply
The version my Linux distro supports is always helplessly outdated. But with conda I always get the latest version of youtube-dl.
[+] severine|4 years ago|reply
Nice. I can't maximize the window, or resize it properly (minimum window height is bigger than my laptop at 1366x768).

Hope it gets fixed, good job!

[+] qwerty456127|4 years ago|reply
Which seems particularly inappropriate given the GUI is web-based.
[+] zapzupnz|4 years ago|reply
The words "cross-platform" caught my eye, but I don't see any screenshots of the program on macOS or Linux.
[+] filmgirlcw|4 years ago|reply
I like this a lot! I use it for friends/colleagues who are too intimidated by the CLI. The old YouTube-dl GUI was abandoned and isn’t something I can recommend and the best fronted, Downie, is Mac only and costs money.

Also, the dev is looking at subbing youtube-dlp for youtube-dl, as it is more frequently updated and supported.