From c1e6c7ad491b561daaa32d21dd07b15e118569a1 Mon Sep 17 00:00:00 2001 From: goon-foss Date: Sun, 2 Aug 2026 16:30:21 +0200 Subject: [PATCH] fix(thumbs): odsiej zrodla oddajace atrapy zamiast miniatur (znikaly po merge) 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). --- app/api/scenes.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/app/api/scenes.py b/app/api/scenes.py index 60a562e..02716e7 100644 --- a/app/api/scenes.py +++ b/app/api/scenes.py @@ -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: