From 0d1bb027aab2aa96be12caac8ed9bcd5e0d3a2f5 Mon Sep 17 00:00:00 2001 From: pukkandan Date: Mon, 3 May 2021 15:11:59 +0530 Subject: [PATCH] Move option warnings to `YoutubeDL` Previously, these warnings did not obey `--no-warnings` and did not output colors --- yt_dlp/YoutubeDL.py | 11 +++++++---- yt_dlp/__init__.py | 15 ++++++++------- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/yt_dlp/YoutubeDL.py b/yt_dlp/YoutubeDL.py index 56ebc5067..98f320b2e 100644 --- a/yt_dlp/YoutubeDL.py +++ b/yt_dlp/YoutubeDL.py @@ -474,6 +474,13 @@ def check_deprecated(param, option, suggestion): if self.params.get('geo_verification_proxy') is None: self.params['geo_verification_proxy'] = self.params['cn_verification_proxy'] + check_deprecated('autonumber_size', '--autonumber-size', 'output template with %(autonumber)0Nd, where N in the number of digits') + check_deprecated('autonumber', '--auto-number', '-o "%(autonumber)s-%(title)s.%(ext)s"') + check_deprecated('usetitle', '--title', '-o "%(title)s-%(id)s.%(ext)s"') + + for msg in self.params.get('warnings', []): + self.report_warning(msg) + if self.params.get('final_ext'): if self.params.get('merge_output_format'): self.report_warning('--merge-output-format will be ignored since --remux-video or --recode-video is given') @@ -482,10 +489,6 @@ def check_deprecated(param, option, suggestion): if 'overwrites' in self.params and self.params['overwrites'] is None: del self.params['overwrites'] - check_deprecated('autonumber_size', '--autonumber-size', 'output template with %(autonumber)0Nd, where N in the number of digits') - check_deprecated('autonumber', '--auto-number', '-o "%(autonumber)s-%(title)s.%(ext)s"') - check_deprecated('usetitle', '--title', '-o "%(title)s-%(id)s.%(ext)s"') - if params.get('bidi_workaround', False): try: import pty diff --git a/yt_dlp/__init__.py b/yt_dlp/__init__.py index bf5896f0c..e6e568780 100644 --- a/yt_dlp/__init__.py +++ b/yt_dlp/__init__.py @@ -60,6 +60,7 @@ def _real_main(argv=None): setproctitle('yt-dlp') parser, opts, args = parseOpts(argv) + warnings = [] # Set user agent if opts.user_agent is not None: @@ -281,7 +282,7 @@ def parse_retries(retries, name=''): opts.writeinfojson = True def report_conflict(arg1, arg2): - write_string('WARNING: %s is ignored since %s was given\n' % (arg2, arg1), out=sys.stderr) + warnings.append('%s is ignored since %s was given' % (arg2, arg1)) if opts.remuxvideo and opts.recodevideo: report_conflict('--recode-video', '--remux-video') @@ -419,11 +420,10 @@ def report_conflict(arg1, arg2): }) def report_args_compat(arg, name): - write_string( - 'WARNING: %s given without specifying name. The arguments will be given to all %s\n' % (arg, name), - out=sys.stderr) + warnings.append('%s given without specifying name. The arguments will be given to all %s' % (arg, name)) + if 'default' in opts.external_downloader_args: - report_args_compat('--external-downloader-args', 'external downloaders') + report_args_compat('--downloader-args', 'external downloaders') if 'default-compat' in opts.postprocessor_args and 'default' not in opts.postprocessor_args: report_args_compat('--post-processor-args', 'post-processors') @@ -589,8 +589,9 @@ def report_args_compat(arg, name): 'geo_bypass_country': opts.geo_bypass_country, 'geo_bypass_ip_block': opts.geo_bypass_ip_block, # just for deprecation check - 'autonumber': opts.autonumber if opts.autonumber is True else None, - 'usetitle': opts.usetitle if opts.usetitle is True else None, + 'warnings': warnings, + 'autonumber': opts.autonumber or None, + 'usetitle': opts.usetitle or None, } with YoutubeDL(ydl_opts) as ydl: