2 """Convert a bkmk database back to bookmarks.html (or other format defined by writer)
4 This file is a part of Bookmarks database and Internet robot.
7 __version__ = "$Revision$"[11:-2]
8 __revision__ = "$Id$"[5:-2]
9 __date__ = "$Date$"[7:-2]
10 __author__ = "Oleg Broytman <phd@phdru.name>"
11 __copyright__ = "Copyright (C) 2000-2011 PhiloSoft Design"
12 __license__ = "GNU GPL"
18 from getopt import getopt
19 optlist, args = getopt(sys.argv[1:], "sp:o:t:r")
24 from writers import writer
25 output_filename = writer.filename
28 transl_name = "" # dictionary translation; default is no translation
30 for _opt, _arg in optlist:
36 output_filename = _arg
48 sys.stderr.write("db2bkmk: too many arguments\n")
49 sys.stderr.write("Usage: db2bkmk [-s] [-p prune_folder] [-o filename] [-t trans] [-r]\n")
52 from storage import storage
56 sys.stdout.write("Loading %s: " % storage.filename)
59 root_folder = storage.load()
63 sys.stdout.write("Writing %s: " % output_filename)
71 from m_lib.flad import fladm
72 transl_db = fladm.load_from_file(transl_name, fladm.check_record, ["URL1", "URL2"], [""])
73 # This prevents any other key to appear in transl_db ^
75 # Generate translation dictionary (hash table)
77 for record in transl_db:
78 transl_d[record["URL1"]] = record["URL2"]
80 for record in transl_db:
81 transl_d[record["URL2"]] = record["URL1"]
83 raise ValueError, "transl (%d) must be 1 or 2" % transl
85 del transl_db # Save few bytes of memory
87 from bkmk_objects import Walker
89 def __init__(self, transl_d):
90 self.transl_d = transl_d
92 def bookmark(self, b, level):
94 transl_d = self.transl_d
96 if transl_d.has_key(href):
97 b.href = transl_d[href]
99 root_folder.walk_depth(Transl(transl_d))
102 outfile = open(output_filename, 'w')
103 root_folder.walk_depth(writer(outfile, prune))
110 if __name__ == '__main__':