X-Git-Url: https://git.phdru.name/?p=bookmarks_db.git;a=blobdiff_plain;f=bkmk2db.py;h=5cf29aed53d4abfe607fb48b56aacdf4329b75cd;hp=e2436f6a4ec06130b46cbae357ebed86d185c4a8;hb=HEAD;hpb=fb5c3b2b91aeeb615d6d6d890491af3fdff69556 diff --git a/bkmk2db.py b/bkmk2db.py index e2436f6..629668d 100755 --- a/bkmk2db.py +++ b/bkmk2db.py @@ -1,124 +1,128 @@ -#! /usr/local/bin/python -O -""" - Convert Netscape Navigator's or Mozilla's bookmarks.html to a database +#! /usr/bin/env python3 +"""Convert Netscape Navigator's or Mozilla's bookmarks.html to a database - Written by BroytMann, Jun 1997 - Aug 2002. Copyright (C) 1997-2002 PhiloSoft Design +This file is a part of Bookmarks database and Internet robot. """ - -import sys, os +from __future__ import print_function from getopt import getopt -from bkmk_parser import BkmkParser - - -def run(): - optlist, args = getopt(sys.argv[1:], "is") - - show_pbar = not __debug__ - 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 +import os +import sys - if show_pbar: - try: - size = os.stat(filename).st_size - 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() +from bkmk_parser import BkmkParser - 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" +__author__ = "Oleg Broytman " +__copyright__ = "Copyright (C) 1997-2023 PhiloSoft Design" +__license__ = "GNU GPL" - if ok: - from storage import storage - storage = storage() - storage.store(parser.root_folder) - else: - import traceback - traceback.print_exc() - sys.exit(1) +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: + # 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()