diff --git a/app/api/movies.py b/app/api/movies.py index c26b3af..ee93b6a 100644 --- a/app/api/movies.py +++ b/app/api/movies.py @@ -251,6 +251,20 @@ def _movie_to_out(session: Session, movie: Movie, *, device_id: str = LEGACY_DEV if has_subhost: pb_rows = [p for p in pb_rows if p.origin not in _MOVIE_LANDING_HIDE] pb_rows = sorted(pb_rows, key=lambda p: _movie_origin_priority(p.origin)) + # Dedup po realnym celu: 3 mirrory dooplay (mangoporn/pandamovies/streamporn) + # zapisują TEN SAM embed hostera jako osobne wiersze (np. luluvid/e/X z każdego + # mirrora) → film miał ~100 linków, z czego ~połowa to ten sam film (bug-report + # 41ca1fa4). Zostawiamy pierwszy = najwyższy priorytet (sort wyżej). + seen_targets: set[str] = set() + deduped: list[MoviePlaybackSource] = [] + for p in pb_rows: + target = (p.embed_url or p.stream_url or p.page_url or "").strip() + if target and target in seen_targets: + continue + if target: + seen_targets.add(target) + deduped.append(p) + pb_rows = deduped playback_sources = [PlaybackSourceOut.model_validate(p) for p in pb_rows] is_fav = session.get(FavoriteMovie, (device_id, movie.id)) is not None