]> git.phdru.name Git - bookmarks_db.git/blob - bkmk-add.py
"BroytMann" => "Broytman".
[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 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
58    if robot.check_url(bookmark): # get real title and last modified date
59       if title: # forced title
60          bookmark.name = title
61       elif hasattr(bookmark, "real_title"):
62          bookmark.name = bookmark.real_title
63       if report_stats:
64          sys.stdout.write("Adding %s with title '%s'\n" % (href, bookmark.name))
65       root_folder.append(bookmark)
66
67       if report_stats:
68          sys.stdout.write("Storing %s: " % storage.filename)
69          sys.stdout.flush()
70
71       storage.store(root_folder)
72
73       if report_stats:
74          print "Ok"
75
76
77    try:
78       os.unlink(tempfname)
79    except os.error:
80       pass
81
82
83 if __name__ == '__main__':
84    run()