keelerm84 / youtube-dl-gui

A C++ GUI interface to the CL tool youtube-dl
9 stars 5 forks source link

suggested improvements #2

Open philipzae opened 10 years ago

philipzae commented 10 years ago

I've just moved from windows to linux and was looking for a replacement to YTD and your GUI seemed to be the only one around worth looking at. So i was able to compile youtube-dl-gui on linux mint 13 and was happy with your GUI and wanted to suggest these improvements.

1] Alternative Name - there is already another project that uses the same executable name < https://launchpad.net/gui-youtube-dl >, so maybe changing it to youtube-dl-gui2 or youtube-dl-gui-keeler.

2] Default Download Folder - I think the default download folder should be set to ~/Downloads and not ~/Music. Alternatively have in preferences default video and default audio folders.

3] Video Quality - when i use youtube-dl from the commandline, the most important thing for me is the video quality, so possibly have a dropdown menu between the 'video only' drop down and 'add' button. For me the most important formats are 720x1280.mp4 (22), 360x640.mp4 (18) and 240x400.flv (5). Alternatively, once a url is loaded into the list, then the list of formats can be pulled with youtube-dl -F url and can be put into the video format drop down. Alternatively, list flv in the 'video format' drop down list.

4] Progress Bar - youtube-dl outputs a good amount of info from its --write-info-json file but unfortunately it doesnt specify the file size, but using the json 'url' value you can send a HEAD http request which will result in the file's size found in 'Content-Length'. With this value, you can check the file size against the file youtube-dl is downloading to give a progress report.

5] Pausing Download - if it is possible to cancel youtube-dl's execution, then it would be possible to resume its execution with youtube-dl's '--continue' argument.

6] Output Filename - In the preferences, allow a user to specify what the output filename format.

7] Precompiled binaries - i see your already looking into it in issue #1 and hope they come soon.

8] Terminal Output - i would like to see the console commands your outputting, so i could suggest some improvements.

philipzae commented 10 years ago

9] tried to download in 3gp format and it said its not supported even though the video has format 17 which has an mp4 extension and is for mobiles.

philipzae commented 10 years ago

10] now that i'm using the gui i think an icon is needed.

keelerm84 commented 10 years ago

Thank you very much for taking the time to provide me with this valuable feedback. I greatly appreciate hearing that you have found this project useful.

I love your ideas for improvement and I will definitely work on incorporating them into this project.

Currently, I am in the middle of a few other projects that I need to wrap up first, but once I am done with those, I will begin working on the issues you have raised.

Regarding point 9, if you can please provide me with the link to the video you were trying to download, that would be very helpful.

Again, thank you very much for your support in this project, and for taking the time out of your day to leave such helpful feedback.

philipzae commented 10 years ago

Thank you for responding and i await your return from completion of the other projects so we can collaborate more.

About the video i mentioned in point 9, well i was pulling the videos from < http://www.youtube.com/user/CNETTV/videos >. While i was testing youtube-dl's format list against the lists i could see on ssyoutube.com, i knew that youtube-dl was missing a few formats. So i upgraded youtube-dl today from version 2012.02.27 which comes with linux mint 13/ubuntu 12 lts, to version 2013.12.17 which i pulled from the ppa:nilarimogard/webupd8. With this new version, i see the various 3gp's and mp4's that i didnt see yesterday. Below are the outputs for both versions for < http://www.youtube.com/watch?v=m7q59EIloX4 >.

2012.02.27 (old version)

22 : mp4 [720x1280] 18 : mp4 [360x640] 5 : flv [240x400] 17 : mp4 [144x176]

2013.12.17 (new version)

22 : mp4 [1280x720] 18 : mp4 [640x360] 5 : flv [400x240] 36 : 3gp [320x240] 17 : 3gp [176x144] 136 : mp4 [720p] (DASH Video) 135 : mp4 [480p] (DASH Video) 134 : mp4 [360p] (DASH Video) 133 : mp4 [240p] (DASH Video) 160 : mp4 [192p] (DASH Video) 140 : m4a [128k] (DASH Audio) 139 : m4a [48k] (DASH Audio)

So it might be a good idea to mention to the user a minimum required youtube-dl version for better performance. I will look into the archives to see what minimum version will output the same as the latest version.

I believe you will have more users using your program and contributing suggestions and code, if you can get it packaged and also in a PPA.

philipzae commented 10 years ago

Well i went through all the versions at < http://archive.ubuntu.com/ubuntu/pool/universe/y/youtube-dl/ >, < http://old-releases.ubuntu.com/ubuntu/pool/universe/y/youtube-dl/ > and < http://ftp.at.debian.org/debian-backports/pool/main/y/youtube-dl/ > and here are what i've found. All versions before 2012 no longer work, so you should have this as the minimum youtube-dl version requirement of your GUI. The good thing about it, is that ubuntu lts and debian stable are running 2012+ versions and it has the '-F' and '--write-info-json' options that i think the GUI can take good use of.

Here are some additional suggestions i've thought about:

1] Suggest upgrade - Once that GUI starts, it should check which version of youtube-dl is on the system and should suggest the user to upgrade it if its older than six months. Possibly the dialog box can link to where the user can get the latest youtube-dl package, in both deb and rpm formats, and also have a checkbox to disable this dialog from appearing again.

2] More default options in Preferences - I think you should take use of the large amount of commandline options available in youtube-dl, by adding them to the preference dialog, including download limit (--rate-limit LIMIT), audio quality (--audio-quality QUALITY), keep video after audio extraction (--keep-video), youtube username/password for protected videos like < http://www.youtube.com/watch?v=IaaV29_Gq-g > (--username USERNAME, --password PASSWORD), download subtitle [version 2012-09+] (--write-srt, --srt-lang LANG), and embed subtitles [version 2013.08+] (--embed-subs).

