X-Git-Url: https://git.phdru.name/?a=blobdiff_plain;f=sort_db.py;h=03026e6db3501a05d7f0de92734881b0229f9d5c;hb=953a1db81fd336fcb4c0702bc53d3e06958f3b64;hp=014fcaeb505fe93d0a6c479a3aa19bd635cb5a38;hpb=832eb757ef7f81abf1e431ce16f368c10dd57962;p=bookmarks_db.git diff --git a/sort_db.py b/sort_db.py index 014fcae..03026e6 100755 --- a/sort_db.py +++ b/sort_db.py @@ -9,114 +9,112 @@ -r - reverse the sort order This file is a part of Bookmarks database and Internet robot. + """ -__version__ = "$Revision$"[11:-2] -__revision__ = "$Id$"[5:-2] -__date__ = "$Date$"[7:-2] __author__ = "Oleg Broytman " -__copyright__ = "Copyright (C) 2000-2011 PhiloSoft Design" +__copyright__ = "Copyright (C) 2000-2017 PhiloSoft Design" __license__ = "GNU GPL" import sys -class SortBy: - def __init__(self, sort_by): - self.sort_by = sort_by +class SortBy(object): + 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()