diff --git a/app/extractors/tubes/hqfap.py b/app/extractors/tubes/hqfap.py index ff918ff..67e233c 100644 --- a/app/extractors/tubes/hqfap.py +++ b/app/extractors/tubes/hqfap.py @@ -57,6 +57,16 @@ def extract(page_url: str, *, timeout: float = 60.0) -> list[StreamSource] | Non log.warning("hqfap: no contentUrl in JSON-LD for %s", page_url) return None + # hqfap migrował: `/upload/videos/video_down.mp4` (+ mirror *.workers.dev) serwuje + # STAŁY ~3MB placeholder dla KAŻDEJ sceny, niezależnie od deklarowanej długości + # (5/5 scen = 3.04MB przy 14-47min, weryfikacja 2026-06-21, browser MediaSource grał + # ten sam stub; user-reports „server down" c382d441/ef10b946). To NIE jest realne + # wideo → traktujemy jak brak źródła (lepiej żadne niż 3MB „server down" clip). + # Realne starsze sceny (cdnde.com / okcdn.ru direct mp4) przechodzą normalnie. + if "/upload/videos/video_down.mp4" in content_url: + log.info("hqfap: stub video_down.mp4 (placeholder, no real video) on %s", page_url) + return None + qm = _QUALITY_RE.search(content_url) quality = f"{qm.group(1)}p" if qm else None return [