1 #! /usr/bin/env python3
2 """Check and show URLs in the bookmarks database where name != real title
4 This file is a part of Bookmarks database and Internet robot.
7 from __future__ import print_function
9 from bkmk_objects import make_linear, quote_title, unquote_title
12 __author__ = "Oleg Broytman <phd@phdru.name>"
13 __copyright__ = "Copyright (C) 2002-2023 PhiloSoft Design"
14 __license__ = "GNU GPL"
17 def report_title(href, title, real_title):
18 if real_title is None:
19 real_title = "NO REAL TITLE!!!"
20 s = "%s\n%s\n%s\n" % (href, title, real_title)
23 log_file.write("%s\n" % s)
29 from getopt import getopt
30 optlist, args = getopt(sys.argv[1:], "sl:")
36 for _opt, _arg in optlist:
47 print("Broytman check_title, Copyright (C) 2002-2023 PhiloSoft Design")
50 sys.stderr.write("check_title: too many arguments\n")
51 sys.stderr.write("Usage: check_title [-s] [-l logfile]\n")
55 log_file = open(log_filename, 'wt', encoding='utf-8')
57 from storage import storage
61 sys.stdout.write("Loading %s: " % storage.filename)
64 root_folder = storage.load()
65 make_linear(root_folder)
66 objects = len(root_folder.linear)
71 changed_titles = no_titles = 0
72 for object_no in range(objects):
73 object = root_folder.linear[object_no]
76 if hasattr(object, "moved") or hasattr(object, "error") or \
77 object.href.startswith('place:'): # Firefox SmartBookmarks
80 if hasattr(object, "real_title") \
81 and (object.real_title is not None):
82 unquoted_title = unquote_title(quote_title(object.real_title))
83 unquoted_name = unquote_title(object.name)
84 if unquoted_name != unquoted_title:
85 report_title(object.href, unquoted_name, unquoted_title)
88 report_title(object.href, object.name, None)
92 print(objects, "objects passed")
93 print(changed_titles, "changed titles")
94 print(no_titles, "no titles")
97 if __name__ == '__main__':