Another alternative is plasmatube[1] that is integrated with invidious and shows the youtube comments, make searching possible and show the video descriptions.
Came here to recommend the jely2002 project. You can swap out the YouTube-dl binary with the fork if you want (you need to rename it) and the dev is looking into implementing features from the fork into their project. Really good for people who need to work with less tech-savvy coworkers who need to download video files
youtube-dl works right now, so not sure if this is a fair thing to say. But you might have more insight than me. Maybe they realized that becoming a famous project is only a detriment to their mission
Someone mailed the maintainer, and received a reply that he currently has "[..] no free time to spend on youtube-dl as I'm busy with work, ongoing renovation and other post-relocation stuff." [1]
It works only as long as you don't care how long it takes to download a video. youtube-dl has had a problem with bandwidth throttling on Youtube for some time now. yt-dlp does not.
yt-dlp is a very healthy project with a friendly community, and featurewise is just a better drop-in replacement for youtube-dl. obviously it's building on years of work that went before, but seems to me like the torch has been passed.
I'm curious what is the reason for a GUI for such a simple utility? The command line for this kind of tool seems like the perfect interface. Just copy a URL, paste it, press enter. No buttons to press, etc.
I won't criticize someone for making more interfaces for this software, but I like the prospect that more people have been and will be motivated to learn about command line interfaces in order to use powerful software like youtube-dl.
> motivated to learn about command line interfaces in order to use powerful software
many people never get basic tech literacy. i think we’d benefit from not simply assuming others have (or could have) access to the same resources, time and patience that we had. i think you probably mean well but your statement, which sort of implies that people say “I am choosing not to learn the important skill of using the command line!”, just comes across as ignorant and naive to me
Tech literacy would help a great deal saving our democracies. Nobody needs to know command line, but to be able to tell if you're on a Russian disinfo website or a legit source of information is also (but not only) a matter of tech literacy, so I think OP is on to something here.
I love the command line just as much as the next guy, but I could appreciate a gui program onto which I would drag and drop links from the url bar as i’m watching a video, and where there would be zones like “save as video”, “save and convert to mp3”, etc. And it would also take care of queueing things up.
I couldn’t care less how those zones are defined and configured, could be a configuration file for all i care, but the end result would be much more potent than copying and pasting into terminal and then making sure it’s quoted or escaped properly.
OK, but if someone needs something like this for work (believe it or not, this stuff is faster than the official YouTube tools for downloading videos), expecting them to learn the CLI, install the libraries, figure out the settings, is a lot to expect. Especially if a Frontend exists. And on Mac, installing it isn’t a big deal (tho for CLI averse people it is) but it is more complicated in Windows (especially for people who don’t use a shell everyday).
I’m a huge fan of good CLIs. I’m also a huge fan of GUIs. Why require people to learn something just to use a video downloader?
GUIs were invented for a reason. They allow an intuitive and spatial understanding of software, and while they create limitations in some areas, they remove limitations in others. For example, I think the benefits are obvious of offering a native save dialog for where to download the video, rather than requiring the user to specify a hand-typed or copy-pasted path.
Even for people who know how to use the command line, most of us still spend the day in a graphical desktop environment, and having a program that integrates with that environment is very valuable.
An interactive UI allows for more fluent authentication, choice of resolution to download, filename, etc. Default values can be modified instead of being specified from scratch (filename again). Other benefits I'm not thinking of off the top of my head.
Unless you have reason to want something other than the default format that it will pick (perhaps for compatibility with an old set-top media box), or need other options like turning off SSL verification for some sites (it does much more than youtube) that have this misconfigured, options for playlist, ..., ...
For the simplest and most common use case it is just copy+paste, but for others there are a lot of options. I prefer the CLI and manpage myself, but some are far more comfortable with a GUI, finding the options more discoverable that way.
(though having had a quick look at the project page it looks like this doesn't offer options beyond format selection, but for some users that is useful enough to warrant a GUI)
> I'm curious what is the reason for a GUI for such a simple utility?
From the screenshots alone some benefits are quite obvious. Namely the ability to handle multiple URLs at once, as also the Download-Manager with it's progress bar. I have a bunch of scripts myself for downloading videos, but interfaces for such things is not really a strength of the command line. I already thought about making some job-manager for myself because of those reasons. So I can totally understand people making a GUI and releasing it.
> The command line for this kind of tool seems like the perfect interface. Just copy a URL, paste it, press enter.
That's only if you have no other requirements. youtube-dl is a monster of parameters. You can setup any little crap and do many more things than just download a youtube-url. On the screenshot I see some config-buttons and some kind of profile? This quite matches with any mildly complex usecase for this tool. Having a GUI supporting you in setting up what other would do with scripts is beneficial, especially for those not breathing in shell-commands.
I built one in Flask, with background downloads and saved state/logs in SQLite. No JS, simple CSS styling with Bootstrap. Cool to see all of these. https://github.com/phubbard/ytdl-web
In other news, the new Google Drive for Windows also uses wxPython as its Desktop GUI framework (wxPython is a Python wrapper for wxWidgets, a cross platform UI C++ library).
As someone who has been working with Python a lot up to this year, I am wondering has the state of GUI frameworks improved for Python in the recent months/years?
If I want to have, lets say, an application that looks (and works) like a native MacOS or Windows application, would I bet able to do that? All of the examples look really odd, with weird buttons and simply not feeling like native apps.
I'm curious way people hate on wxWidgets so much. As a cross platform GUI, it works, and has a better license for developers than QT, and when investigating QT it looked like it requires more than just a library, but QT specific tooling to build things.
Yeah but there is native and native. Both Windows and MacOS carry widgets and styles from so many releases, and there is some intelligence involved in picking up the "expected" one with the right style etc. WxWidgets seems to make the wrong choice very often, with the result that the apps look very dated. It's probably possible to make it do the right thing, but other toolkits just do that by default.
I've been thinking about this comment. It is super easy to enable which native gui one wants. However, I suspect the issue is one of cognitive overload: developing for the web is more complicated than developing native software for a single OS. These days, young developers learn web development first, and everything they learn is basically operating system independent. Simply the prospect of learning how to build software that is OS specific probably feels like a step backwards, and that negative cognitive association is enough to cause many/most young developers to groupthink themselves away from any native platform ambitions.
Yes, it would possible to develop a GUI that looks native, but from my experience and those of others it's rather a hassle when you try to make something more complex.
PyQt and "QT for Python" both use the QT framework, which uses native widgets and supports Windows, MacOS, and KDE on Linux. It's kind of the gold-standard of desktop toolkits for Python.
This said, in the age of Electron, "things not looking native" does not seem to be a problem for most users.
The state of GUI frameworks full stop has not improved in the recent half-decade. As far as I can tell, we still have the same old problems; tkinter.ttk with the grid placement manager is still your best shot (and many languages, like Rust, don't even have something that good).
Since summer 2021, YouTube has started serving media URLs with a query parameter such as …&n=SXiXBH-xzrjeioPN&…. This now appears to be the default behaviour. Unless the value of this parameter is transformed according to an algorithm delivered in the site player JS, the download speed for the URL is throttled to ~50kB/s.
Solutions for this include:
• implementing a more complete JS interpreter, eg based on PR [jsinterp] Actual JS interpreter¹ #11272;
• using an external JS interpreter (PhantomJS, now unmaintained, is used by some extractors);
• spoofing the Android or iOS client to acquire unthrottled links, as successfully implemented in yt-dlp².
This PR takes a different approach derived from the successful solution used in VLC's youtube.lua (also implemented differently in pytube³). The approach relies on the fact that the challenge algorithm is served in a mini-language within the minified player JS and therefore the specific algorithm can be extracted and executed by interpreting the mini-language without actually running the JS itself. [In parallel with this PR, a separate implementation of this approach was added to yt-dlp⁴.]
The implementation of the mini-language interpreter is directly translated from VLC's n_descramble() Lua function⁵. The result sufficiently resembles the original that it should be straightforward to share changes between the two implementations.
You could search in your browser and copy the "/watch" URLs out of the results page if you wanted this. What would be the application, though? Do you want to download music videos?
65 comments
[ 7.4 ms ] story [ 121 ms ] threadThere is an ongoing fork called youtube-dl-gui: https://github.com/oleksis/youtube-dl-gui
And an alternative called tartube: https://github.com/axcore/tartube
429 points|ducktective|2 months ago|151 comments
https://news.ycombinator.com/item?id=28478603
[1]: https://invent.kde.org/plasma-mobile/plasmatube
yt-dlp[0] is a fork with additional features and fixes. It is also actively maintained.
[0]: https://github.com/yt-dlp/yt-dlp
[1]: https://github.com/ytdl-org/youtube-dl/issues/29965#issuecom...
1. https://github.com/yt-dlp/yt-dlp
The number of people who might want to download something from Youtube & co is significantly larger than that of people comfortable with the cli.
> but
please stop gatekeeping
> motivated to learn about command line interfaces in order to use powerful software
many people never get basic tech literacy. i think we’d benefit from not simply assuming others have (or could have) access to the same resources, time and patience that we had. i think you probably mean well but your statement, which sort of implies that people say “I am choosing not to learn the important skill of using the command line!”, just comes across as ignorant and naive to me
You're replying to a tangential “continuing the conversation”-type comment as though it were a rebuttal in an argument. It already agrees with you.
Unnecessarily hostile. We need less of this.
I couldn’t care less how those zones are defined and configured, could be a configuration file for all i care, but the end result would be much more potent than copying and pasting into terminal and then making sure it’s quoted or escaped properly.
I’m a huge fan of good CLIs. I’m also a huge fan of GUIs. Why require people to learn something just to use a video downloader?
Even for people who know how to use the command line, most of us still spend the day in a graphical desktop environment, and having a program that integrates with that environment is very valuable.
Unless you have reason to want something other than the default format that it will pick (perhaps for compatibility with an old set-top media box), or need other options like turning off SSL verification for some sites (it does much more than youtube) that have this misconfigured, options for playlist, ..., ...
For the simplest and most common use case it is just copy+paste, but for others there are a lot of options. I prefer the CLI and manpage myself, but some are far more comfortable with a GUI, finding the options more discoverable that way.
(though having had a quick look at the project page it looks like this doesn't offer options beyond format selection, but for some users that is useful enough to warrant a GUI)
From the screenshots alone some benefits are quite obvious. Namely the ability to handle multiple URLs at once, as also the Download-Manager with it's progress bar. I have a bunch of scripts myself for downloading videos, but interfaces for such things is not really a strength of the command line. I already thought about making some job-manager for myself because of those reasons. So I can totally understand people making a GUI and releasing it.
> The command line for this kind of tool seems like the perfect interface. Just copy a URL, paste it, press enter.
That's only if you have no other requirements. youtube-dl is a monster of parameters. You can setup any little crap and do many more things than just download a youtube-url. On the screenshot I see some config-buttons and some kind of profile? This quite matches with any mildly complex usecase for this tool. Having a GUI supporting you in setting up what other would do with scripts is beneficial, especially for those not breathing in shell-commands.
The URL of this comment pastes like this, ready to be passed to commands:
It doesn't seem to escape $ (e.g. in <https://example.org/$PATH>), which doesn't inspire confidence…
Are there any equivalents for bash?
https://www.google.com/intl/en_au/drive/download/
If I want to have, lets say, an application that looks (and works) like a native MacOS or Windows application, would I bet able to do that? All of the examples look really odd, with weird buttons and simply not feeling like native apps.
Because it just looks bad and outdated on most platforms.
This said, in the age of Electron, "things not looking native" does not seem to be a problem for most users.
https://github.com/ytdl-org/youtube-dl/pull/30184
Pasting the content here for convenience:
Since summer 2021, YouTube has started serving media URLs with a query parameter such as …&n=SXiXBH-xzrjeioPN&…. This now appears to be the default behaviour. Unless the value of this parameter is transformed according to an algorithm delivered in the site player JS, the download speed for the URL is throttled to ~50kB/s.
Solutions for this include:
• implementing a more complete JS interpreter, eg based on PR [jsinterp] Actual JS interpreter¹ #11272;
• using an external JS interpreter (PhantomJS, now unmaintained, is used by some extractors);
• spoofing the Android or iOS client to acquire unthrottled links, as successfully implemented in yt-dlp².
This PR takes a different approach derived from the successful solution used in VLC's youtube.lua (also implemented differently in pytube³). The approach relies on the fact that the challenge algorithm is served in a mini-language within the minified player JS and therefore the specific algorithm can be extracted and executed by interpreting the mini-language without actually running the JS itself. [In parallel with this PR, a separate implementation of this approach was added to yt-dlp⁴.]
The implementation of the mini-language interpreter is directly translated from VLC's n_descramble() Lua function⁵. The result sufficiently resembles the original that it should be straightforward to share changes between the two implementations.
――――――
¹ — https://github.com/ytdl-org/youtube-dl/pull/11272
² — https://github.com/yt-dlp/yt-dlp/commit/c888ffb95ab0ab4f4cd1...
³ — https://github.com/tfdahlin/pytube/blob/bb890af3b271a616bbe1...
⁴ — https://github.com/yt-dlp/yt-dlp/commit/404f611f1c4aa516fbc4...
⁵ — https://code.videolan.org/videolan/vlc/-/blob/4fb284e5af69aa...
[0]: https://github.com/yt-dlp/yt-dlp
These sites always disappear but this one hasn't so far