]> git.phdru.name Git - bookmarks_db.git/blobdiff - bkmk2db.py
Fix(Robot): Stop splitting and un-splitting URLs
[bookmarks_db.git] / bkmk2db.py
index 1e652828692665bfeb64ae242bdb0ca0f9774dbd..629668d4cbc99fe7dd8690376bfa6b0875b22d4c 100755 (executable)
-#! /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. 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 = 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.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()