3] Import List - The ability to import a list of URLs from a file to be added to the download list.

4] Import Playlist - If a user provides a video url with a playlist argument (ex. http://www.youtube.com/watch?v=moOrnBw8pMI&feature=c4-overview-vl&list=PLraFbwCoisJBTePpHtQAw3tVcwfL-mwQ4 ), a dialog should appear asking where the user wishes to download just the one video or multiple vidoes from the playlist. If the user decides to download multiple playlist videos or supplies a playlist url (ex http://www.youtube.com/playlist?list=PLraFbwCoisJBTePpHtQAw3tVcwfL-mwQ4 ) then another dialog should appear asking whether they wish to download all the vidoes or just some. If they decide they just want some of the videos, then a window should load up listing all the videos in the playlist which the user can select from. This will be possible with a command like this youtube-dl --skip-download --write-info-json http://www.youtube.com/playlist?list=PLraFbwCoisJBTePpHtQAw3tVcwfL-mwQ4 outputted to a temp folder.

5] Always visible download options - I completely didnt see the 'Show Advanced' option until now and think that it should always be visible and should have alot more options. The more options would include video and audio quality, download folder, conversion of video to alternative format [version 2013.02+] (--recode-video FORMAT) or alternatively doing it through ffmpeg, and keep video after conversion. I think YTD's interface is a good place to start with < http://i.i.cbsi.com/cnwk.1d/i/tim/2012/07/02/Foreman_12627674_5299_cnet2_540x388.jpg >.

6] Improved download area - I have already stated how it would be possible to add the size and progress columns to the area, and i think it would be good to have the status column also have text in it, as i remember yesterday looking at the green check icon and thinking it was the green download icon because i wasnt focusing on it. Alternatively a better looking check could be used. Of course with a progress column available, it wont be as important. You could also possibly highlight the downloading entry with orange, the already downloaded entries with green, and the error ones in red. Do have a look at YTD's download tab for more ideas < http://i.i.cbsi.com/cnwk.1d/i/tim/2012/07/02/Foreman_12627674_7109_cnet1_540x388.gif >. Since version 2013+, there is a duration entry in the json info file, which can also be included as a column.

7] json info file - The naming of the json info file and the extracted info has changed in the various version. executing youtube-dl --skip-download --write-info-json http://www.youtube.com/watch?v=uS_qMeoRyjY extracts to 'uS_qMeoRyjY.mp4.info.json' in 2012.02 and 'South Park - The Stick of Truth Destiny Trailer-uS_qMeoRyjY.info.json' in 2013.12.17. So i'd advice using '--output TEMPLATE' so you always get the right filename after execution.

8] Possible alternative backend - < https://github.com/NFicano/pytube >. Of course you'd have to compile it into a commandline program

9] I've submitted the program to get backaged at getdeb.net - https://bugs.launchpad.net/getdeb.net/+bug/1266311

10] When using an older version, i had youtube-dl attempt to download the best video from a password protected video and it outputted these format numbers from best to worst - 37, 22, 35, 18, 34, 5, 17, 13.

11] Windows version - as youtube-dl is available for windows, having your GUI also compiled for windows would be a great option to compete with YTD, and think this would bring in some windows users to contribute to it.

philipzae commented 10 years ago

Was doing some more checking around and had some more suggestions.

1] play video - once a video has been downloaded, it might be nice to be able to right-click 'play' or double-click the entry to play or possibly the check icon could turn into a play icon which could be clickable.

2] check for new version - when the program starts it should check and have disable check in dialog and the option should be configurable in preferences.

3] I checked about the 3gp format previously mentioned and notice that it was introduced in version 2013.09+

4] capture console output - it would be good to find a means of capturing the console output (possibly with --console-title which is in version 2012.01+) and output in a status area on the window, similar to how curlew < https://github.com/chamfay/Curlew > outputs the progress of ffmpeg onto its window. Alternatively, you can use the outputting of the download progress to a file [version 2013.04+] (--newline).

5] incorrect filename - if i add a new entry and right away click the download button, it downloads the file as a filename equal to the youtube url (ex httpwwwyoutubecomwatchvupl37CFYc4A.mp4), so it shouldnt start downloading until the video title has been added to the list.

6] easier removal from list - found it very difficult to remove entries from the list. the only way it would work is if i selected one of the drop down menus on at entry, it might be nice to have a right-click removal option.

7] clear list button - i think a button for clearing the full list would be good

8] toolkit - not sure which toolkit your using for the gui, but hope that it has very little dependencies. i personally like applications which can run on gnome or kde with the fewest amount of dependencies.

philipzae commented 10 years ago

Well i was using it more and stumbled on to some more suggestions. I also noticed that the program stopped working with the latest youtube-dl version and have submitted issue #3.

1) Startup Focus on URL Field - the url field should be on focus when the application starts, so its easy to paste a URL in the clipboard.

2) UTF-8 Enabled - i happened to download an arabic video from youtube yesterday and noticed that the title field became gibberish and so to did the filename. < http://www.youtube.com/watch?v=n7mPYD43wTc >

3) Processing Icon - i think that once a video is set to download, there should icon that indicates that its processing the request and then once the download actually starts, then the green download arrow should appear.

philipzae commented 10 years ago

Was thinking some more and think that you shouldnt rely on youtube-dl for post-download features, as ffmpeg is already installed on the system, so you can easily have presets for various video and audio conversions.