]> git.phdru.name Git - bookmarks_db.git/blob - set-real_title.py
Minor refactoring
[bookmarks_db.git] / set-real_title.py
1 #! /usr/bin/env python
2 """Run through the bookmarks database and set name to real title
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
12
13
14 def run():
15    from getopt import getopt
16    optlist, args = getopt(sys.argv[1:], "s")
17
18    report_stats = 1
19
20    for _opt, _arg in optlist:
21       if _opt == '-s':
22          report_stats = 0
23    try:
24       del _opt, _arg
25    except NameError:
26       pass
27
28    if report_stats:
29       print "Broytman set-real_title, Copyright (C) 2003 PhiloSoft Design"
30
31    if args:
32       sys.stderr.write("set-real_title: too many arguments\n")
33       sys.stderr.write("Usage: set-real_title [-s]\n")
34       sys.exit(1)
35
36    from storage import storage
37    storage = storage()
38
39    if report_stats:
40       sys.stdout.write("Loading %s: " % storage.filename)
41       sys.stdout.flush()
42
43    root_folder = storage.load()
44    from bkmk_objects import make_linear
45    make_linear(root_folder)
46    objects = len(root_folder.linear)
47
48    if report_stats:
49       print "Ok"
50
51
52    changed = 0
53    for object_no in range(objects):
54       object = root_folder.linear[object_no]
55
56       if object.isBookmark:
57          if not hasattr(object, "real_title"):
58             continue
59
60          real_title = object.real_title
61          if not real_title:
62             real_title = object.href
63          if object.name <> real_title:
64             object.name = real_title
65             changed += 1
66
67
68    if changed and report_stats:
69       sys.stdout.write("Saving %s: " % storage.filename)
70       sys.stdout.flush()
71
72    if not changed and report_stats:
73       sys.stdout.write("No need to save data\n")
74       sys.stdout.flush()
75
76    if changed:
77       storage.store(root_folder)
78
79    if changed and report_stats:
80       print "Ok"
81       print objects, "objects passed"
82       print changed, "objects changed"
83
84
85 if __name__ == '__main__':
86    run()