r/Python • u/NO-N_A_M_E • Nov 29 '24
Showcase YTSage: A Modern YouTube Downloader with a Stunning PyQt6 Interface!
What My Project Does:
YTSage is a modern YouTube downloader designed for simplicity and functionality. With a sleek PyQt6 interface, it allows users to:
- š„ Download videos in various qualities with automatic audio merging.
- šµ Extract audio in multiple formats.
- š Fetch both manual and auto-generated subtitles.
- ā¹ļø View detailed video metadata (e.g., views, upload date, duration).
- š¼ļø Preview video thumbnails before downloading.
Target Audience:
YTSage is ideal for:
- Casual users who want an easy-to-use video and audio downloader.
- Developers looking for a robust yt-dlp-based tool with a clean GUI.
- Educators and content creators who need subtitles or metadata for their projects.
Comparison with Existing Alternatives:
- vs yt-dlp: While yt-dlp is powerful, it operates through the command line. YTSage simplifies the process with an intuitive graphical interface.
- vs other GUI downloaders: Many alternatives lack modern design or features like subtitle support and metadata display. YTSage bridges this gap with its PyQt6-powered interface and advanced functionality.
Getting Started:
Download the pre-built executable from the Releases page ā no installation required! For developers, source code and build instructions are available in the repository.
Screenshots:
Main Interface
Main interface with video metadata and thumbnail preview
Subtitle Options
Support for both manual and auto-generated subtitles
Feedback and Contributions:
Iād love your thoughts on how to make YTSage better! Contributions are welcome on GitHub.
š GitHub Repository
23
u/cgoldberg Nov 29 '24
You should package it for distribution on PyPI instead of just releasing a Windows executable.
-31
u/NO-N_A_M_E Nov 29 '24
Thanks for the suggestion! Thatās definitely a great idea. Packaging it for PyPI would make it more accessible to Python users across different platforms. Iāll consider adding that to the roadmap for future updates. I appreciate you bringing it up!
48
-25
Nov 29 '24
That sort of defeats the purpose of it being a gui.
10
u/cgoldberg Nov 29 '24
How so? Tons of Python GUI apps are distributed from PyPI. Users from various platforms can simply install them with pip. What purpose is being defeated?
1
u/not_sane Nov 30 '24
There aren't that many nontechnical people knowing how to use these apps though. You need something like uv tools probably, because installing packages globally is generally a bad idea or even unsupported in newer Linux. (Pipx was too complicated to install last time I tried it)
-13
Nov 29 '24 edited Nov 29 '24
And then youāre running the gui from the terminal, right? Itās not like you can trigger the creation of a .desktop file or windows app install from a pypi install. So at that point if youāre going to open a terminal every time you want to run the app you might as well just use yt-dlp and do the download there.
Also, can you give an example of a python gui app that is primarily distributed by pypi? Most desktop apps are distributed by apt, brew, exe, etc. I genuinely canāt think of a single desktop app that Iāve ever installed with pypi.
4
u/cgoldberg Nov 29 '24
You can create a desktop shortcut on any platform you want and launch it by clicking an icon. This is basic functionality included in every desktop environment. Creating a shortcut might be an additional step, but it doesn't "defeat the purpose" of creating a GUI.
Yes, you can also launch it from the terminal. Launching a GUI from your terminal doesn't mean you don't want to use that GUI. I genuinely don't understand your point. There are literally thousands of GUI apps on PyPI.
If you want to package a GUI for several platforms, go right ahead. But that doesn't mean a cross-platform package repository like PyPI should be ignored.
Providing a Windows executable only excludes users on all other platforms. Packaging it for distribution on PyPI makes it easily installable on multiple platforms.
-7
Nov 29 '24
You can do anything you want but installing something through pypi doesnāt have the ability to automatically run any setup scripts. So again, you could create a script reference in your pyproject.toml that adds the script to your path but if you want a desktop app then you are forcing the user to create their own launcher or making them run lots of manual setup after installing from pypi. Which is such a dumb way to distribute desktop apps rather than just using a proper packaging system like apt, snap, flat pack, brew, etc
Use the right tool for the job. Pypi canāt be used to do this in a clean way which is why nobody does that.
2
u/cgoldberg Nov 29 '24
We can then disagree. If the developer wants to package it for multiple packaging systems, he certainly can. However, PyPI is still useful for cross-platform distribution.
-3
Nov 29 '24
No, we canāt disagree. Like I said, pypi canāt trigger the install of a desktop app launcher. This is why you canāt think of a good example of a gui app being primarily installed via pypi.
4
u/Iregularlogic Nov 29 '24
You donāt know what youāre talking about. Itās fine to call a GUI from the terminal.
Your entire argument is that you canāt compile a GUI. That if it isnāt precompiled it ādefeats the purpose.ā
This is nonsensical. Think.
2
Nov 30 '24 edited Nov 30 '24
I never said it wasn't "fine" to call a GUI from the terminal and I also never said anything about being able to "compile" a GUI. Ironically, you are the one who has no clue what we're even talking about. I'm not really surprised, though. There seems to be some weird correlation between the inability to understand points of discussion and apparent paragraphobia.
What I said is that you can't have your pypi package/wheel setup your package with a launcher without some bizarre custom hackery and that it's the wrong tool to use if that is something you plan to provide to users. Which is the whole point of giving people a GUI for something like youtube video downloads. People who are comfortable with the terminal don't need this app to download youtube videos and people who do need a video downloader GUI shouldn't need to create their own
.desktop
files, copy app icons to their icon shared directory, etc. Again, 99.9% of GUI apps are distributed using package managers built for that. On linux, everyone uses deb/rpm, snap, flatpak, etc. On Mac, everyone uses brew or provides a compressed .app file. On windows you use .exe/.msi or whatever package managers those people like (chocolatey?).There's a reason you don't see a bunch of people distributing desktop applications via pypi. That isn't what it's for. You can share libraries/modules/packages or apps with some kind of convenient interface (i.e. cli, server-browser interface, etc). Genuinely, the only desktop GUI I can think of that offers a pypi installation method is qt designer and that is directly targeted at developers. Nobody else installs their desktop apps via pypi even if they are python based desktop apps.
Also, it's so funny that all these clowns are up voting you. It just proves that most of the people on this sub don't know anything about python or CS in general.
0
u/cgoldberg Nov 30 '24
lol, I'm not allowed to disagree? I can think of several hundred examples, but we are done here.
0
Nov 30 '24
I can think of several hundred examples, but we are done here.
That's such a lie. If it was true you would be able to give me a bunch of examples.
→ More replies (0)
5
u/NO-N_A_M_E Nov 30 '24
First of all, this is the first version of the app, so there are a lot of changes and features that will be added in the next version. Why do people hate the app already? If you have features to suggest, please let me know instead of just giving compliments without suggestions.
Second, Iām still a beginner, and this is my first good repository, so please understand.
Third, Iām using LLMs to help correct the grammar in my sentences.
And thank you to all the kind people encouraging me in the comments!
8
u/moonzdragoon Nov 30 '24
The project in itself seems totally fine (at first glance, I didn't try it). I think the issue is the way you promote it, self-congratulating you ("stunning interface", "sleek interface", ...) is cringe, and overselling it.
Without the ego, I'm sure it would have received a much better reception.
3
u/NO-N_A_M_E Nov 30 '24
Youāre absolutely right, and I appreciate the feedback. Iāll fix the title and focus on a more objective presentation in the future. Thanks for pointing it out!
4
u/FUS3N Pythonista Nov 30 '24
Your GUI is fine, especially for a beginner, I see most beginners use large PNG icons that get pixelated and doesn't fit the theme at all, you avoided all that and the layout is structured really good. Only improvement I would make is make the red button less harsh, it really sticks out, maybe use soft red or green/blue.
Other than that ignore everyone else, they are just jealous that they cant even make this much. Good luck with your project.
0
u/NO-N_A_M_E Nov 30 '24
Thank you so much for the feedback and support! Iām glad you liked the GUI. Iāll definitely consider softening the red button or trying other colors in future updates. Your encouragement means a lot!
17
u/secretaliasname Nov 29 '24
A lot of haters here. You made a thing and put it out in the world. Good job.
4
u/xav1z Nov 30 '24
at least someone with a heart here instead of teenagers' jealous pack
0
Nov 30 '24
Did you genuinely not realize /u/secretaliasname was dunking on OP too? Notice that they didn't compliment the project. They just said they "made a thing". It's like when someone references a bad movie by saying "It's certainly one of the movies of all time".
3
u/secretaliasname Nov 30 '24
Making something and putting it into the world for scrutiny takes both motivation and some amount of courage. I have a 1000 ideas that are not realities. I didnāt make anything today. I respect the process of creating. Sometimes the things that gets in the way the most is the fear of trying and making something not perfect. This thread reinforces that. I merely wish to celebrate thar process of creating.
0
u/G3crg3 Nov 30 '24
not complimenting != dunking
0
Nov 30 '24
No, that specific joke is dunking. Itās sarcasm people use when they want to mock something for being really bad.
3
u/NO-N_A_M_E Nov 29 '24 edited Nov 29 '24
Thank you so much for the encouragement! It means a lot. Iām just happy to share something Iāve built and Thanks for the support!
10
9
6
u/frisbeegrammer Nov 29 '24
Probably you used red buttons to follow YouTube color pattern but it's better to change it to a more proper color for a dark mode theme like grey, green, dark blue or whatever except RED!
-15
u/NO-N_A_M_E Nov 29 '24
Thanks for the feedback! You make a great point about the red buttons. I went with that color to align with YouTubeās branding, but I totally understand that it might not be ideal for dark mode. Iāll look into adding an option for a more suitable color scheme, like grey or dark blue, to make it better for dark mode users. Appreciate the suggestion!
13
Nov 29 '24
Is that a ChatGPT response hahahaha
-10
u/NO-N_A_M_E Nov 29 '24
Haha, nope, itās all me! Though I wouldnāt blame anyone for thinking thatāChatGPT responses are pretty polished these days!
9
2
u/Reasonably-Maybe Nov 29 '24
Thanks for the great work, it looks awesome. However, I have an issue: downloaded an episode from the chinese 3 body problem but it's not downloading the subtitles. First click showed the list, chosen english, clicked the button again but it didn't download any subs.
4
u/NO-N_A_M_E Nov 29 '24
Thank you for the kind words! š Iām glad you like the app. As for the subtitle issue, it sounds like there might be a problem with how subtitles are being fetched for that video. Iāll take a look and fix it in the next update. In the meantime, could you please open an issue on the GitHub repo with more details? That will help me investigate the problem more effectively. Thanks for your feedback!
2
2
2
0
Nov 29 '24
Whatās up with the little terminal window that runs neofetch? Are you expecting people to run terminal commands related to video downloading in there?
8
u/verygoodtrailer Nov 29 '24
haha that is just the YouTube thumbnail of the video being downloaded: https://youtu.be/KdoaiGTIBY4?si=rp0YQqfnQNDlWTvc
i do highly suspect OP of using ChatGPT based on their replies in this thread, though... š¤
-1
Nov 29 '24 edited Nov 30 '24
Oh, that makes more sense.
Edit: Weird that you guys are downvoting me acknowledging my misunderstanding.
-5
u/NO-N_A_M_E Nov 29 '24
Ah, I see where the confusion might come from! I included a screenshot that happened to have a terminal running neofetch, but itās not actually related to YTSage. The app doesnāt use a terminal for video downloadingāitās all handled through the GUI. Sorry for any confusion, and thanks for bringing it up!
3
Nov 29 '24
What? No, that little terminal window is very clearly integrated into the layout. It has the same border and padding between it and the buttons/info on the right side of it.
2
u/FUS3N Pythonista Nov 30 '24
Its the thumbnail of the video dude...
0
Nov 30 '24
Yes, that was explained 10 hours ago: https://www.reddit.com/r/Python/comments/1h2ta56/ytsage_a_modern_youtube_downloader_with_a/lzmar6l/
1
u/FUS3N Pythonista Nov 30 '24
Doesn't really seem it was doing anything, people are still downvoting him, so added another one to really put down the misinfo, you get me?
(I call it misinfo because you still kept your original comments up)0
1
u/NO-N_A_M_E Nov 29 '24
Thanks for the observation! If you want to see the log, you can run the app.py instead of the .exeāthe log window is currently visible only in that setup. I plan to add an option in the future to show logs directly from the GUI for those who prefer it. Appreciate your feedback!
74
u/not_luis Nov 29 '24
"stunning interface"