From aec3300e400732db9b293400bf470a52ab2dc5f5 Mon Sep 17 00:00:00 2001 From: JL Kruger Date: Sat, 28 Mar 2026 14:32:20 +0200 Subject: [PATCH] Add playlist link button to watchlist pages; fix LastCinema slug MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Each panel now has a full-width '→ OPEN FULL PLAYLIST ON YOUTUBE' link below the embed — resolves YouTube showing single video instead of playlist - Link inherits panel accent color, inverts on hover - Renamed TheLastCinema-watchlist.md → LastCinema-watchlist.md so build.py generates lastcinema.html (matching hub link) - Regenerated all 5 collection pages Co-Authored-By: Claude Sonnet 4.6 --- ...a-watchlist.md => LastCinema-watchlist.md} | 0 Watchlists/analogfrontier.html | 39 +++++++++++++++++ Watchlists/build.py | 23 ++++++++++ Watchlists/contentaddictionarchive.html | 42 +++++++++++++++++++ Watchlists/culturaldecay.html | 39 +++++++++++++++++ Watchlists/lastcinema.html | 40 +++++++++++++++++- Watchlists/soundscapeanomalies.html | 42 +++++++++++++++++++ 7 files changed, 223 insertions(+), 2 deletions(-) rename Watchlists/{TheLastCinema-watchlist.md => LastCinema-watchlist.md} (100%) diff --git a/Watchlists/TheLastCinema-watchlist.md b/Watchlists/LastCinema-watchlist.md similarity index 100% rename from Watchlists/TheLastCinema-watchlist.md rename to Watchlists/LastCinema-watchlist.md diff --git a/Watchlists/analogfrontier.html b/Watchlists/analogfrontier.html index 69e2b90..21c172a 100644 --- a/Watchlists/analogfrontier.html +++ b/Watchlists/analogfrontier.html @@ -255,6 +255,24 @@ .panel-teal { --border-color: var(--wl-teal); } .panel-green { --border-color: var(--wl-green); } .panel-toucan { --border-color: var(--wl-toucan); } + + .playlist-link { + display: block; + padding: 0.85rem 1.25rem; + font-weight: 700; + text-transform: uppercase; + font-size: 0.9rem; + letter-spacing: 0.08em; + color: var(--border-color); + text-decoration: none; + border-top: 1px solid var(--border-color); + transition: background 100ms ease, color 100ms ease; + } + + .playlist-link:hover { + background: var(--border-color); + color: var(--bg-void); + } @@ -289,6 +307,9 @@ allowfullscreen> + + → OPEN FULL PLAYLIST ON YOUTUBE +
@@ -303,6 +324,9 @@ allowfullscreen> + + → OPEN FULL PLAYLIST ON YOUTUBE +
@@ -317,6 +341,9 @@ allowfullscreen> + + → OPEN FULL PLAYLIST ON YOUTUBE +
@@ -331,6 +358,9 @@ allowfullscreen> + + → OPEN FULL PLAYLIST ON YOUTUBE +
@@ -345,6 +375,9 @@ allowfullscreen> + + → OPEN FULL PLAYLIST ON YOUTUBE +
@@ -359,6 +392,9 @@ allowfullscreen> + + → OPEN FULL PLAYLIST ON YOUTUBE +
@@ -373,6 +409,9 @@ allowfullscreen> + + → OPEN FULL PLAYLIST ON YOUTUBE +
diff --git a/Watchlists/build.py b/Watchlists/build.py index 836740e..5db7e44 100644 --- a/Watchlists/build.py +++ b/Watchlists/build.py @@ -112,6 +112,8 @@ def build_panels_html(playlists: list) -> str: embed_url = f"https://www.youtube.com/embed/videoseries?list={pl['list_id']}" title_esc = escape(pl['name'].upper()) + playlist_url = f"https://www.youtube.com/playlist?list={pl['list_id']}" + panels.append(f"""
@@ -125,6 +127,9 @@ def build_panels_html(playlists: list) -> str: allowfullscreen>
+ + → OPEN FULL PLAYLIST ON YOUTUBE +
""") return '\n'.join(panels) @@ -405,6 +410,24 @@ def generate_html(data: dict, slug: str) -> str: .panel-teal {{ --border-color: var(--wl-teal); }} .panel-green {{ --border-color: var(--wl-green); }} .panel-toucan {{ --border-color: var(--wl-toucan); }} + + .playlist-link {{ + display: block; + padding: 0.85rem 1.25rem; + font-weight: 700; + text-transform: uppercase; + font-size: 0.9rem; + letter-spacing: 0.08em; + color: var(--border-color); + text-decoration: none; + border-top: 1px solid var(--border-color); + transition: background 100ms ease, color 100ms ease; + }} + + .playlist-link:hover {{ + background: var(--border-color); + color: var(--bg-void); + }} diff --git a/Watchlists/contentaddictionarchive.html b/Watchlists/contentaddictionarchive.html index bebfba4..fdaa5fd 100644 --- a/Watchlists/contentaddictionarchive.html +++ b/Watchlists/contentaddictionarchive.html @@ -256,6 +256,24 @@ .panel-teal { --border-color: var(--wl-teal); } .panel-green { --border-color: var(--wl-green); } .panel-toucan { --border-color: var(--wl-toucan); } + + .playlist-link { + display: block; + padding: 0.85rem 1.25rem; + font-weight: 700; + text-transform: uppercase; + font-size: 0.9rem; + letter-spacing: 0.08em; + color: var(--border-color); + text-decoration: none; + border-top: 1px solid var(--border-color); + transition: background 100ms ease, color 100ms ease; + } + + .playlist-link:hover { + background: var(--border-color); + color: var(--bg-void); + } @@ -290,6 +308,9 @@ allowfullscreen> + + → OPEN FULL PLAYLIST ON YOUTUBE +
@@ -304,6 +325,9 @@ allowfullscreen> + + → OPEN FULL PLAYLIST ON YOUTUBE +
@@ -318,6 +342,9 @@ allowfullscreen> + + → OPEN FULL PLAYLIST ON YOUTUBE +
@@ -332,6 +359,9 @@ allowfullscreen> + + → OPEN FULL PLAYLIST ON YOUTUBE +
@@ -346,6 +376,9 @@ allowfullscreen> + + → OPEN FULL PLAYLIST ON YOUTUBE +
@@ -360,6 +393,9 @@ allowfullscreen> + + → OPEN FULL PLAYLIST ON YOUTUBE +
@@ -374,6 +410,9 @@ allowfullscreen> + + → OPEN FULL PLAYLIST ON YOUTUBE +
@@ -388,6 +427,9 @@ allowfullscreen> + + → OPEN FULL PLAYLIST ON YOUTUBE +
diff --git a/Watchlists/culturaldecay.html b/Watchlists/culturaldecay.html index 7fcad4f..553dfaf 100644 --- a/Watchlists/culturaldecay.html +++ b/Watchlists/culturaldecay.html @@ -255,6 +255,24 @@ .panel-teal { --border-color: var(--wl-teal); } .panel-green { --border-color: var(--wl-green); } .panel-toucan { --border-color: var(--wl-toucan); } + + .playlist-link { + display: block; + padding: 0.85rem 1.25rem; + font-weight: 700; + text-transform: uppercase; + font-size: 0.9rem; + letter-spacing: 0.08em; + color: var(--border-color); + text-decoration: none; + border-top: 1px solid var(--border-color); + transition: background 100ms ease, color 100ms ease; + } + + .playlist-link:hover { + background: var(--border-color); + color: var(--bg-void); + } @@ -289,6 +307,9 @@ allowfullscreen> + + → OPEN FULL PLAYLIST ON YOUTUBE +
@@ -303,6 +324,9 @@ allowfullscreen> + + → OPEN FULL PLAYLIST ON YOUTUBE +
@@ -317,6 +341,9 @@ allowfullscreen> + + → OPEN FULL PLAYLIST ON YOUTUBE +
@@ -331,6 +358,9 @@ allowfullscreen> + + → OPEN FULL PLAYLIST ON YOUTUBE +
@@ -345,6 +375,9 @@ allowfullscreen> + + → OPEN FULL PLAYLIST ON YOUTUBE +
@@ -359,6 +392,9 @@ allowfullscreen> + + → OPEN FULL PLAYLIST ON YOUTUBE +
@@ -373,6 +409,9 @@ allowfullscreen> + + → OPEN FULL PLAYLIST ON YOUTUBE +
diff --git a/Watchlists/lastcinema.html b/Watchlists/lastcinema.html index 355541e..755714a 100644 --- a/Watchlists/lastcinema.html +++ b/Watchlists/lastcinema.html @@ -254,6 +254,24 @@ .panel-teal { --border-color: var(--wl-teal); } .panel-green { --border-color: var(--wl-green); } .panel-toucan { --border-color: var(--wl-toucan); } + + .playlist-link { + display: block; + padding: 0.85rem 1.25rem; + font-weight: 700; + text-transform: uppercase; + font-size: 0.9rem; + letter-spacing: 0.08em; + color: var(--border-color); + text-decoration: none; + border-top: 1px solid var(--border-color); + transition: background 100ms ease, color 100ms ease; + } + + .playlist-link:hover { + background: var(--border-color); + color: var(--bg-void); + } @@ -288,6 +306,9 @@ allowfullscreen> + + → OPEN FULL PLAYLIST ON YOUTUBE +
@@ -302,6 +323,9 @@ allowfullscreen> + + → OPEN FULL PLAYLIST ON YOUTUBE +
@@ -316,6 +340,9 @@ allowfullscreen> + + → OPEN FULL PLAYLIST ON YOUTUBE +
@@ -330,6 +357,9 @@ allowfullscreen> + + → OPEN FULL PLAYLIST ON YOUTUBE +
@@ -344,6 +374,9 @@ allowfullscreen> + + → OPEN FULL PLAYLIST ON YOUTUBE +
@@ -358,6 +391,9 @@ allowfullscreen> + + → OPEN FULL PLAYLIST ON YOUTUBE +
@@ -366,9 +402,9 @@ // Lightbox: show on first load const lightbox = document.getElementById('lightbox'); - if (!localStorage.getItem('watchlist-thelastcinema-seen')) { + if (!localStorage.getItem('watchlist-lastcinema-seen')) { lightbox.style.display = 'flex'; - localStorage.setItem('watchlist-thelastcinema-seen', '1'); + localStorage.setItem('watchlist-lastcinema-seen', '1'); } function closeLightbox() { lightbox.style.display = 'none'; } diff --git a/Watchlists/soundscapeanomalies.html b/Watchlists/soundscapeanomalies.html index 8e09966..a520e83 100644 --- a/Watchlists/soundscapeanomalies.html +++ b/Watchlists/soundscapeanomalies.html @@ -256,6 +256,24 @@ .panel-teal { --border-color: var(--wl-teal); } .panel-green { --border-color: var(--wl-green); } .panel-toucan { --border-color: var(--wl-toucan); } + + .playlist-link { + display: block; + padding: 0.85rem 1.25rem; + font-weight: 700; + text-transform: uppercase; + font-size: 0.9rem; + letter-spacing: 0.08em; + color: var(--border-color); + text-decoration: none; + border-top: 1px solid var(--border-color); + transition: background 100ms ease, color 100ms ease; + } + + .playlist-link:hover { + background: var(--border-color); + color: var(--bg-void); + } @@ -290,6 +308,9 @@ allowfullscreen> + + → OPEN FULL PLAYLIST ON YOUTUBE +
@@ -304,6 +325,9 @@ allowfullscreen> + + → OPEN FULL PLAYLIST ON YOUTUBE +
@@ -318,6 +342,9 @@ allowfullscreen> + + → OPEN FULL PLAYLIST ON YOUTUBE +
@@ -332,6 +359,9 @@ allowfullscreen> + + → OPEN FULL PLAYLIST ON YOUTUBE +
@@ -346,6 +376,9 @@ allowfullscreen> + + → OPEN FULL PLAYLIST ON YOUTUBE +
@@ -360,6 +393,9 @@ allowfullscreen> + + → OPEN FULL PLAYLIST ON YOUTUBE +
@@ -374,6 +410,9 @@ allowfullscreen> + + → OPEN FULL PLAYLIST ON YOUTUBE +
@@ -388,6 +427,9 @@ allowfullscreen> + + → OPEN FULL PLAYLIST ON YOUTUBE +