X-Git-Url: https://git.phdru.name/?a=blobdiff_plain;f=bkmk2db.py;h=629668d4cbc99fe7dd8690376bfa6b0875b22d4c;hb=066f29ea81222a8a2ddd4ab1aff131d7fc1ec37f;hp=b8905324ab2d620b04acb03b57dfc920390d54f0;hpb=c1c90856aeffcf8f2bcb7abf39934d5e0f8be36d;p=bookmarks_db.git diff --git a/bkmk2db.py b/bkmk2db.py index b890532..629668d 100755 --- a/bkmk2db.py +++ b/bkmk2db.py @@ -1,128 +1,128 @@ -#! /usr/bin/env python +#! /usr/bin/env python3 """Convert Netscape Navigator's or Mozilla's bookmarks.html to a database This file is a part of Bookmarks database and Internet robot. """ from __future__ import print_function -import sys, os from getopt import getopt +import os +import sys + from bkmk_parser import BkmkParser __author__ = "Oleg Broytman " -__copyright__ = "Copyright (C) 1997-2017 PhiloSoft Design" +__copyright__ = "Copyright (C) 1997-2023 PhiloSoft Design" __license__ = "GNU GPL" def run(): - optlist, args = getopt(sys.argv[1:], "is") - - show_pbar = True - report_stats = 1 - - for _opt, _arg in optlist: - if _opt == '-i': - show_pbar = 0 - if _opt == '-s': - report_stats = 0 - try: - del _opt, _arg - except NameError: - pass - - if args: - if len(args) > 1: - sys.stderr.write("bkmk2db: too many arguments\n") - sys.stderr.write("Usage: bkmk2db [-is] bookmarks.html\n") - sys.exit(1) - - filename = args[0] - - else: - filename = 'bookmarks.html' # good name both for DOS (bookmark.htm) and UNIX - - - if report_stats: - from storage import storage_name - sys.stdout.write("Converting %s to %s: " % (filename, storage_name)) - sys.stdout.flush() - - if show_pbar: - show_pbar = sys.stderr.isatty() - - if show_pbar: - try: - from m_lib.pbar.tty_pbar import ttyProgressBar - except ImportError: - show_pbar = 0 - - if show_pbar: - try: - size = os.path.getsize(filename) - except: - print(filename, ": no such file") - sys.exit(1) - - - if show_pbar: - pbar = ttyProgressBar(0, size) - lng = 0 - - # This is for DOS - it counts CRLF, which len() counts as 1 char! - if os.name == 'dos' or os.name == 'nt' : - dos_add = 1 - else: - dos_add = 0 # UNIX' and Mac's len() counts CR or LF correct - - - infile = open(filename, 'r') - parser = BkmkParser() - - line_no = 0 - lng = 0 - ok = 1 - - for line in infile: - if show_pbar: - lng = lng + len(line) + dos_add - pbar.display(lng) - - #line = line.strip() - line_no = line_no + 1 - - try: - parser.feed(line) - except: - ok = 0 - break - - try: - parser.close() - except: - ok = 0 - - infile.close() - - if show_pbar: - del pbar - - if report_stats: - print("Ok") - print(line_no, "lines proceed") - print(parser.urls, "urls found") - print(parser.objects, "objects created") - - if ok: - from storage import storage - storage = storage() - storage.store(parser.root_folder) - - else: - import traceback - traceback.print_exc() - sys.exit(1) + optlist, args = getopt(sys.argv[1:], "is") + + show_pbar = True + report_stats = 1 + + for _opt, _arg in optlist: + if _opt == '-i': + show_pbar = 0 + if _opt == '-s': + report_stats = 0 + try: + del _opt, _arg + except NameError: + pass + + if args: + if len(args) > 1: + sys.stderr.write("bkmk2db: too many arguments\n") + sys.stderr.write("Usage: bkmk2db [-is] bookmarks.html\n") + sys.exit(1) + + filename = args[0] + + else: + # good name both for DOS (bookmark.htm) and UNIX + filename = 'bookmarks.html' + + if report_stats: + from storage import storage_name + sys.stdout.write("Converting %s to %s: " % (filename, storage_name)) + sys.stdout.flush() + + if show_pbar: + show_pbar = sys.stderr.isatty() + + if show_pbar: + try: + from m_lib.pbar.tty_pbar import ttyProgressBar + except ImportError: + show_pbar = 0 + + if show_pbar: + try: + size = os.path.getsize(filename) + except: + print(filename, ": no such file") + sys.exit(1) + + if show_pbar: + pbar = ttyProgressBar(0, size) + lng = 0 + + # This is for DOS - it counts CRLF, which len() counts as 1 char! + if os.name == 'dos' or os.name == 'nt': + dos_add = 1 + else: + dos_add = 0 # UNIX' and Mac's len() counts CR or LF correct + + infile = open(filename, 'rt') + parser = BkmkParser() + + line_no = 0 + lng = 0 + ok = 1 + + for line in infile: + if show_pbar: + lng = lng + len(line) + dos_add + pbar.display(lng) + + # line = line.strip() + line_no = line_no + 1 + + try: + parser.feed(line) + except: + ok = 0 + break + + try: + parser.close() + except: + ok = 0 + + infile.close() + + if show_pbar: + del pbar + + if report_stats: + print("Ok") + print(line_no, "lines proceed") + print(parser.urls, "urls found") + print(parser.objects, "objects created") + + if ok: + from storage import storage + storage = storage() + storage.store(parser.root_folder) + + else: + import traceback + traceback.print_exc() + sys.exit(1) if __name__ == '__main__': - run() + run()