X-Git-Url: https://git.phdru.name/?a=blobdiff_plain;f=db2bkmk.py;h=7d1d9aa19f1c46fdebd47e45f859ab7a7c7e2ba7;hb=refs%2Fheads%2Fmaster;hp=14b02e4b71cf3e96946662341ab13fb33d1b1282;hpb=c1c90856aeffcf8f2bcb7abf39934d5e0f8be36d;p=bookmarks_db.git diff --git a/db2bkmk.py b/db2bkmk.py index 14b02e4..7d1d9aa 100755 --- a/db2bkmk.py +++ b/db2bkmk.py @@ -1,108 +1,109 @@ -#! /usr/bin/env python -"""Convert a bkmk database back to bookmarks.html (or other format defined by writer) +#! /usr/bin/env python3 +"""Convert a bkmk database back to bookmarks.html +(or other format defined by writer) This file is a part of Bookmarks database and Internet robot. """ __author__ = "Oleg Broytman " -__copyright__ = "Copyright (C) 2000-2017 PhiloSoft Design" +__copyright__ = "Copyright (C) 2000-2023 PhiloSoft Design" __license__ = "GNU GPL" import sys def run(): - from getopt import getopt - optlist, args = getopt(sys.argv[1:], "sp:o:t:r") - - report_stats = 1 - prune = None - - from writers import writer - output_filename = writer.filename - - transl = 0 - transl_name = "" # dictionary translation; default is no translation - - for _opt, _arg in optlist: - if _opt == '-s': - report_stats = 0 - if _opt == '-p': - prune = _arg - if _opt == '-o': - output_filename = _arg - if _opt == '-t': - transl = 1 - transl_name = _arg - if _opt == '-r': - transl = 2 - try: - del _opt, _arg - except NameError: - pass - - if args: - sys.stderr.write("db2bkmk: too many arguments\n") - sys.stderr.write("Usage: db2bkmk [-s] [-p prune_folder] [-o filename] [-t trans] [-r]\n") - sys.exit(1) - - from storage import storage - storage = storage() - - if report_stats: - sys.stdout.write("Loading %s: " % storage.filename) - sys.stdout.flush() - - root_folder = storage.load() - - if report_stats: - print("Ok") - sys.stdout.write("Writing %s: " % output_filename) - sys.stdout.flush() - - - if transl: - new_ext = str(transl) - transl_d = {} - - from m_lib.flad import fladm - transl_db = fladm.load_from_file(transl_name, fladm.check_record, ["URL1", "URL2"], [""]) - # This prevents any other key to appear in transl_db ^ - - # Generate translation dictionary (hash table) - if transl == 1: - for record in transl_db: - transl_d[record["URL1"]] = record["URL2"] - elif transl == 2: - for record in transl_db: - transl_d[record["URL2"]] = record["URL1"] - else: - raise ValueError, "transl (%d) must be 1 or 2" % transl - - del transl_db # Save few bytes of memory - - from bkmk_objects import Walker - class Transl(Walker): - def __init__(self, transl_d): - self.transl_d = transl_d - - def bookmark(self, b, level): - href = b.href - transl_d = self.transl_d - - if transl_d.has_key(href): - b.href = transl_d[href] - - root_folder.walk_depth(Transl(transl_d)) - - - outfile = open(output_filename, 'w') - root_folder.walk_depth(writer(outfile, prune)) - outfile.close() - - if report_stats: - print("Ok") + from getopt import getopt + optlist, args = getopt(sys.argv[1:], "sp:o:t:r") + + report_stats = 1 + prune = None + + from writers import writer + output_filename = writer.filename + + transl = 0 + transl_name = "" # dictionary translation; default is no translation + + for _opt, _arg in optlist: + if _opt == '-s': + report_stats = 0 + if _opt == '-p': + prune = _arg + if _opt == '-o': + output_filename = _arg + if _opt == '-t': + transl = 1 + transl_name = _arg + if _opt == '-r': + transl = 2 + try: + del _opt, _arg + except NameError: + pass + + if args: + sys.stderr.write("db2bkmk: too many arguments\n") + sys.stderr.write("Usage: db2bkmk [-s] [-p prune_folder]" + " [-o filename] [-t trans] [-r]\n") + sys.exit(1) + + from storage import storage + storage = storage() + + if report_stats: + sys.stdout.write("Loading %s: " % storage.filename) + sys.stdout.flush() + + root_folder = storage.load() + + if report_stats: + print("Ok") + sys.stdout.write("Writing %s: " % output_filename) + sys.stdout.flush() + + if transl: + transl_d = {} + + from m_lib.flad import fladm + transl_db = fladm.load_from_file( + transl_name, fladm.check_record, ["URL1", "URL2"], [""]) + # This prevents any other key to appear in transl_db ^ + + # Generate translation dictionary (hash table) + if transl == 1: + for record in transl_db: + transl_d[record["URL1"]] = record["URL2"] + elif transl == 2: + for record in transl_db: + transl_d[record["URL2"]] = record["URL1"] + else: + raise ValueError("transl (%d) must be 1 or 2" % transl) + + del transl_db # Save few bytes of memory + + from bkmk_objects import Walker + + class Transl(Walker): + def __init__(self, transl_d): # noqa: E306 expected 1 blank line + self.transl_d = transl_d + + def bookmark(self, b, level): + href = b.href + transl_d = self.transl_d + + if href in transl_d: + b.href = transl_d[href] + + root_folder.walk_depth(Transl(transl_d)) + + outfile = open(output_filename, 'wt', encoding='utf-8') + root_folder.walk_depth(writer(outfile, prune)) + outfile.close() + + if report_stats: + print("Ok") if __name__ == '__main__': - run() + run()