video: Where to Watch — provider logos are badges + one real link
TMDB only exposes a single aggregate 'where to watch' link (no per-provider deep links), so N identical links read as broken. Streaming providers are now non-clickable availability badges, followed by ONE accent 'Where to watch ↗' link to the JustWatch/TMDB page. The Plex/Jellyfin tile keeps its real per-item server deep link.
This commit is contained in:
parent
e0b9245ba3
commit
595ea2bfbd
2 changed files with 21 additions and 8 deletions
|
|
@ -415,10 +415,10 @@
|
|||
'" target="_blank" rel="noopener" title="Play on ' + sv + '">' +
|
||||
sicon + '<span class="vd-prov-name">Play on ' + sv + '</span></a>';
|
||||
}
|
||||
// Streaming providers (JustWatch via TMDB) link to the where-to-watch
|
||||
// page. (TMDB only gives one aggregate link, so they share it.) Drop a
|
||||
// provider that's the same service as your server tile (e.g. Plex), so
|
||||
// it isn't listed twice.
|
||||
// Streaming providers: TMDB only gives ONE aggregate 'where to watch'
|
||||
// link (not per-provider), so showing N identical links is misleading.
|
||||
// Render the logos as availability BADGES, then a single link to the
|
||||
// watch page. (Drop a provider matching your server tile, e.g. Plex.)
|
||||
var link = ex.providers_link || '';
|
||||
var srvName = (ex.server && ex.server.server || '').toLowerCase();
|
||||
var provs = (ex.providers || []).filter(function (p) {
|
||||
|
|
@ -428,11 +428,15 @@
|
|||
html += provs.map(function (p) {
|
||||
var img = p.logo ? '<img src="' + esc(p.logo) + '" alt="' + esc(p.name) + '" loading="lazy">'
|
||||
: '<span class="vd-prov-ph">' + esc((p.name || '?').charAt(0)) + '</span>';
|
||||
var inner = img + '<span class="vd-prov-name">' + esc(p.name) + '</span>';
|
||||
return link
|
||||
? '<a class="vd-prov" href="' + esc(link) + '" target="_blank" rel="noopener" title="Where to watch — ' + esc(p.name) + '">' + inner + '</a>'
|
||||
: '<div class="vd-prov" title="' + esc(p.name) + '">' + inner + '</div>';
|
||||
return '<div class="vd-prov vd-prov--badge" title="' + esc(p.name) + '">' + img +
|
||||
'<span class="vd-prov-name">' + esc(p.name) + '</span></div>';
|
||||
}).join('');
|
||||
if (link) {
|
||||
html += '<a class="vd-prov vd-prov--more" href="' + esc(link) +
|
||||
'" target="_blank" rel="noopener" title="See where to watch (JustWatch)">' +
|
||||
'<span class="vd-prov-ph vd-prov-more-ic">↗</span>' +
|
||||
'<span class="vd-prov-name">Where to watch</span></a>';
|
||||
}
|
||||
}
|
||||
ps.hidden = !html;
|
||||
ph.innerHTML = html;
|
||||
|
|
|
|||
|
|
@ -775,6 +775,15 @@ a.vd-prov:hover img, a.vd-prov:hover .vd-prov-ph { border-color: rgba(var(--vd-a
|
|||
border: 0; border-radius: 0; box-shadow: none;
|
||||
}
|
||||
.vd-prov--server .vd-prov-name { color: #6ee7a0; font-weight: 700; }
|
||||
/* streaming providers are informational badges (no per-provider link exists) */
|
||||
.vd-prov--badge { cursor: default; }
|
||||
/* the single real "where to watch" link (JustWatch/TMDB aggregate page) */
|
||||
.vd-prov--more .vd-prov-more-ic {
|
||||
display: flex; align-items: center; justify-content: center; font-size: 24px; font-weight: 800;
|
||||
color: rgb(var(--vd-accent-rgb)); background: rgba(var(--vd-accent-rgb), 0.16);
|
||||
border-color: rgba(var(--vd-accent-rgb), 0.4);
|
||||
}
|
||||
.vd-prov--more .vd-prov-name { color: rgb(var(--vd-accent-rgb)); font-weight: 700; }
|
||||
|
||||
.vd-similar { display: flex; gap: 16px; overflow-x: auto; padding-bottom: 12px; scroll-snap-type: x proximity; }
|
||||
.vd-similar::-webkit-scrollbar { height: 8px; }
|
||||
|
|
|
|||
Loading…
Reference in a new issue