porndish: cache serwisu oddawal dla kazdego adresu ten sam wpis, wiec ~40 tys. scen gralo jeden z dwoch filmow. Strona z ?nc=<godzina> omija cache, kanoniczny adres musi miec ten sam slug, inaczej 502. sxyland: zwiastuny z kafelkow "podobne" (data-trailer) byly brane za film; skasowany plik nowplay podstawial wspolny zastepczy film, teraz HosterDead. fpoxxx: strona skasowanego filmu (no-player) to HosterDead, nie strona z reklama w WebView. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
31 lines
1.4 KiB
Python
31 lines
1.4 KiB
Python
"""fpo.xxx: kontrola usunietego filmu przed oddaniem strony do WebView.
|
|
|
|
Odtwarzanie idzie na telefonie (`fpoxxxResolver.ts`, KVS license_code z IP telefonu). Gdy
|
|
telefon nic nie znajdzie, backend oddawal sama strone jako hoster. Na stronie skasowanego
|
|
filmu (`<div class="no-player">`, "Deleted by the owner request", bez license_code) jedynym
|
|
wideo jest reklama tsyndicate, ktora WebView wylapywal i puszczal jako scene (zgloszenie
|
|
1ee12943, 2026-10-12: "fpoxxx daje reklamy zamiast scen"; ok. 10% zrodel fpoxxx to takie
|
|
strony). Tu taka strona to HosterDead, wiec zrodlo znika zamiast grac reklame.
|
|
"""
|
|
from __future__ import annotations
|
|
|
|
import logging
|
|
|
|
from app.extractors._fetch import fetch_tube_html
|
|
from app.extractors._models import HosterDead, StreamSource, TubePageError
|
|
from app.extractors.tubes import _vps_blocked_fallback
|
|
|
|
log = logging.getLogger(__name__)
|
|
|
|
|
|
def extract(page_url: str, *, timeout: float = 60.0) -> list[StreamSource]:
|
|
try:
|
|
html = fetch_tube_html(page_url, timeout=min(timeout, 20.0))
|
|
except TubePageError:
|
|
raise
|
|
except Exception as e:
|
|
log.info("fpoxxx: strona %s niepobrana (%s), oddaje do WebView", page_url, e)
|
|
return _vps_blocked_fallback.extract(page_url, timeout=timeout)
|
|
if 'class="no-player"' in html and "license_code" not in html:
|
|
raise HosterDead(f"fpoxxx {page_url}: film usuniety (no-player)")
|
|
return _vps_blocked_fallback.extract(page_url, timeout=timeout)
|