]> git.phdru.name Git - bookmarks_db.git/blobdiff - bkmk-add.py
Fix(Robot): Stop splitting and un-splitting URLs
[bookmarks_db.git] / bkmk-add.py
index 921eebe5153700e0f05e4c709f87864333482e4f..f268277507c759188b6729f604e60502425f4c55 100755 (executable)
@@ -1,85 +1,84 @@
-#! /usr/local/bin/python -O
-"""
-   Add a bookmark to the database.
+#! /usr/bin/env python3
+"""Add a bookmark to the database
+
+This file is a part of Bookmarks database and Internet robot.
 
-   Written by BroytMann, Aug 2002. Copyright (C) 2002 PhiloSoft Design
 """
 
+__author__ = "Oleg Broytman <phd@phdru.name>"
+__copyright__ = "Copyright (C) 2002-2023 PhiloSoft Design"
+__license__ = "GNU GPL"
 
-import sys, os, time, urllib
-from bkmk_objects import Bookmark
-from Robots.bkmk_rsimple import robot_simple
+import sys
+import time
 
-import tempfile
-tempfname = "bkmk-add" + tempfile.gettempprefix() + "tmp"
+from bkmk_objects import Bookmark
+from robots import robot
 
 
 def run():
-   from getopt import getopt
-   optlist, args = getopt(sys.argv[1:], "t:")
-
-   report_stats = 1
-   title = ''
-
-   for _opt, _arg in optlist:
-      if _opt == '-s':
-         report_stats = 0
-      elif _opt == '-t':
-         title = _arg
-   try:
-      del _opt, _arg
-   except NameError:
-      pass
+    from getopt import getopt
+    optlist, args = getopt(sys.argv[1:], "t:")
 
-   if len(args) <> 1:
-      sys.stderr.write("bkmk-add: too many or too few arguments\n")
-      sys.stderr.write("Usage: bkmk-add [-s] [-t title] url\n")
-      sys.exit(1)
+    report_stats = 1
+    title = ''
 
-   from storage import storage, import_storage
-   storage = storage()
+    for _opt, _arg in optlist:
+        if _opt == '-s':
+            report_stats = 0
+        elif _opt == '-t':
+            title = _arg
+    try:
+        del _opt, _arg
+    except NameError:
+        pass
 
-   if report_stats:
-      sys.stdout.write("Loading %s: " % storage.filename)
-      sys.stdout.flush()
+    if len(args) != 1:
+        sys.stderr.write("bkmk-add: too many or too few arguments\n")
+        sys.stderr.write("Usage: bkmk-add [-s] [-t title] url\n")
+        sys.exit(1)
 
-   root_folder = storage.load()
+    from storage import storage
+    storage = storage()
 
-   if report_stats:
-      print "Ok"
+    if report_stats:
+        sys.stdout.write("Loading %s: " % storage.filename)
+        sys.stdout.flush()
 
-   href = args[0]
-   now = int(time.time())
-   bookmark = Bookmark(href, str(now), '0', '0')
-   bookmark.name = ''
+    root_folder = storage.load()
 
-   robot = robot_simple(tempfname, None)
-   url_type, url_rest = urllib.splittype(href)
+    if report_stats:
+        print("Ok")
 
-   if robot.check_url(bookmark, url_type, url_rest): # get real title and last modified date
-      if title: # forced title
-         bookmark.name = title
-      elif hasattr(bookmark, "real_title"):
-         bookmark.name = bookmark.real_title
-      if report_stats:
-         sys.stdout.write("Adding %s with title '%s'\n" % (href, bookmark.name))
-      root_folder.append(bookmark)
+    href = args[0]
+    now = int(time.time())
+    bookmark = Bookmark(href, str(now), '0', '0')
+    bookmark.name = ''
+    bookmark.parent = None
 
-      if report_stats:
-         sys.stdout.write("Storing %s: " % storage.filename)
-         sys.stdout.flush()
+    global _robot
+    _robot = robot(None)
 
-      storage.store(root_folder)
+    if _robot.check_url(bookmark):  # get real title and last modified date
+        if title:  # forced title
+            bookmark.name = title
+        elif hasattr(bookmark, "real_title"):
+            bookmark.name = bookmark.real_title
+        if report_stats:
+            sys.stdout.write("Adding %s with title '%s'\n"
+                             % (href, bookmark.name))
+        del bookmark.parent
+        root_folder.append(bookmark)
 
-      if report_stats:
-         print "Ok"
+        if report_stats:
+            sys.stdout.write("Storing %s: " % storage.filename)
+            sys.stdout.flush()
 
+        storage.store(root_folder)
 
-   try:
-      os.unlink(tempfname)
-   except os.error:
-      pass
+        if report_stats:
+            print("Ok")
 
 
 if __name__ == '__main__':
-   run()
+    run()