Files
proxy-scraper-checker/proxy_scraper_checker/sort.py
T

24 lines
649 B
Python
Raw Normal View History

2023-01-02 00:09:55 +03:00
from __future__ import annotations
2024-09-18 18:23:01 +03:00
import math
2024-06-03 14:08:42 +05:00
from typing import TYPE_CHECKING
2023-01-02 00:09:55 +03:00
2024-01-21 17:45:01 +00:00
from aiohttp_socks import ProxyType
2024-06-03 14:08:42 +05:00
if TYPE_CHECKING:
2024-11-22 14:32:29 +03:00
from proxy_scraper_checker.proxy import Proxy
2023-01-02 00:09:55 +03:00
2024-01-21 17:45:01 +00:00
PROTOCOL_ORDER = (ProxyType.HTTP, ProxyType.SOCKS4, ProxyType.SOCKS5)
2023-01-02 00:09:55 +03:00
2024-01-21 17:45:01 +00:00
2024-06-03 14:08:42 +05:00
def protocol_sort_key(proxy: Proxy, /) -> tuple[int, ProxyType]:
2024-01-21 17:45:01 +00:00
return (PROTOCOL_ORDER.index(proxy.protocol), proxy.protocol)
2023-01-02 00:09:55 +03:00
2024-06-03 14:08:42 +05:00
def natural_sort_key(proxy: Proxy, /) -> tuple[int, ...]:
2024-01-21 17:45:01 +00:00
return (proxy.protocol.value, *map(int, proxy.host.split(".")), proxy.port)
def timeout_sort_key(proxy: Proxy, /) -> float:
2024-09-18 18:23:01 +03:00
return proxy.timeout if proxy.timeout is not None else math.inf