X-Git-Url: https://git.phdru.name/?a=blobdiff_plain;f=sort_db.py;h=4dd117e51219cbf818d3c9ce4db004b676e07cf2;hb=ac86c51f608426450dfecc62163a52c9879d49ca;hp=03026e6db3501a05d7f0de92734881b0229f9d5c;hpb=c88cb7a75e7caf1d67466cfa107981d95115fa0c;p=bookmarks_db.git diff --git a/sort_db.py b/sort_db.py index 03026e6..4dd117e 100755 --- a/sort_db.py +++ b/sort_db.py @@ -1,4 +1,4 @@ -#! /usr/bin/env python +#! /usr/bin/env python3 """Sort bookmarks DB according to a rule: -a - by AddDate -v - by LastVisit @@ -13,29 +13,22 @@ This file is a part of Bookmarks database and Internet robot. """ __author__ = "Oleg Broytman " -__copyright__ = "Copyright (C) 2000-2017 PhiloSoft Design" +__copyright__ = "Copyright (C) 2000-2023 PhiloSoft Design" __license__ = "GNU GPL" import sys -class SortBy(object): +class SortKey(object): def __init__(self, sort_by): self.sort_by = sort_by - def __call__(self, o1, o2): + def __call__(self, o1): try: - attr1 = int(getattr(o1, self.sort_by)) + return 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 - - return cmp(attr1, attr2) - def walk_linear(linear, walker): for object in linear: @@ -89,10 +82,10 @@ def run(): make_linear(root_folder) linear = root_folder.linear - del linear[0] # exclude root folder from sorting + del linear[0] # exclude root folder from sorting - by = SortBy(sort_by) - linear.sort(by) + sort_key = SortKey(sort_by) + linear.sort(key=sort_key) from writers import writer output_filename = "%s-sorted_by-%s" % (writer.filename, sort_by) @@ -106,7 +99,7 @@ def run(): sys.stdout.write("Writing %s: " % output_filename) sys.stdout.flush() - outfile = open(output_filename, 'w') + outfile = open(output_filename, 'wt', encoding='utf-8') writer = writer(outfile) writer.root_folder(root_folder) walk_linear(linear, writer)