"""pornditt.com — KVS (kt_player) direct stream extractor. Patrz app/extractors/tubes/_kvs.py. User bug 2026-05-31 (scene 40f118e1): "Pornditt łapie reklamę zamiast video". pornditt był na _vps_blocked_fallback (WebView), gdzie scrape łapał VAST preroll (trafostatic) zamiast contentu. Identyczny silnik jak yespornvip: flashvars `video_url`/`video_alt_url` = `function/0/...get_file/...` + `license_code`; VPS dociera (HTTP 200). Resolve server-side: decode + follow 302 → portable CDN (twa.tgprn.com, time-bound, NIE IP/cookie-bound — zweryfikowane cross-IP 2026-06-01 fresh session → 206 video/mp4). Native, multi-quality, zero WebView/reklam. NB: runtime `window.flashvars.video_url` pokazuje już ZDEKODOWANY plain get_file, ale raw HTML (server-fetch) ma formę `function/0/...` + license — dekodujemy sami (_kvs.real_url). """ from __future__ import annotations from app.extractors._models import StreamSource from app.extractors.tubes import _kvs _BASE = "https://v.pornditt.com" def extract(page_url: str, *, timeout: float = 60.0) -> list[StreamSource] | None: return _kvs.resolve_kvs(page_url, base_url=_BASE, timeout=timeout)