From: Oleg Broytman Date: Thu, 24 Jul 2003 14:29:48 +0000 (+0000) Subject: Run through the bookmarks database and set names to titles from an external file. X-Git-Tag: v4.5.3~365 X-Git-Url: https://git.phdru.name/?p=bookmarks_db.git;a=commitdiff_plain;h=d9f893f73fa453a69b17cb4283f18c052ae29b21 Run through the bookmarks database and set names to titles from an external file. git-svn-id: file:///home/phd/archive/SVN/bookmarks_db/trunk@11 fdd5c36f-1aea-0310-aeeb-c58d7e2b6c23 --- diff --git a/set-title-list.py b/set-title-list.py new file mode 100755 index 0000000..e5d6f22 --- /dev/null +++ b/set-title-list.py @@ -0,0 +1,114 @@ +#! /usr/local/bin/python -O +""" + 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 +""" + + +import sys + + +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 "BroytMann set-title-list, Copyright (C) 2003 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 + 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: + storage.store(root_folder) + + if changed and report_stats: + print "Ok" + print objects, "objects passed" + print changed, "objects changed" + + +if __name__ == '__main__': + run()