1 #! /usr/bin/env python3
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.
15 __author__ = "Oleg Broytman <phd@phdru.name>"
16 __copyright__ = "Copyright (C) 2000-2023 PhiloSoft Design"
17 __license__ = "GNU GPL"
22 class SortKey(object):
23 def __init__(self, sort_by):
24 self.sort_by = sort_by
26 def __call__(self, o1):
28 return int(getattr(o1, self.sort_by))
29 except (AttributeError, TypeError, ValueError):
33 def walk_linear(linear, walker):
36 walker.bookmark(object, 0)
40 from getopt import getopt
41 optlist, args = getopt(sys.argv[1:], "avmztrs")
43 sort_by = "last_modified"
47 for _opt, _arg in optlist:
51 sort_by = "last_visit"
53 sort_by = "last_modified"
57 sort_by = "last_tested"
67 from storage import storage
71 sys.stdout.write("Loading %s: " % storage.filename)
74 root_folder = storage.load()
78 sys.stdout.write("Sorting (by %s): " % sort_by)
81 from bkmk_objects import make_linear
82 make_linear(root_folder)
84 linear = root_folder.linear
85 del linear[0] # exclude root folder from sorting
87 sort_key = SortKey(sort_by)
88 linear.sort(key=sort_key)
90 from writers import writer
91 output_filename = "%s-sorted_by-%s" % (writer.filename, sort_by)
95 output_filename = output_filename + "-reverse"
99 sys.stdout.write("Writing %s: " % output_filename)
102 outfile = open(output_filename, 'wt', encoding='utf-8')
103 writer = writer(outfile)
104 writer.root_folder(root_folder)
105 walk_linear(linear, writer)
112 if __name__ == '__main__':