From f6081669a09b955db071361127c9e194f40504e8 Mon Sep 17 00:00:00 2001 From: goon-foss Date: Mon, 12 Oct 2026 10:02:39 +0200 Subject: [PATCH] fix(movies): okladki pandanetwork z Adult Empire zamiast wygasajacego wp.com Zgloszenie 6799253d: filmy Tushy Raw bez okladek, linki dzialaja. Okladki sieci pandanetwork (i*.wp.com/pandanetwork.club/.../h.jpg) to kopie okladek Adult Empire pod tym samym numerem produktu; zrodlo oddaje 404, a pamiec wp.com wygasa (40 z 40 losowych martwych). Normalizacja nowych filmow podmienia adres na imgs1cdn.adultempire.com/products//h.jpg. Jednorazowo na produkcji przepisane 51 900 okladek (kopia starych adresow w movies_poster_backup_20261012), probka 80 z 80 zywych z VPS. Zgodnosc numeru z filmem sprawdzona po tytulach i wzrokowo na okladkach. Co-Authored-By: Claude Opus 5.5 --- app/normalize/movies.py | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/app/normalize/movies.py b/app/normalize/movies.py index 5dc01ca..dcad137 100644 --- a/app/normalize/movies.py +++ b/app/normalize/movies.py @@ -1,6 +1,7 @@ """RawMovie → NormalizedMovie. Reuse normalize_studio/performer/tag z scenes.py.""" from __future__ import annotations +import re from dataclasses import dataclass, field from datetime import date @@ -16,6 +17,24 @@ from app.normalize.scenes import ( from app.normalize.text import clean_description, normalize, slugify, unescape_html +# Okladki z sieci pandanetwork (i*.wp.com/pandanetwork.club/.../h.jpg) to kopie okladek +# Adult Empire pod tym samym numerem produktu. Zrodlo oddaje juz 404, a pamiec podreczna wp.com +# wygasa: 2026-10-12 40 z 40 losowych okladek martwych, zgloszenie 6799253d (Tushy Raw bez +# okladek). Oryginal z Adult Empire jest pod numerem z nazwy pliku (sprawdzone wzrokowo i po +# tytulach na probce). +_PANDA_POSTER_RE = re.compile(r"pandanetwork\.club/.*/(\d{6,8})h(?:-\d)?\.jpe?g", re.IGNORECASE) + + +def stable_poster_url(url: str | None) -> str | None: + if not url: + return url + m = _PANDA_POSTER_RE.search(url) + if not m: + return url + pid = m.group(1) + return f"https://imgs1cdn.adultempire.com/products/{pid[-2:]}/{pid}h.jpg" + + @dataclass class NormalizedMovie: external_id: str @@ -55,7 +74,7 @@ def normalize_movie(raw: RawMovie) -> NormalizedMovie: director=raw.director, country=raw.country, rating=raw.rating, - poster_url=raw.poster_url, + poster_url=stable_poster_url(raw.poster_url), backdrop_url=raw.backdrop_url, url=raw.url, studio=normalize_studio(raw.studio) if raw.studio else None,