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