X-Git-Url: https://git.phdru.name/?p=bookmarks_db.git;a=blobdiff_plain;f=sort_db.py;h=03026e6db3501a05d7f0de92734881b0229f9d5c;hp=9a478bf75c394513411e762c2ccc2cdb9d4a30cf;hb=c88cb7a75e7caf1d67466cfa107981d95115fa0c;hpb=a04eaa0346e8aa5ad86a195f8f4d36487ebfe09c diff --git a/sort_db.py b/sort_db.py index 9a478bf..03026e6 100755 --- a/sort_db.py +++ b/sort_db.py @@ -20,101 +20,101 @@ import sys class SortBy(object): - def __init__(self, sort_by): - self.sort_by = sort_by + def __init__(self, sort_by): + self.sort_by = sort_by - def __call__(self, o1, o2): - try: - attr1 = int(getattr(o1, self.sort_by)) - except (AttributeError, TypeError, ValueError): - return 1 + def __call__(self, o1, o2): + try: + attr1 = int(getattr(o1, self.sort_by)) + except (AttributeError, TypeError, ValueError): + return 1 - try: - attr2 = int(getattr(o2, self.sort_by)) - except (AttributeError, TypeError, ValueError): - return -1 + try: + attr2 = int(getattr(o2, self.sort_by)) + except (AttributeError, TypeError, ValueError): + return -1 - return cmp(attr1, attr2) + return cmp(attr1, attr2) def walk_linear(linear, walker): - for object in linear: - if object.isBookmark: - walker.bookmark(object, 0) + for object in linear: + if object.isBookmark: + walker.bookmark(object, 0) def run(): - from getopt import getopt - optlist, args = getopt(sys.argv[1:], "avmztrs") - - sort_by = "last_modified" - reverse = 0 - report_stats = 1 - - for _opt, _arg in optlist: - if _opt == '-a': - sort_by = "add_date" - elif _opt == '-v': - sort_by = "last_visit" - elif _opt == '-m': - sort_by = "last_modified" - elif _opt == '-z': - sort_by = "size" - elif _opt == '-t': - sort_by = "last_tested" - elif _opt == '-r': - reverse = 1 - elif _opt == '-s': - report_stats = 0 - try: - del _opt, _arg - except NameError: - pass - - from storage import storage - storage = storage() - - if report_stats: - sys.stdout.write("Loading %s: " % storage.filename) - sys.stdout.flush() - - root_folder = storage.load() - - if report_stats: - print("Ok") - sys.stdout.write("Sorting (by %s): " % sort_by) - sys.stdout.flush() - - from bkmk_objects import make_linear - make_linear(root_folder) - - linear = root_folder.linear - del linear[0] # exclude root folder from sorting - - by = SortBy(sort_by) - linear.sort(by) - - from writers import writer - output_filename = "%s-sorted_by-%s" % (writer.filename, sort_by) - - if reverse: - linear.reverse() - output_filename = output_filename + "-reverse" - - if report_stats: - print("done") - sys.stdout.write("Writing %s: " % output_filename) - sys.stdout.flush() - - outfile = open(output_filename, 'w') - writer = writer(outfile) - writer.root_folder(root_folder) - walk_linear(linear, writer) - outfile.close() - - if report_stats: - print("Ok") + from getopt import getopt + optlist, args = getopt(sys.argv[1:], "avmztrs") + + sort_by = "last_modified" + reverse = 0 + report_stats = 1 + + for _opt, _arg in optlist: + if _opt == '-a': + sort_by = "add_date" + elif _opt == '-v': + sort_by = "last_visit" + elif _opt == '-m': + sort_by = "last_modified" + elif _opt == '-z': + sort_by = "size" + elif _opt == '-t': + sort_by = "last_tested" + elif _opt == '-r': + reverse = 1 + elif _opt == '-s': + report_stats = 0 + try: + del _opt, _arg + except NameError: + pass + + from storage import storage + storage = storage() + + if report_stats: + sys.stdout.write("Loading %s: " % storage.filename) + sys.stdout.flush() + + root_folder = storage.load() + + if report_stats: + print("Ok") + sys.stdout.write("Sorting (by %s): " % sort_by) + sys.stdout.flush() + + from bkmk_objects import make_linear + make_linear(root_folder) + + linear = root_folder.linear + del linear[0] # exclude root folder from sorting + + by = SortBy(sort_by) + linear.sort(by) + + from writers import writer + output_filename = "%s-sorted_by-%s" % (writer.filename, sort_by) + + if reverse: + linear.reverse() + output_filename = output_filename + "-reverse" + + if report_stats: + print("done") + sys.stdout.write("Writing %s: " % output_filename) + sys.stdout.flush() + + outfile = open(output_filename, 'w') + writer = writer(outfile) + writer.root_folder(root_folder) + walk_linear(linear, writer) + outfile.close() + + if report_stats: + print("Ok") if __name__ == '__main__': - run() + run()