]> git.phdru.name Git - bookmarks_db.git/blob - bkmk-add.py
Fix(Robot): Stop splitting and un-splitting URLs
[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-2017 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()