]> git.phdru.name Git - bookmarks_db.git/blob - bkmk-add.py
Added docstrings, __{version,revision,etc}__ boilerplates.
[bookmarks_db.git] / bkmk-add.py
1 #! /usr/bin/env python
2 """Add a bookmark to the database
3
4 This file is a part of Bookmarks database and Internet robot.
5 """
6
7 __version__ = "$Revision$"[11:-2]
8 __revision__ = "$Id$"[5:-2]
9 __date__ = "$Date$"[7:-2]
10 __author__ = "Oleg Broytman <phd@phdru.name>"
11 __copyright__ = "Copyright (C) 2002-2011 PhiloSoft Design"
12 __license__ = "GNU GPL"
13
14 import sys, os, time
15 from bkmk_objects import Bookmark
16 from Robots.bkmk_rsimple import robot_simple
17
18
19 def run():
20    from getopt import getopt
21    optlist, args = getopt(sys.argv[1:], "t:")
22
23    report_stats = 1
24    title = ''
25
26    for _opt, _arg in optlist:
27       if _opt == '-s':
28          report_stats = 0
29       elif _opt == '-t':
30          title = _arg
31    try:
32       del _opt, _arg
33    except NameError:
34       pass
35
36    if len(args) <> 1:
37       sys.stderr.write("bkmk-add: too many or too few arguments\n")
38       sys.stderr.write("Usage: bkmk-add [-s] [-t title] url\n")
39       sys.exit(1)
40
41    from storage import storage, import_storage
42    storage = storage()
43
44    if report_stats:
45       sys.stdout.write("Loading %s: " % storage.filename)
46       sys.stdout.flush()
47
48    root_folder = storage.load()
49
50    if report_stats:
51       print "Ok"
52
53    href = args[0]
54    now = int(time.time())
55    bookmark = Bookmark(href, str(now), '0', '0')
56    bookmark.name = ''
57
58    robot = robot_simple(None)
59
60    if robot.check_url(bookmark): # get real title and last modified date
61       if title: # forced title
62          bookmark.name = title
63       elif hasattr(bookmark, "real_title"):
64          bookmark.name = bookmark.real_title
65       if report_stats:
66          sys.stdout.write("Adding %s with title '%s'\n" % (href, bookmark.name))
67       root_folder.append(bookmark)
68
69       if report_stats:
70          sys.stdout.write("Storing %s: " % storage.filename)
71          sys.stdout.flush()
72
73       storage.store(root_folder)
74
75       if report_stats:
76          print "Ok"
77
78
79 if __name__ == '__main__':
80    run()