]> git.phdru.name Git - bookmarks_db.git/blob - bkmk-add.py
Rename CWD to PROG_DIR
[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 __author__ = "Oleg Broytman <phd@phdru.name>"
8 __copyright__ = "Copyright (C) 2002-2012 PhiloSoft Design"
9 __license__ = "GNU GPL"
10
11 import sys, os, time
12 from bkmk_objects import Bookmark
13 from Robots.bkmk_rsimple import robot_simple
14
15
16 def run():
17    from getopt import getopt
18    optlist, args = getopt(sys.argv[1:], "t:")
19
20    report_stats = 1
21    title = ''
22
23    for _opt, _arg in optlist:
24       if _opt == '-s':
25          report_stats = 0
26       elif _opt == '-t':
27          title = _arg
28    try:
29       del _opt, _arg
30    except NameError:
31       pass
32
33    if len(args) <> 1:
34       sys.stderr.write("bkmk-add: too many or too few arguments\n")
35       sys.stderr.write("Usage: bkmk-add [-s] [-t title] url\n")
36       sys.exit(1)
37
38    from storage import storage, import_storage
39    storage = storage()
40
41    if report_stats:
42       sys.stdout.write("Loading %s: " % storage.filename)
43       sys.stdout.flush()
44
45    root_folder = storage.load()
46
47    if report_stats:
48       print "Ok"
49
50    href = args[0]
51    now = int(time.time())
52    bookmark = Bookmark(href, str(now), '0', '0')
53    bookmark.name = ''
54
55    robot = robot_simple(None)
56
57    if robot.check_url(bookmark): # get real title and last modified date
58       if title: # forced title
59          bookmark.name = title
60       elif hasattr(bookmark, "real_title"):
61          bookmark.name = bookmark.real_title
62       if report_stats:
63          sys.stdout.write("Adding %s with title '%s'\n" % (href, bookmark.name))
64       root_folder.append(bookmark)
65
66       if report_stats:
67          sys.stdout.write("Storing %s: " % storage.filename)
68          sys.stdout.flush()
69
70       storage.store(root_folder)
71
72       if report_stats:
73          print "Ok"
74
75
76 if __name__ == '__main__':
77    run()