]> git.phdru.name Git - bookmarks_db.git/blob - bkmk-add.py
Feat: Set shebang to `python3`
[bookmarks_db.git] / bkmk-add.py
1 #! /usr/bin/env python3
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-2023 PhiloSoft Design"
10 __license__ = "GNU GPL"
11
12 import sys
13 import time
14
15 from bkmk_objects import Bookmark
16 from robots import robot
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
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     bookmark.parent = None
58
59     global _robot
60     _robot = robot(None)
61
62     if _robot.check_url(bookmark):  # get real title and last modified date
63         if title:  # forced title
64             bookmark.name = title
65         elif hasattr(bookmark, "real_title"):
66             bookmark.name = bookmark.real_title
67         if report_stats:
68             sys.stdout.write("Adding %s with title '%s'\n"
69                              % (href, bookmark.name))
70         del bookmark.parent
71         root_folder.append(bookmark)
72
73         if report_stats:
74             sys.stdout.write("Storing %s: " % storage.filename)
75             sys.stdout.flush()
76
77         storage.store(root_folder)
78
79         if report_stats:
80             print("Ok")
81
82
83 if __name__ == '__main__':
84     run()