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,