sane-bt-search: add "--sort-by size" option

This commit is contained in:
2025-07-20 23:25:19 +00:00
parent 3b458d5337
commit f8d2dbca62

View File

@@ -50,6 +50,7 @@ logger = logging.getLogger(__name__)
class SortMethod(Enum):
Balanced = "balanced"
Seeders = "seeders"
Size = "size"
Tracker = "tracker"
def __str__(self) -> str:
@@ -346,11 +347,13 @@ class Client:
def sort_results(torrents: list[Torrent], by: SortMethod) -> list[Torrent]:
def key(t: Torrent) -> tuple[int, int, Torrent]:
rank_seeders = -t.seeders
rank_size = -t.size
# TODO: `Balanced` should consider `size` and `pub_date`
return {
SortMethod.Balanced: (t.tracker.quality, rank_seeders, t.tracker.order, t),
SortMethod.Seeders: (rank_seeders, t.tracker.quality, t.tracker.order, t),
SortMethod.Tracker: (t.tracker.quality, t.tracker.order, rank_seeders, t),
SortMethod.Balanced: (t.tracker.quality, rank_seeders, t.tracker.order, rank_size, t),
SortMethod.Seeders: (rank_seeders, t.tracker.quality, t.tracker.order, rank_size, t),
SortMethod.Size: (rank_size, t.tracker.quality, rank_seeders, t.tracker.order, t),
SortMethod.Tracker: (t.tracker.quality, t.tracker.order, rank_seeders, rank_size, t),
}[by]
return sorted(torrents, key=key)