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-2023 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)
67 from m_lib.flad import fladm
68 transl_db = fladm.load_from_file(transl_name, fladm.check_record, ["URL1", "URL2"], [""])
69 # This prevents any other key to appear in transl_db ^
71 # Generate translation dictionary (hash table)
73 for record in transl_db:
74 transl_d[record["URL1"]] = record["URL2"]
76 for record in transl_db:
77 transl_d[record["URL2"]] = record["URL1"]
79 raise ValueError("transl (%d) must be 1 or 2" % transl)
81 del transl_db # Save few bytes of memory
83 from bkmk_objects import Walker
85 def __init__(self, transl_d):
86 self.transl_d = transl_d
88 def bookmark(self, b, level):
90 transl_d = self.transl_d
92 if transl_d.has_key(href):
93 b.href = transl_d[href]
95 root_folder.walk_depth(Transl(transl_d))
97 outfile = open(output_filename, 'w')
98 root_folder.walk_depth(writer(outfile, prune))
105 if __name__ == '__main__':