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