From ef865dd76adee21d932bb79e208a911165a5ca0a Mon Sep 17 00:00:00 2001 From: Nick Sweeting Date: Fri, 22 Mar 2019 23:00:43 -0400 Subject: [PATCH] better stats collection and printing --- archivebox/archive_methods.py | 23 +++++++++++------------ archivebox/logs.py | 32 +++++++++++++------------------- 2 files changed, 24 insertions(+), 31 deletions(-) diff --git a/archivebox/archive_methods.py b/archivebox/archive_methods.py index 9ef0dc83..bf2eec4e 100644 --- a/archivebox/archive_methods.py +++ b/archivebox/archive_methods.py @@ -85,29 +85,28 @@ def archive_link(link_dir, link): link = load_json_link_index(link_dir, link) log_link_archiving_started(link_dir, link, is_new) - skipped_entirely = True + stats = {'skipped': 0, 'succeeded': 0, 'failed': 0} for method_name, should_run, method_function in ARCHIVE_METHODS: if method_name not in link['history']: link['history'][method_name] = [] if should_run(link_dir, link): - if skipped_entirely: - skipped_entirely = False - print() + log_archive_method_started(method_name) + + result = method_function(link_dir, link) + link['history'][method_name].append(result) + + stats[result['status']] += 1 + log_archive_method_finished(result) else: - continue + stats['skipped'] += 1 - log_archive_method_started(method_name) - result = method_function(link_dir, link) - log_archive_method_finished(result) - - link['history'][method_name].append(result) + # print(' ', stats) write_link_index(link_dir, link) patch_links_index(link) - - log_link_archiving_finished(link_dir, link, is_new, skipped_entirely) + log_link_archiving_finished(link_dir, link, is_new, stats) except Exception as err: print(' ! Failed to archive link: {}: {}'.format(err.__class__.__name__, err)) diff --git a/archivebox/logs.py b/archivebox/logs.py index 3d6a804b..4dc2c051 100644 --- a/archivebox/logs.py +++ b/archivebox/logs.py @@ -116,9 +116,9 @@ def log_archiving_finished(num_links): duration, ANSI['reset'], )) - print(' - {} entries skipped'.format(_LAST_RUN_STATS['skipped'])) - print(' - {} entries updated'.format(_LAST_RUN_STATS['succeeded'])) - print(' - {} errors'.format(_LAST_RUN_STATS['failed'])) + print(' - {} links skipped'.format(_LAST_RUN_STATS['skipped'])) + print(' - {} links updated'.format(_LAST_RUN_STATS['succeeded'])) + print(' - {} links had errors'.format(_LAST_RUN_STATS['failed'])) print(' To view your archive, open: {}/index.html'.format(OUTPUT_DIR.replace(REPO_DIR + '/', ''))) @@ -135,26 +135,20 @@ def log_link_archiving_started(link_dir, link, is_new): **ANSI, )) print(' {blue}{url}{reset}'.format(url=link['url'], **ANSI)) - sys.stdout.write(' > {}{}'.format( + print(' {} {}'.format( + '>' if is_new else '√', pretty_path(link_dir), - ' (new)' if is_new else '', )) -def log_link_archiving_finished(link_dir, link, is_new, skipped_entirely): - from util import latest_output - - if all(output == 'succeeded' for output in latest_output(link).values()): - _LAST_RUN_STATS['succeeded'] += 1 - elif any(output == 'failed' for output in latest_output(link).values()): - _LAST_RUN_STATS['failed'] += 1 - else: - _LAST_RUN_STATS['skipped'] += 1 +def log_link_archiving_finished(link_dir, link, is_new, stats): + total = sum(stats.values()) - if skipped_entirely: - print('\r √ {}{}'.format( - pretty_path(link_dir), - ' (new)' if is_new else '', - )) + if stats['failed'] > 0 : + _LAST_RUN_STATS['failed'] += 1 + elif stats['skipped'] == total: + _LAST_RUN_STATS['skipped'] += 1 + else: + _LAST_RUN_STATS['succeeded'] += 1 def log_archive_method_started(method):