-#! /usr/bin/env python
-"""
- 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. Copyright (C) 1997-2003 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 = 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
+import os
+import sys
- 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()
+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 <phd@phdru.name>"
+__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()