From b35496d825b01f9c7cdeda8782cbd3957913928e Mon Sep 17 00:00:00 2001 From: pukkandan Date: Wed, 21 Jul 2021 18:06:34 +0530 Subject: [PATCH] Add `only_once` param for `write_debug` --- yt_dlp/YoutubeDL.py | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/yt_dlp/YoutubeDL.py b/yt_dlp/YoutubeDL.py index 3dfab69b2d..bfe91dd213 100644 --- a/yt_dlp/YoutubeDL.py +++ b/yt_dlp/YoutubeDL.py @@ -450,7 +450,7 @@ class YoutubeDL(object): params = None _ies = [] _pps = {'pre_process': [], 'before_dl': [], 'after_move': [], 'post_process': []} - _reported_warnings = set() + _printed_messages = set() _first_webpage_request = True _download_retcode = None _num_downloads = None @@ -465,7 +465,7 @@ def __init__(self, params=None, auto_init=True): self._ies = [] self._ies_instances = {} self._pps = {'pre_process': [], 'before_dl': [], 'after_move': [], 'post_process': []} - self._reported_warnings = set() + self._printed_messages = set() self._first_webpage_request = True self._post_hooks = [] self._progress_hooks = [] @@ -660,8 +660,12 @@ def _bidi_workaround(self, message): for _ in range(line_count)) return res[:-len('\n')] - def _write_string(self, s, out=None): - write_string(s, out=out, encoding=self.params.get('encoding')) + def _write_string(self, message, out=None, only_once=False): + if only_once: + if message in self._printed_messages: + return + self._printed_messages.add(message) + write_string(message, out=out, encoding=self.params.get('encoding')) def to_stdout(self, message, skip_eol=False, quiet=False): """Print message to stdout""" @@ -672,13 +676,13 @@ def to_stdout(self, message, skip_eol=False, quiet=False): '%s%s' % (self._bidi_workaround(message), ('' if skip_eol else '\n')), self._err_file if quiet else self._screen_file) - def to_stderr(self, message): + def to_stderr(self, message, only_once=False): """Print message to stderr""" assert isinstance(message, compat_str) if self.params.get('logger'): self.params['logger'].error(message) else: - self._write_string('%s\n' % self._bidi_workaround(message), self._err_file) + self._write_string('%s\n' % self._bidi_workaround(message), self._err_file, only_once=only_once) def to_console_title(self, message): if not self.params.get('consoletitle', False): @@ -760,10 +764,6 @@ def report_warning(self, message, only_once=False): Print the message to stderr, it will be prefixed with 'WARNING:' If stderr is a tty file the 'WARNING:' will be colored ''' - if only_once: - if message in self._reported_warnings: - return - self._reported_warnings.add(message) if self.params.get('logger') is not None: self.params['logger'].warning(message) else: @@ -774,7 +774,7 @@ def report_warning(self, message, only_once=False): else: _msg_header = 'WARNING:' warning_message = '%s %s' % (_msg_header, message) - self.to_stderr(warning_message) + self.to_stderr(warning_message, only_once) def report_error(self, message, tb=None): ''' @@ -788,7 +788,7 @@ def report_error(self, message, tb=None): error_message = '%s %s' % (_msg_header, message) self.trouble(error_message, tb) - def write_debug(self, message): + def write_debug(self, message, only_once=False): '''Log debug message or Print message to stderr''' if not self.params.get('verbose', False): return @@ -796,7 +796,7 @@ def write_debug(self, message): if self.params.get('logger'): self.params['logger'].debug(message) else: - self._write_string('%s\n' % message) + self.to_stderr(message, only_once) def report_file_already_downloaded(self, file_name): """Report file has already been fully downloaded."""