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 __author__ = "Oleg Broytman <phd@phdru.name>"
8 __copyright__ = "Copyright (C) 2000-2012 PhiloSoft Design"
9 __license__ = "GNU GPL"
15 from getopt import getopt
16 optlist, args = getopt(sys.argv[1:], "sp:o:t:r")
21 from writers import writer
22 output_filename = writer.filename
25 transl_name = "" # dictionary translation; default is no translation
27 for _opt, _arg in optlist:
33 output_filename = _arg
45 sys.stderr.write("db2bkmk: too many arguments\n")
46 sys.stderr.write("Usage: db2bkmk [-s] [-p prune_folder] [-o filename] [-t trans] [-r]\n")
49 from storage import storage
53 sys.stdout.write("Loading %s: " % storage.filename)
56 root_folder = storage.load()
60 sys.stdout.write("Writing %s: " % output_filename)
68 from m_lib.flad import fladm
69 transl_db = fladm.load_from_file(transl_name, fladm.check_record, ["URL1", "URL2"], [""])
70 # This prevents any other key to appear in transl_db ^
72 # Generate translation dictionary (hash table)
74 for record in transl_db:
75 transl_d[record["URL1"]] = record["URL2"]
77 for record in transl_db:
78 transl_d[record["URL2"]] = record["URL1"]
80 raise ValueError, "transl (%d) must be 1 or 2" % transl
82 del transl_db # Save few bytes of memory
84 from bkmk_objects import Walker
86 def __init__(self, transl_d):
87 self.transl_d = transl_d
89 def bookmark(self, b, level):
91 transl_d = self.transl_d
93 if transl_d.has_key(href):
94 b.href = transl_d[href]
96 root_folder.walk_depth(Transl(transl_d))
99 outfile = open(output_filename, 'w')
100 root_folder.walk_depth(writer(outfile, prune))
107 if __name__ == '__main__':