- title_list_file.close()
-
-
- from storage import storage
- storage = storage()
-
- if report_stats:
- sys.stdout.write("Loading %s: " % storage.filename)
- sys.stdout.flush()
-
- root_folder = storage.load()
- from bkmk_objects import make_linear, break_tree
- make_linear(root_folder)
- objects = len(root_folder.linear)
-
- if report_stats:
- print "Ok"
-
-
- # Run through the list of objects and check URLs/titles
- changed = 0
- for object_no in range(objects):
- object = root_folder.linear[object_no]
-
- if object.isBookmark:
- URL = object.href
- if titles_dict.has_key(URL):
- name = titles_dict[URL]
- if object.name <> name:
- object.name = name
- changed += 1
-
-
- if changed and report_stats:
- sys.stdout.write("Saving %s: " % storage.filename)
- sys.stdout.flush()
-
- if not changed and report_stats:
- sys.stdout.write("No need to save data\n")
- sys.stdout.flush()
-
- if changed:
- break_tree(root_folder.linear)
- storage.store(root_folder)
-
- if changed and report_stats:
- print "Ok"
- print objects, "objects passed"
- print changed, "objects changed"
+def run():
+ from getopt import getopt
+ optlist, args = getopt(sys.argv[1:], "s")
+
+ report_stats = 1
+
+ for _opt, _arg in optlist:
+ if _opt == '-s':
+ report_stats = 0
+ try:
+ del _opt, _arg
+ except NameError:
+ pass
+
+ if report_stats:
+ print("Broytman set-title-list, Copyright (C)"
+ " 2003-2023 PhiloSoft Design")
+
+ if len(args) != 1:
+ sys.stderr.write("Usage: set-title-list [-s] title_list_file\n")
+ sys.exit(1)
+
+ # Read the external file with titles and build a mapping (URL => title)
+ titles_dict = {}
+
+ URL = None
+ title = None
+
+ title_list_file = open(args[0], 'r')
+ for line in title_list_file:
+ line = line[:-1] # strip trailing newline
+ if URL is None:
+ URL = line
+
+ elif title is None:
+ title = line
+
+ elif line: # the third line in every 3 lines must be empty
+ raise ValueError(
+ "line is not empty for URL `%s', title `%s': line `%s'"
+ % (URL, title, line)
+ )
+
+ else: # We've got 3 lines - add new entry to the mapping
+ if titles_dict.has_key(URL):
+ if title != titles_dict[URL]:
+ raise ValueError(
+ "titles are not identical for URL `%s': `%s' != `%s'"
+ % (URL, title, titles_dict[URL])
+ )
+
+ else:
+ titles_dict[URL] = title
+
+ # reset
+ URL = None
+ title = None
+
+ title_list_file.close()
+
+ from storage import storage
+ storage = storage()
+
+ if report_stats:
+ sys.stdout.write("Loading %s: " % storage.filename)
+ sys.stdout.flush()
+
+ root_folder = storage.load()
+ from bkmk_objects import make_linear, break_tree
+ make_linear(root_folder)
+ objects = len(root_folder.linear)
+
+ if report_stats:
+ print("Ok")
+
+ # Run through the list of objects and check URLs/titles
+ changed = 0
+ for object_no in range(objects):
+ object = root_folder.linear[object_no]
+
+ if object.isBookmark:
+ URL = object.href
+ if titles_dict.has_key(URL):
+ name = titles_dict[URL]
+ if object.name != name:
+ object.name = name
+ changed += 1
+
+ if changed and report_stats:
+ sys.stdout.write("Saving %s: " % storage.filename)
+ sys.stdout.flush()
+
+ if not changed and report_stats:
+ sys.stdout.write("No need to save data\n")
+ sys.stdout.flush()
+
+ if changed:
+ break_tree(root_folder.linear)
+ storage.store(root_folder)
+
+ if changed and report_stats:
+ print("Ok")
+ print(objects, "objects passed")
+ print(changed, "objects changed")