From 50924c555288ab39a086ecde251d6739fbc439a4 Mon Sep 17 00:00:00 2001 From: Cyberes Date: Tue, 7 Feb 2023 19:31:38 -0700 Subject: [PATCH] better logging --- downloader.py | 42 ++++++++++++++++++++++++++++-------------- process/threads.py | 10 +++++----- 2 files changed, 33 insertions(+), 19 deletions(-) diff --git a/downloader.py b/downloader.py index cfd8d63..75593c5 100755 --- a/downloader.py +++ b/downloader.py @@ -375,26 +375,40 @@ while True: if result['downloaded_video_id']: download_archive_logger.info(result['downloaded_video_id']) - # Print stuff - for line in result['video_error_logger_msg']: - file_msg = f"{result['video_id']} - {ansi_escape_regex.sub('', line)}" - term_msg = f"{result['video_id']} - {line}" - video_error_logger.error(file_msg) - file_logger.error(file_msg) + # Print short error messages. + # An error should never be added to both video_critical_err_msg_short and video_critical_err_msg. + for line in result['video_critical_err_msg_short']: + # file_msg = f"{result['video_id']} - {ansi_escape_regex.sub('', line)}" + # term_msg = f"{result['video_id']} - {line}" + msg = f"{result['video_id']} - {line}" + video_error_logger.error(msg) + file_logger.error(msg) + encountered_errors += 1 + if args.daemon: + logger.error(msg) + else: + status_bar.write(msg) + + # Print longer error messages. + # Won't print anything to console if the silence_errors arg is set. + for line in result['video_critical_err_msg']: + # file_msg = f"{result['video_id']} - {ansi_escape_regex.sub('', line)}" + # term_msg = f"{result['video_id']} - {line}" + msg = f"{result['video_id']} - {line}" + video_error_logger.error(msg) + file_logger.error(msg) encountered_errors += 1 if not args.silence_errors: if args.daemon: - logger.error(term_msg) + logger.error(msg) else: - status_bar.write(term_msg) + status_bar.write(msg) - if len(result['video_error_logger_msg']): - errored_videos += 1 - if args.silence_errors and args.daemon: - logger.error(f"{result['video_id']} - Failed due to error.") + # if len(result['video_critical_err_msg']): + # errored_videos += 1 + # if args.silence_errors and args.daemon: + # logger.error(f"{result['video_id']} - Failed due to error.") - # for line in result['status_msg']: - # playlist_bar.write(line) for line in result['logger_msg']: log_info_twice(line) playlist_bar.update() diff --git a/process/threads.py b/process/threads.py index 2355b62..9aaea37 100644 --- a/process/threads.py +++ b/process/threads.py @@ -70,14 +70,14 @@ def download_video(args) -> dict: video = args[0] kwargs = args[1] - output_dict = {'downloaded_video_id': None, 'video_id': video['id'], 'video_error_logger_msg': [], 'status_msg': [], 'logger_msg': []} # empty object + output_dict = {'downloaded_video_id': None, 'video_id': video['id'], 'video_critical_err_msg': [], 'video_critical_err_msg_short': [], 'status_msg': [], 'logger_msg': []} # empty object if not kwargs['ignore_downloaded'] and not video['channel_id'] or not video['channel'] or not video['channel_url']: if video['duration'] or isinstance(video['view_count'], int): # Sometimes videos don't have channel_id, channel, or channel_url but are actually valid. Like shorts. pass else: - output_dict['video_error_logger_msg'].append(f"{video['id']} unavailable.") + output_dict['video_critical_err_msg_short'].append('unavailable.') return output_dict # Get a bar @@ -101,7 +101,7 @@ def download_video(args) -> dict: yt_dlp = ydl.YDL(kwargs['ydl_opts']) video_n = yt_dlp.get_info(video['url']) if not video_n: - output_dict['video_error_logger_msg'].append(f"{video['id']} failed to get info.") + output_dict['video_critical_err_msg_short'].append('failed to get info.') return output_dict video_n['url'] = video['url'] video = video_n @@ -121,9 +121,9 @@ def download_video(args) -> dict: output_dict['logger_msg'].append(f"{video['id']} '{video['title']}' downloaded in {elapsed} min.") output_dict['downloaded_video_id'] = video['id'] else: - output_dict['video_error_logger_msg'] = output_dict['video_error_logger_msg'] + ylogger.errors + output_dict['video_critical_err_msg'] = output_dict['video_critical_err_msg'] + ylogger.errors except Exception: - output_dict['video_error_logger_msg'].append(f"EXCEPTION -> {traceback.format_exc()}") + output_dict['video_critical_err_msg'].append(f"EXCEPTION -> {traceback.format_exc()}") if locked: bar.update(100 - bar.n) if locked: