From f6cc9476e5292c9b3606e41905a427d93aa4fd8a Mon Sep 17 00:00:00 2001 From: Mort Yao Date: Mon, 17 Sep 2012 15:35:06 +0200 Subject: [PATCH] add --debug option to show traceback on KeyboardInterrupt --- you_get/common.py | 36 ++++++++++++++++++++++++------------ you_get/main.py | 6 +----- 2 files changed, 25 insertions(+), 17 deletions(-) diff --git a/you_get/common.py b/you_get/common.py index 70e8e699..1a19155e 100644 --- a/you_get/common.py +++ b/you_get/common.py @@ -507,6 +507,18 @@ def set_http_proxy(proxy): opener = request.build_opener(proxy_support) request.install_opener(opener) +def download_main(download, download_playlist, urls, playlist, output_dir, merge, info_only): + for url in urls: + if url.startswith('https://'): + url = url[8:] + if not url.startswith('http://'): + url = 'http://' + url + + if playlist: + download_playlist(url, output_dir = output_dir, merge = merge, info_only = info_only) + else: + download(url, output_dir = output_dir, merge = merge, info_only = info_only) + def script_main(script_name, download, download_playlist = None): version = 'You-Get %s, a video downloader.' % __version__ help = 'Usage: %s [OPTION]... [URL]...\n' % script_name @@ -517,15 +529,15 @@ def script_main(script_name, download, download_playlist = None): help += '''\nDownload options (use with URLs): -f | --force Force overwriting existed files. -i | --info Display the information of videos without downloading. - -l | --playlist Download playlists. (only available for some sites) -n | --no-merge Don't merge video parts. -o | --output-dir Set the output directory for downloaded videos. -x | --http-proxy Use specific HTTP proxy for downloading. --no-proxy Don't use any proxy. (ignore $http_proxy) + --debug Show traceback on KeyboardInterrupt. ''' short_opts = 'Vhfino:x:' - opts = ['version', 'help', 'force', 'info', 'no-merge', 'no-proxy', 'output-dir=', 'http-proxy='] + opts = ['version', 'help', 'force', 'info', 'no-merge', 'no-proxy', 'debug', 'output-dir=', 'http-proxy='] if download_playlist: short_opts = 'l' + short_opts opts = ['playlist'] + opts @@ -542,6 +554,7 @@ def script_main(script_name, download, download_playlist = None): merge = True output_dir = '.' proxy = None + traceback = False for o, a in opts: if o in ('-V', '--version'): print(version) @@ -561,6 +574,8 @@ def script_main(script_name, download, download_playlist = None): merge = False elif o in ('--no-proxy'): proxy = '' + elif o in ('--debug'): + traceback = True elif o in ('-o', '--output-dir'): output_dir = a elif o in ('-x', '--http-proxy'): @@ -574,13 +589,10 @@ def script_main(script_name, download, download_playlist = None): set_http_proxy(proxy) - for url in args: - if url.startswith('https://'): - url = url[8:] - if not url.startswith('http://'): - url = 'http://' + url - - if playlist: - download_playlist(url, output_dir = output_dir, merge = merge, info_only = info_only) - else: - download(url, output_dir = output_dir, merge = merge, info_only = info_only) + if traceback: + download_main(download, download_playlist, args, playlist, output_dir, merge, info_only) + else: + try: + download_main(download, download_playlist, args, playlist, output_dir, merge, info_only) + except KeyboardInterrupt: + sys.exit(1) diff --git a/you_get/main.py b/you_get/main.py index 8f3f9bd8..bfec6ebd 100644 --- a/you_get/main.py +++ b/you_get/main.py @@ -51,8 +51,4 @@ def any_download_playlist(url, output_dir = '.', merge = True, info_only = False m.download_playlist(url, output_dir = output_dir, merge = merge, info_only = info_only) def main(): - import sys - try: - script_main('you-get', any_download, any_download_playlist) - except KeyboardInterrupt: - sys.exit(1) + script_main('you-get', any_download, any_download_playlist)