#! /usr/bin/env python
-"""
- Run through the bookmarks database and set names to titles from an external file
+"""Run through the bookmarks database and set names to titles from an external file
- Written by BroytMann, May 2003 - May 2003. Copyright (C) 2003 PhiloSoft Design
+This file is a part of Bookmarks database and Internet robot.
"""
-
+from __future__ import print_function
import sys
-def run():
- from getopt import getopt
- optlist, args = getopt(sys.argv[1:], "s")
+__author__ = "Oleg Broytman <phd@phdru.name>"
+__copyright__ = "Copyright (C) 2003-2023 PhiloSoft Design"
+__license__ = "GNU GPL"
- 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 "BroytMann set-title-list, Copyright (C) 2003 PhiloSoft Design"
+def run():
+ from getopt import getopt
+ optlist, args = getopt(sys.argv[1:], "s")
- if len(args) <> 1:
- sys.stderr.write("Usage: set-title-list [-s] title_list_file\n")
- sys.exit(1)
+ report_stats = 1
- # Read the external file with titles and build a mapping (URL => title)
- titles_dict = {}
+ for _opt, _arg in optlist:
+ if _opt == '-s':
+ report_stats = 0
+ try:
+ del _opt, _arg
+ except NameError:
+ pass
- URL = None
- title = None
+ if report_stats:
+ print("Broytman set-title-list, Copyright (C) 2003-2023 PhiloSoft Design")
- 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
+ if len(args) != 1:
+ sys.stderr.write("Usage: set-title-list [-s] title_list_file\n")
+ sys.exit(1)
- elif title is None:
- title = line
+ # Read the external file with titles and build a mapping (URL => title)
+ titles_dict = {}
- 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)
+ URL = None
+ title = None
- 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])
+ 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
- else:
- titles_dict[URL] = title
+ elif title is None:
+ title = line
- # reset
- URL = None
- title = None
+ 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))
- title_list_file.close()
+ 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
- from storage import storage
- storage = storage()
+ # reset
+ URL = None
+ title = None
- if report_stats:
- sys.stdout.write("Loading %s: " % storage.filename)
- sys.stdout.flush()
+ title_list_file.close()
- 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, break_tree
+ make_linear(root_folder)
+ objects = len(root_folder.linear)
- # 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 report_stats:
+ print("Ok")
- 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
+ # 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 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 not changed and report_stats:
+ sys.stdout.write("No need to save data\n")
+ sys.stdout.flush()
- if changed:
- storage.store(root_folder)
+ 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"
+ if changed and report_stats:
+ print("Ok")
+ print(objects, "objects passed")
+ print(changed, "objects changed")
if __name__ == '__main__':
- run()
+ run()