From 1f50f0961e4437d8306f541bce4fee0fa37301d7 Mon Sep 17 00:00:00 2001 From: Oleg Broytman Date: Tue, 14 Nov 2023 20:53:50 +0300 Subject: [PATCH] Feat: Log reports to files --- bkmk-chk | 4 ++-- check_redirects.py | 22 +++++++++++++++++----- check_title.py | 32 ++++++++++++++++++++++---------- 3 files changed, 41 insertions(+), 17 deletions(-) diff --git a/bkmk-chk b/bkmk-chk index 6a748e9..1a96108 100755 --- a/bkmk-chk +++ b/bkmk-chk @@ -23,8 +23,8 @@ check_urls.py -e && # Report results BKMK_WRITER=flad db2bkmk.py && check_dups.py -s -l bookmarks.err >/dev/null && -check_title.py > check_title.txt && -check_redirects.py > check_redirects.txt && +check_title.py -s -l check_title.txt && +check_redirects.py -s -l check_redirects.txt && bkmk-sort && # Write results to the bookmarks files diff --git a/check_redirects.py b/check_redirects.py index 12c74d8..1f5c2b0 100755 --- a/check_redirects.py +++ b/check_redirects.py @@ -14,15 +14,26 @@ __copyright__ = "Copyright (C) 2023 PhiloSoft Design" __license__ = "GNU GPL" +def report_redirect(href, moved): + if log_file: + log_file.write("%s\n%s\n\n" % (href, moved)) + else: + print("URL: %s\nMoved to: %s\n" % (href, moved)) + + def run(): from getopt import getopt - optlist, args = getopt(sys.argv[1:], "s") + optlist, args = getopt(sys.argv[1:], "sl:") report_stats = 1 + global log_file + log_filename = None for _opt, _arg in optlist: if _opt == '-s': report_stats = 0 + if _opt == '-l': + log_filename = _arg try: del _opt, _arg except NameError: @@ -33,9 +44,12 @@ def run(): if args: sys.stderr.write("check_redirects: too many arguments\n") - sys.stderr.write("Usage: check_redirects [-s]\n") + sys.stderr.write("Usage: check_redirects [-s] [-l logfile]\n") sys.exit(1) + if log_filename: + log_file = open(log_filename, 'wt') + from storage import storage storage = storage() @@ -59,9 +73,7 @@ def run(): continue if hasattr(object, "moved"): - print(object.href) - print(object.moved) - print() + report_redirect(object.href, object.moved) del object.moved if report_stats: diff --git a/check_title.py b/check_title.py index 5c0ed3f..c30e025 100755 --- a/check_title.py +++ b/check_title.py @@ -14,15 +14,30 @@ __copyright__ = "Copyright (C) 2002-2023 PhiloSoft Design" __license__ = "GNU GPL" +def report_title(href, title, real_title): + if real_title is None: + real_title = "NO REAL TITLE!!!" + s = "%s\n%s\n%s\n" % (href, title, real_title) + + if log_file: + log_file.write("%s\n" % s) + else: + print(s) + + def run(): from getopt import getopt - optlist, args = getopt(sys.argv[1:], "s") + optlist, args = getopt(sys.argv[1:], "sl:") report_stats = 1 + global log_file + log_filename = None for _opt, _arg in optlist: if _opt == '-s': report_stats = 0 + if _opt == '-l': + log_filename = _arg try: del _opt, _arg except NameError: @@ -33,9 +48,12 @@ def run(): if args: sys.stderr.write("check_title: too many arguments\n") - sys.stderr.write("Usage: check_title [-s]\n") + sys.stderr.write("Usage: check_title [-s] [-l logfile]\n") sys.exit(1) + if log_filename: + log_file = open(log_filename, 'wt') + from storage import storage storage = storage() @@ -63,15 +81,9 @@ def run(): unquoted_title = unquote_title(quote_title(object.real_title)) unquoted_name = unquote_title(object.name) if unquoted_name != unquoted_title: - print(object.href) - print(unquoted_name) - print(unquoted_title) - print() + report_title(object.href, unquoted_name unquoted_title) else: - print(object.href) - print(object.name) - print("NO REAL TITLE!!!") - print() + report_title(object.href, object.name, None) if report_stats: print(objects, "objects passed") -- 2.39.5