X-Git-Url: https://git.phdru.name/?a=blobdiff_plain;f=bkmk2db.py;h=34fca60d21fa8ced2434430a1c0de314440d4f33;hb=54576c927fe40509d146212dce65c555148a22c5;hp=39ddea6cc8f682e3c30810eb3345358e2b7521ed;hpb=2e82a937f80392639176d9a414b55ffb8164ebca;p=bookmarks_db.git diff --git a/bkmk2db.py b/bkmk2db.py index 39ddea6..34fca60 100755 --- a/bkmk2db.py +++ b/bkmk2db.py @@ -1,32 +1,27 @@ -#! /usr/local/bin/python -O -""" - Convert Netscape Navigator's bookmarks.html to FLAD database +#! /usr/bin/env python +"""Convert Netscape Navigator's or Mozilla's bookmarks.html to a database - Written by BroytMann, Jun 1997 - Mar 1999. Copyright (C) 1997-1999 PhiloSoft Design +This file is a part of Bookmarks database and Internet robot. """ -import sys, os, stat, string -from getopt import getopt +__author__ = "Oleg Broytman " +__copyright__ = "Copyright (C) 1997-2012 PhiloSoft Design" +__license__ = "GNU GPL" -import bkmk_parser -from formatter import AbstractFormatter, NullWriter +import sys, os +from getopt import getopt +from bkmk_parser import BkmkParser def run(): - optlist, args = getopt(sys.argv[1:], "gits") + optlist, args = getopt(sys.argv[1:], "is") - show_pbar = 1 - to_text = 0 - to_gf = 0 + show_pbar = True report_stats = 1 for _opt, _arg in optlist: - if _opt == '-g': - to_gf = 1 if _opt == '-i': show_pbar = 0 - if _opt == '-t': - to_text = 1 if _opt == '-s': report_stats = 0 try: @@ -37,6 +32,7 @@ def run(): 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] @@ -44,44 +40,29 @@ def run(): 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 tty_pbar import ttyProgressBar + from m_lib.pbar.tty_pbar import ttyProgressBar except ImportError: show_pbar = 0 if show_pbar: try: - size = os.stat(filename)[stat.ST_SIZE] + size = os.path.getsize(filename) except: print filename, ": no such file" sys.exit(1) - fmt = AbstractFormatter(NullWriter()) - if to_text: - parser = bkmk_parser.Bookmarks2Text(fmt) - elif to_gf: - parser = bkmk_parser.Bookmarks2Gadfly(fmt) - else: - parser = bkmk_parser.Bookmarks2Flad(fmt) - - - if report_stats: - str = "Converting " + filename + " to " - if to_text: - str = "text" - elif to_gf: - str = "GadFly database" - else: - str = "FLAD database" - - sys.stdout.write("Converting %s to %s: " % (filename, str)) - sys.stdout.flush() - if show_pbar: pbar = ttyProgressBar(0, size) lng = 0 @@ -92,39 +73,34 @@ def run(): else: dos_add = 0 # UNIX' and Mac's len() counts CR or LF correct - try: - f = open(filename, 'r') - except IOError, msg: - print filename, ":", msg - sys.exit(1) - header = open("header", 'w') - line_no = 0 + infile = open(filename, 'r') + parser = BkmkParser() - while 1: - line = f.readline() - if not line: - break + line_no = 0 + lng = 0 + ok = 1 + for line in infile: if show_pbar: lng = lng + len(line) + dos_add pbar.display(lng) - line = string.strip(line) + #line = line.strip() line_no = line_no + 1 try: parser.feed(line) + except: + ok = 0 + break - if parser.outfile: # Write header until HTML parser start writing outfile - if header: - header.close() - header = None - else: - header.write(line + '\n') + try: + parser.close() + except: + ok = 0 - except: - break # I need total number of lines; interpreter will print traceback on exit + infile.close() if show_pbar: del pbar @@ -132,11 +108,18 @@ def run(): if report_stats: print "Ok" print line_no, "lines proceed" - print parser.urls_no, "urls found" - print parser.record_no, "records created" + print parser.urls, "urls found" + print parser.objects, "objects created" - parser.close() - f.close() + 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__':