"""Hoster fallback dla tubes które blokują VPS IP ale działają z residential IP.

Wzorzec (potwierdzony 2026-05-15 przez Chrome DevTools MCP live debug):
  - xhamster.com: HLS via xplayer.js + obfuscated URLs w window.initials JSON
  - pornditt: KVS kt_player + license_code decoder client-side → <video.src>
  - fpo.xxx: KVS kt_player jak pornditt — identyczny pattern
  - sxylandcom → xtapes.porn → reelshdd.com: iframe redirect chain do direct mp4

WSZYSTKIE działają z desktop/mobile residential IP. Tylko Hetzner Cloud VPS IP
blocked (Cloudflare-level dla xhamster, CDN token IP-bound dla KVS hostów).

Strategia: extractor zwraca `type='hoster'` z scene URL jako embed → mobile
WebView fallback. WebView ma residential ISP IP, INJECTED_JS w PlayerScreen.tsx
skanuje DOM co 1s (linia 805) wyciągając `<video>.src` + XHR/fetch m3u8 — to
łapie URL po decode-ie player JS i posyła do RN przez postMessage. ExoPlayer
swap do native player z prawdziwym URL.

Bez tego fallbacku użytkownik widzi błąd "chwilowy problem z hosterem" (503)
zamiast działającego playera.
"""
from __future__ import annotations

from app.extractors._models import StreamSource


def extract(page_url: str, *, timeout: float = 60.0) -> list[StreamSource]:
    return [
        StreamSource(
            link=page_url,
            quality=None,
            type="hoster",
            referer=page_url,
        )
    ]
