mirror of
https://github.com/4gray/iptvnator.git
synced 2026-10-10 18:36:15 -08:00
fix(portals): stop a remake matching, and let a pin survive its own playlist
Three findings from the latest review pass. `normalizeTitleKeys` strips bracketed segments as tag noise, so "Dune (1984)" normalizes to exactly "dune" — an EXACT match for the 2021 film, ranked above every fuzzy one, with the year never consulted because that tier skipped the gate. Auto-failover could switch the user to the other film entirely. The year is now read out of brackets too, and a stated disagreement rejects the row on either tier. Playback positions are keyed by (playlist, stream), so watching through a pinned alternative stores progress under ITS ids while the page loads the route copy's row. Starting the pin therefore resumed from a position belonging to a different copy — usually zero. It now loads its own. And a pin can point at another copy of the film inside the playlist being viewed, which discovery excludes wholesale: the pinned row was absent from the list, so nothing showed as pinned and Play ignored the preference. The pin is now read before discovery, which keeps that one row. Moves the pin-shaped decisions into the pin module, where the persistence helpers already live. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
ed442da3ca
commit
f0c99fac87
12 files changed
+341
-65
No files matched your search
@@ -210,6 +210,21 @@ Both remain necessary-not-sufficient filters: the two-tier normalized
|
||||
confirmation still runs afterwards, so the looser query never admits "Upgrade"
|
||||
for "Up".
|
||||
|
||||
One row inside the excluded playlist is kept when the caller names it
|
||||
(`keepContentId`): a pin can point at another copy of the film in the playlist
|
||||
being viewed, and dropping that row would leave the preference pointing at
|
||||
nothing. The host therefore reads the pin BEFORE discovery.
|
||||
|
||||
### Same title, different film
|
||||
|
||||
The year gate applies to **both** match tiers, not just the year-stripped one.
|
||||
`normalizeTitleKeys` strips bracketed segments wholesale — they usually hold
|
||||
quality and language tags — so "Dune (1984)" and "Dune" normalize to the same
|
||||
string and the exact tier would accept the remake without ever consulting a
|
||||
year, ranked *above* every fuzzy match. Discovery reads a bracketed year out of
|
||||
the raw title first, and when both sides state a year and they disagree, it is
|
||||
not the same movie. An unknown year still never blocks.
|
||||
|
||||
## Why resolution is lazy
|
||||
|
||||
The `content` table stores no `container_extension`, and
|
||||
|
||||
Reference in new issue
Block a user