-#! /usr/bin/env python
+#! /usr/bin/env python3
"""Check duplicate URLs in the bookmarks database
This file is a part of Bookmarks database and Internet robot.
__author__ = "Oleg Broytman <phd@phdru.name>"
-__copyright__ = "Copyright (C) 2000-2017 PhiloSoft Design"
+__copyright__ = "Copyright (C) 2000-2023 PhiloSoft Design"
__license__ = "GNU GPL"
log_file = None
+
def report_dup(href, object_no):
- s = "Duplicate URL: %s (first at rec. %d)" % (href, object_no)
+ s = "Duplicate URL: %s (first at rec. %d)" % (href, object_no)
- if log_file:
- log_file.write("%s\n" % s)
- else:
- print(s)
+ if log_file:
+ log_file.write("%s\n" % s)
+ else:
+ print(s)
def run():
- from getopt import getopt
- 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:
- pass
+ from getopt import getopt
+ optlist, args = getopt(sys.argv[1:], "sl:")
- if report_stats:
- print("Broytman check_dups, Copyright (C) 2000-2017 PhiloSoft Design")
+ report_stats = 1
+ global log_file
+ log_filename = None
- if args:
- sys.stderr.write("check_urls: too many arguments\n")
- sys.stderr.write("Usage: check_urls [-s] [-l logfile]\n")
- sys.exit(1)
+ for _opt, _arg in optlist:
+ if _opt == '-s':
+ report_stats = 0
+ if _opt == '-l':
+ log_filename = _arg
+ try:
+ del _opt, _arg
+ except NameError:
+ pass
- if log_filename:
- log_file = open(log_filename, 'w')
+ if report_stats:
+ print("Broytman check_dups, Copyright (C) 2000-2023 PhiloSoft Design")
- from storage import storage
- storage = storage()
+ if args:
+ sys.stderr.write("check_urls: too many arguments\n")
+ sys.stderr.write("Usage: check_urls [-s] [-l logfile]\n")
+ sys.exit(1)
- if report_stats:
- sys.stdout.write("Loading %s: " % storage.filename)
- sys.stdout.flush()
+ if log_filename:
+ log_file = open(log_filename, 'wt')
- root_folder = storage.load()
- from bkmk_objects import make_linear
- make_linear(root_folder)
- objects = len(root_folder.linear)
+ from storage import storage
+ storage = storage()
- if report_stats:
- print("Ok")
+ if report_stats:
+ sys.stdout.write("Loading %s: " % storage.filename)
+ sys.stdout.flush()
+ root_folder = storage.load()
+ from bkmk_objects import make_linear
+ make_linear(root_folder)
+ objects = len(root_folder.linear)
- dup_dict = {}
+ if report_stats:
+ print("Ok")
- for object_no in range(objects):
- object = root_folder.linear[object_no]
+ dup_dict = {}
- if object.isBookmark:
- href = object.href
- if dup_dict.has_key(href):
- report_dup(href, dup_dict[href])
- else:
- dup_dict[href] = object_no
+ for object_no in range(objects):
+ object = root_folder.linear[object_no]
+ if object.isBookmark:
+ href = object.href
+ if href in dup_dict:
+ report_dup(href, dup_dict[href])
+ else:
+ dup_dict[href] = object_no
- if log_filename:
- log_file.close()
+ if log_filename:
+ log_file.close()
- if report_stats:
- print("Ok")
- print(objects, "objects passed")
+ if report_stats:
+ print("Ok")
+ print(objects, "objects passed")
if __name__ == '__main__':
- run()
+ run()