-#! /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()