]> git.phdru.name Git - bookmarks_db.git/commitdiff
Run through the bookmarks database and set names to titles from an external file.
authorOleg Broytman <phd@phdru.name>
Thu, 24 Jul 2003 14:29:48 +0000 (14:29 +0000)
committerOleg Broytman <phd@phdru.name>
Thu, 24 Jul 2003 14:29:48 +0000 (14:29 +0000)
git-svn-id: file:///home/phd/archive/SVN/bookmarks_db/trunk@11 fdd5c36f-1aea-0310-aeeb-c58d7e2b6c23

set-title-list.py [new file with mode: 0755]

diff --git a/set-title-list.py b/set-title-list.py
new file mode 100755 (executable)
index 0000000..e5d6f22
--- /dev/null
@@ -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()