fix(thumbs): odsiej zrodla oddajace atrapy zamiast miniatur (znikaly po merge)
Some checks are pending
Backend tests / test (push) Waiting to run

Zgloszenia a01dc891 / 2fbba822 / b437d5f7 ('3 zrodla live, a miniaturki nie ma',
'jakby przy merge scen cos ginelo'). Diagnoza: WSZYSTKIE zrodla mialy
thumbnail_url w bazie, wiec problem byl w wyborze. Apka bierze PIERWSZE zrodlo z
ustawionym URL-em, a po scaleniu na czolo listy wchodzilo zrodlo ktore formalnie
'ma miniature', ale realnie oddaje smiec - dzialajaca lezala nizej i nigdy nie
byla uzyta. Przy jednym zrodle bralo sie to dobre, stad objaw dopiero po merge.

Dwa hosty dopisane do _is_rotting_thumb (istniejacy mechanizm zerowania martwych):
- imgs.xiaoshenke.net (fullporner): HTTP 200 z ~153-bajtowa ATRAPA zamiast obrazu,
- tn.sextu.com (fullvideosporn): 429 dla IP datacenter, wiec nasze image-proxy tej
  miniatury NIGDY nie pobierze (znany problem tego zrodla).

Zweryfikowane na wszystkich trzech zgloszonych scenach: bylo 153B/404/429,
teraz 200 i realne obrazy (22287 / 21633 / 32820 B).
This commit is contained in:
goon-foss 2026-08-02 16:30:21 +02:00
parent 580e4db535
commit c1e6c7ad49

View file

@ -668,7 +668,20 @@ def _is_rotting_thumb(url: str) -> bool:
"""sxyprn/trafficdeposit miniaturki są czasowo podpisane i rotują (asset 404 po
~tygodniach, nie odświeżalne server-side; bug 2026-06-10). De-prioritize je w wyborze
slim-thumbnaila używamy tylko gdy scena nie ma żadnej innej miniaturki."""
return "trafficdeposit.com" in url
if "trafficdeposit.com" in url:
return True
# imgs.xiaoshenke.net (fullporner) oddaje 200 z ~153-bajtową ATRAPĄ zamiast obrazu.
# Formalnie „ma miniaturę", więc przechodziło warunek `find(s => s.thumbnail_url)`
# w apce i WYGRYWAŁO jako pierwsze źródło — a działająca miniatura (np. hqporner,
# 22 kB) leżała niżej i nigdy nie była użyta. Objawiało się dopiero po scaleniu scen
# („3 źródła live, a miniaturki nie ma", zgłoszenia a01dc891 / 2fbba822 / b437d5f7):
# przy jednym źródle brało się to dobre, po merge na czoło wchodziła atrapa.
if "imgs.xiaoshenke.net" in url:
return True
# tn.sextu.com (fullvideosporn) — CDN odrzuca ruch z IP datacenter (429), więc nasze
# image-proxy NIGDY tej miniatury nie pobierze (znany problem tego źródła). Traktujemy
# jak martwą, żeby scena po merge sięgnęła po działającą z innego źródła.
return "tn.sextu.com" in url
def _needs_proxy(url: str) -> bool: