Files
proxy-scraper-checker/proxy_scraper_checker/sort.py
T
2024-09-18 18:23:01 +03:00

24 lines
628 B
Python

from __future__ import annotations
import math
from typing import TYPE_CHECKING
from aiohttp_socks import ProxyType
if TYPE_CHECKING:
from .proxy import Proxy
PROTOCOL_ORDER = (ProxyType.HTTP, ProxyType.SOCKS4, ProxyType.SOCKS5)
def protocol_sort_key(proxy: Proxy, /) -> tuple[int, ProxyType]:
return (PROTOCOL_ORDER.index(proxy.protocol), proxy.protocol)
def natural_sort_key(proxy: Proxy, /) -> tuple[int, ...]:
return (proxy.protocol.value, *map(int, proxy.host.split(".")), proxy.port)
def timeout_sort_key(proxy: Proxy, /) -> float:
return proxy.timeout if proxy.timeout is not None else math.inf