From 0d70ab099a55f747046a4693ff847b18d88ce33d Mon Sep 17 00:00:00 2001 From: monosans Date: Thu, 16 Jun 2022 10:22:11 +0300 Subject: [PATCH] Improve sorting code --- CHANGELOG.md | 5 +++++ main.py | 22 +++++++++++----------- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f66ab03..7d1c001 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # YYYY-MM-DD +## 2022-06-16 + +- Edit uvloop marker. +- Improve sorting code. + ## 2022-05-28 - Remove some sources. diff --git a/main.py b/main.py index 67006a9..10a9093 100755 --- a/main.py +++ b/main.py @@ -82,6 +82,14 @@ class Folder: self.path.mkdir(parents=True, exist_ok=True) +def speed_sorting_key(proxy: Proxy) -> float: + return proxy.timeout + + +def alphabet_sorting_key(proxy: Proxy) -> Tuple[int, ...]: + return tuple(map(int, proxy.socket_address.replace(":", ".").split("."))) + + class ProxyScraperChecker: """HTTP, SOCKS4, SOCKS5 proxies scraper and checker.""" @@ -313,22 +321,14 @@ class ProxyScraperChecker: @property def sorted_proxies(self) -> Dict[str, List[Proxy]]: - key = self._sorting_key + key: Union[ + Callable[[Proxy], float], Callable[[Proxy], Tuple[int, ...]] + ] = (speed_sorting_key if self.sort_by_speed else alphabet_sorting_key) return { proto: sorted(proxies, key=key) for proto, proxies in self.proxies.items() } - @property - def _sorting_key( - self, - ) -> Union[Callable[[Proxy], float], Callable[[Proxy], Tuple[int, ...]]]: - if self.sort_by_speed: - return lambda proxy: proxy.timeout - return lambda proxy: tuple( - map(int, proxy.socket_address.replace(":", ".").split(".")) - ) - @property def _progress(self) -> Progress: return Progress(