]> git.phdru.name Git - bookmarks_db.git/blob - bkmk-add.py
TODO: Configuration file
[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
8 __author__ = "Oleg Broytman <phd@phdru.name>"
9 __copyright__ = "Copyright (C) 2002-2014 PhiloSoft Design"
10 __license__ = "GNU GPL"
11
12 import sys, os, time
13 from bkmk_objects import Bookmark
14 from robots import robot
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
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    bookmark.parent = None
56
57    global robot
58    robot = robot(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       del bookmark.parent
68       root_folder.append(bookmark)
69
70       if report_stats:
71          sys.stdout.write("Storing %s: " % storage.filename)
72          sys.stdout.flush()
73
74       storage.store(root_folder)
75
76       if report_stats:
77          print "Ok"
78
79
80 if __name__ == '__main__':
81    run()