]> git.phdru.name Git - bookmarks_db.git/blob - set-real_title.py
Added docstrings, __{version,revision,etc}__ boilerplates.
[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 __version__ = "$Revision$"[11:-2]
8 __revision__ = "$Id$"[5:-2]
9 __date__ = "$Date$"[7:-2]
10 __author__ = "Oleg Broytman <phd@phdru.name>"
11 __copyright__ = "Copyright (C) 2002-2011 PhiloSoft Design"
12 __license__ = "GNU GPL"
13
14 import sys
15
16
17 def run():
18    from getopt import getopt
19    optlist, args = getopt(sys.argv[1:], "s")
20
21    report_stats = 1
22
23    for _opt, _arg in optlist:
24       if _opt == '-s':
25          report_stats = 0
26    try:
27       del _opt, _arg
28    except NameError:
29       pass
30
31    if report_stats:
32       print "Broytman set-real_title, Copyright (C) 2003 PhiloSoft Design"
33
34    if args:
35       sys.stderr.write("set-real_title: too many arguments\n")
36       sys.stderr.write("Usage: set-real_title [-s]\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    from bkmk_objects import make_linear
48    make_linear(root_folder)
49    objects = len(root_folder.linear)
50
51    if report_stats:
52       print "Ok"
53
54
55    changed = 0
56    for object_no in range(objects):
57       object = root_folder.linear[object_no]
58
59       if object.isBookmark:
60          if not hasattr(object, "real_title"):
61             continue
62
63          real_title = object.real_title
64          if not real_title:
65             real_title = object.href
66          if object.name <> real_title:
67             object.name = real_title
68             changed += 1
69
70
71    if changed and report_stats:
72       sys.stdout.write("Saving %s: " % storage.filename)
73       sys.stdout.flush()
74
75    if not changed and report_stats:
76       sys.stdout.write("No need to save data\n")
77       sys.stdout.flush()
78
79    if changed:
80       storage.store(root_folder)
81
82    if changed and report_stats:
83       print "Ok"
84       print objects, "objects passed"
85       print changed, "objects changed"
86
87
88 if __name__ == '__main__':
89    run()