2 """Sort bookmarks DB according to a rule:
9 -r - reverse the sort order
11 This file is a part of Bookmarks database and Internet robot.
14 __version__ = "$Revision$"[11:-2]
15 __revision__ = "$Id$"[5:-2]
16 __date__ = "$Date$"[7:-2]
17 __author__ = "Oleg Broytman <phd@phdru.name>"
18 __copyright__ = "Copyright (C) 2000-2011 PhiloSoft Design"
19 __license__ = "GNU GPL"
25 def __init__(self, sort_by):
26 self.sort_by = sort_by
28 def __call__(self, o1, o2):
30 attr1 = int(getattr(o1, self.sort_by))
31 except (AttributeError, TypeError, ValueError):
35 attr2 = int(getattr(o2, self.sort_by))
36 except (AttributeError, TypeError, ValueError):
39 return cmp(attr1, attr2)
42 def walk_linear(linear, walker):
45 walker.bookmark(object, 0)
49 from getopt import getopt
50 optlist, args = getopt(sys.argv[1:], "avmztrs")
52 sort_by = "last_modified"
56 for _opt, _arg in optlist:
60 sort_by = "last_visit"
62 sort_by = "last_modified"
66 sort_by = "last_tested"
76 from storage import storage
80 sys.stdout.write("Loading %s: " % storage.filename)
83 root_folder = storage.load()
87 sys.stdout.write("Sorting (by %s): " % sort_by)
90 from bkmk_objects import make_linear
91 make_linear(root_folder)
93 linear = root_folder.linear
94 del linear[0] # exclude root folder from sorting
99 from writers import writer
100 output_filename = "%s-sorted_by-%s" % (writer.filename, sort_by)
104 output_filename = output_filename + "-reverse"
108 sys.stdout.write("Writing %s: " % output_filename)
111 outfile = open(output_filename, 'w')
112 writer = writer(outfile)
113 writer.root_folder(root_folder)
114 walk_linear(linear, writer)
121 if __name__ == '__main__':