"""tubepornclassic.com, TXXX network (ten sam silnik co vjav). HLS przez wspólny tor. SPA bez strumienia w HTML; `videofile.php` → dekod → get_file → `f=video.m3u8` → HLS na *.ahcdn.com. Wszystko w `_txxx.extract_hls`, tu tylko host i wyłuskanie id ze ścieżki `/videos///`. Sprawdzone 2026-09-07: get_file wybity z IP VPS-a gra z łącza domowego (206, manifest 40 KB), czyli klucz nie jest IP-bound; sam VPS na get_file dostaje 429 z wyzwaniem cookie, które `/proxy/hls` już zna po vjav. """ from __future__ import annotations import logging import re from app.extractors._models import StreamSource from app.extractors.tubes import _txxx log = logging.getLogger(__name__) _BASE = "https://tubepornclassic.com" _VIDEO_ID_RE = re.compile(r"/videos/(\d+)/") def extract(page_url: str, *, timeout: float = 60.0) -> list[StreamSource] | None: m = _VIDEO_ID_RE.search(page_url) if not m: log.info("tubepornclassic: brak video id w %s", page_url) return None return _txxx.extract_hls(_BASE, page_url, m.group(1), tag="tubepornclassic", timeout=timeout)