]> git.phdru.name Git - bookmarks_db.git/blob - bkmk-add.py
Version 3.3.1.
[bookmarks_db.git] / bkmk-add.py
1 #! /usr/local/bin/python -O
2 """
3    Add a bookmark to the database.
4
5    Written by BroytMann, Aug 2002. Copyright (C) 2002 PhiloSoft Design
6 """
7
8
9 import sys, os, time, urllib
10 from bkmk_objects import Bookmark
11 from Robots.bkmk_rsimple import robot_simple
12
13 import tempfile
14 tempfname = "bkmk-add" + tempfile.gettempprefix() + "tmp"
15
16
17 def run():
18    from getopt import getopt
19    optlist, args = getopt(sys.argv[1:], "t:")
20
21    report_stats = 1
22    title = ''
23
24    for _opt, _arg in optlist:
25       if _opt == '-s':
26          report_stats = 0
27       elif _opt == '-t':
28          title = _arg
29    try:
30       del _opt, _arg
31    except NameError:
32       pass
33
34    if len(args) <> 1:
35       sys.stderr.write("bkmk-add: too many or too few arguments\n")
36       sys.stderr.write("Usage: bkmk-add [-s] [-t title] url\n")
37       sys.exit(1)
38
39    from storage import storage, import_storage
40    storage = storage()
41
42    if report_stats:
43       sys.stdout.write("Loading %s: " % storage.filename)
44       sys.stdout.flush()
45
46    root_folder = storage.load()
47
48    if report_stats:
49       print "Ok"
50
51    href = args[0]
52    now = int(time.time())
53    bookmark = Bookmark(href, str(now), '0', '0')
54    bookmark.name = ''
55
56    robot = robot_simple(tempfname, None)
57    url_type, url_rest = urllib.splittype(href)
58
59    if robot.check_url(bookmark, url_type, url_rest): # get real title and last modified date
60       if title: # forced title
61          bookmark.name = title
62       elif hasattr(bookmark, "real_title"):
63          bookmark.name = bookmark.real_title
64       if report_stats:
65          sys.stdout.write("Adding %s with title '%s'\n" % (href, bookmark.name))
66       root_folder.append(bookmark)
67
68       if report_stats:
69          sys.stdout.write("Storing %s: " % storage.filename)
70          sys.stdout.flush()
71
72       storage.store(root_folder)
73
74       if report_stats:
75          print "Ok"
76
77
78    try:
79       os.unlink(tempfname)
80    except os.error:
81       pass
82
83
84 if __name__ == '__main__':
85    run()