Add playlist link button to watchlist pages; fix LastCinema slug

- 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 <noreply@anthropic.com>
This commit is contained in:
2026-03-28 14:32:20 +02:00
parent dd51655792
commit aec3300e40
7 changed files with 223 additions and 2 deletions

View File

@@ -255,6 +255,24 @@
.panel-teal { --border-color: var(--wl-teal); } .panel-teal { --border-color: var(--wl-teal); }
.panel-green { --border-color: var(--wl-green); } .panel-green { --border-color: var(--wl-green); }
.panel-toucan { --border-color: var(--wl-toucan); } .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);
}
</style> </style>
</head> </head>
<body> <body>
@@ -289,6 +307,9 @@
allowfullscreen> allowfullscreen>
</iframe> </iframe>
</div> </div>
<a href="https://www.youtube.com/playlist?list=PL9IOjFRFjrOlaSN20n8BVup9Sw5pECF_N" target="_blank" rel="noopener" class="playlist-link">
→ OPEN FULL PLAYLIST ON YOUTUBE
</a>
</section> </section>
<section class="playlist-panel panel-green"> <section class="playlist-panel panel-green">
@@ -303,6 +324,9 @@
allowfullscreen> allowfullscreen>
</iframe> </iframe>
</div> </div>
<a href="https://www.youtube.com/playlist?list=PL705B75747F552D89" target="_blank" rel="noopener" class="playlist-link">
→ OPEN FULL PLAYLIST ON YOUTUBE
</a>
</section> </section>
<section class="playlist-panel panel-toucan"> <section class="playlist-panel panel-toucan">
@@ -317,6 +341,9 @@
allowfullscreen> allowfullscreen>
</iframe> </iframe>
</div> </div>
<a href="https://www.youtube.com/playlist?list=PLTESZvBAvs-21WEss2-tAc88YUVJvbHjt" target="_blank" rel="noopener" class="playlist-link">
→ OPEN FULL PLAYLIST ON YOUTUBE
</a>
</section> </section>
<section class="playlist-panel panel-teal"> <section class="playlist-panel panel-teal">
@@ -331,6 +358,9 @@
allowfullscreen> allowfullscreen>
</iframe> </iframe>
</div> </div>
<a href="https://www.youtube.com/playlist?list=PLGPon0XahgRzdHHRcXIXOTYncuiTmihTQ" target="_blank" rel="noopener" class="playlist-link">
→ OPEN FULL PLAYLIST ON YOUTUBE
</a>
</section> </section>
<section class="playlist-panel panel-green"> <section class="playlist-panel panel-green">
@@ -345,6 +375,9 @@
allowfullscreen> allowfullscreen>
</iframe> </iframe>
</div> </div>
<a href="https://www.youtube.com/playlist?list=PLnwRAEdhoHKvgCHahY_Geef80sn98Q1yq" target="_blank" rel="noopener" class="playlist-link">
→ OPEN FULL PLAYLIST ON YOUTUBE
</a>
</section> </section>
<section class="playlist-panel panel-toucan"> <section class="playlist-panel panel-toucan">
@@ -359,6 +392,9 @@
allowfullscreen> allowfullscreen>
</iframe> </iframe>
</div> </div>
<a href="https://www.youtube.com/playlist?list=PLSui2JfAn3uzFXSPuBOFdyUMOhjSQK_0O" target="_blank" rel="noopener" class="playlist-link">
→ OPEN FULL PLAYLIST ON YOUTUBE
</a>
</section> </section>
<section class="playlist-panel panel-teal"> <section class="playlist-panel panel-teal">
@@ -373,6 +409,9 @@
allowfullscreen> allowfullscreen>
</iframe> </iframe>
</div> </div>
<a href="https://www.youtube.com/playlist?list=PL1Qu_o1uczDrmRp0aaTDPfIChzMG3BsnG" target="_blank" rel="noopener" class="playlist-link">
→ OPEN FULL PLAYLIST ON YOUTUBE
</a>
</section> </section>
</main> </main>

View File

@@ -112,6 +112,8 @@ def build_panels_html(playlists: list) -> str:
embed_url = f"https://www.youtube.com/embed/videoseries?list={pl['list_id']}" embed_url = f"https://www.youtube.com/embed/videoseries?list={pl['list_id']}"
title_esc = escape(pl['name'].upper()) title_esc = escape(pl['name'].upper())
playlist_url = f"https://www.youtube.com/playlist?list={pl['list_id']}"
panels.append(f""" panels.append(f"""
<section class="playlist-panel panel-{color}"> <section class="playlist-panel panel-{color}">
<div class="panel-header"> <div class="panel-header">
@@ -125,6 +127,9 @@ def build_panels_html(playlists: list) -> str:
allowfullscreen> allowfullscreen>
</iframe> </iframe>
</div> </div>
<a href="{playlist_url}" target="_blank" rel="noopener" class="playlist-link">
→ OPEN FULL PLAYLIST ON YOUTUBE
</a>
</section>""") </section>""")
return '\n'.join(panels) return '\n'.join(panels)
@@ -405,6 +410,24 @@ def generate_html(data: dict, slug: str) -> str:
.panel-teal {{ --border-color: var(--wl-teal); }} .panel-teal {{ --border-color: var(--wl-teal); }}
.panel-green {{ --border-color: var(--wl-green); }} .panel-green {{ --border-color: var(--wl-green); }}
.panel-toucan {{ --border-color: var(--wl-toucan); }} .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);
}}
</style> </style>
</head> </head>
<body> <body>

View File

@@ -256,6 +256,24 @@
.panel-teal { --border-color: var(--wl-teal); } .panel-teal { --border-color: var(--wl-teal); }
.panel-green { --border-color: var(--wl-green); } .panel-green { --border-color: var(--wl-green); }
.panel-toucan { --border-color: var(--wl-toucan); } .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);
}
</style> </style>
</head> </head>
<body> <body>
@@ -290,6 +308,9 @@
allowfullscreen> allowfullscreen>
</iframe> </iframe>
</div> </div>
<a href="https://www.youtube.com/playlist?list=PLUby3nb967OCZ9GbPdci0M63b1PcI1TVZ" target="_blank" rel="noopener" class="playlist-link">
→ OPEN FULL PLAYLIST ON YOUTUBE
</a>
</section> </section>
<section class="playlist-panel panel-green"> <section class="playlist-panel panel-green">
@@ -304,6 +325,9 @@
allowfullscreen> allowfullscreen>
</iframe> </iframe>
</div> </div>
<a href="https://www.youtube.com/playlist?list=PLUby3nb967OCq5LsgL2EmoaP9dwlhu2go" target="_blank" rel="noopener" class="playlist-link">
→ OPEN FULL PLAYLIST ON YOUTUBE
</a>
</section> </section>
<section class="playlist-panel panel-toucan"> <section class="playlist-panel panel-toucan">
@@ -318,6 +342,9 @@
allowfullscreen> allowfullscreen>
</iframe> </iframe>
</div> </div>
<a href="https://www.youtube.com/playlist?list=PLUby3nb967ODwpT-Z-ej0dE4EcMIQirxe" target="_blank" rel="noopener" class="playlist-link">
→ OPEN FULL PLAYLIST ON YOUTUBE
</a>
</section> </section>
<section class="playlist-panel panel-teal"> <section class="playlist-panel panel-teal">
@@ -332,6 +359,9 @@
allowfullscreen> allowfullscreen>
</iframe> </iframe>
</div> </div>
<a href="https://www.youtube.com/playlist?list=PLUby3nb967OAuW_pFsPCtQyLp6nqoChHA" target="_blank" rel="noopener" class="playlist-link">
→ OPEN FULL PLAYLIST ON YOUTUBE
</a>
</section> </section>
<section class="playlist-panel panel-green"> <section class="playlist-panel panel-green">
@@ -346,6 +376,9 @@
allowfullscreen> allowfullscreen>
</iframe> </iframe>
</div> </div>
<a href="https://www.youtube.com/playlist?list=PLUby3nb967OBOQgKPJdgeb_661OCc-IP_" target="_blank" rel="noopener" class="playlist-link">
→ OPEN FULL PLAYLIST ON YOUTUBE
</a>
</section> </section>
<section class="playlist-panel panel-toucan"> <section class="playlist-panel panel-toucan">
@@ -360,6 +393,9 @@
allowfullscreen> allowfullscreen>
</iframe> </iframe>
</div> </div>
<a href="https://www.youtube.com/playlist?list=PLUby3nb967OAdklUmXZk8RI7DYhRmMIxT" target="_blank" rel="noopener" class="playlist-link">
→ OPEN FULL PLAYLIST ON YOUTUBE
</a>
</section> </section>
<section class="playlist-panel panel-teal"> <section class="playlist-panel panel-teal">
@@ -374,6 +410,9 @@
allowfullscreen> allowfullscreen>
</iframe> </iframe>
</div> </div>
<a href="https://www.youtube.com/playlist?list=PLUby3nb967OBfSGKNlj6nxh9E6J-Rzof5" target="_blank" rel="noopener" class="playlist-link">
→ OPEN FULL PLAYLIST ON YOUTUBE
</a>
</section> </section>
<section class="playlist-panel panel-green"> <section class="playlist-panel panel-green">
@@ -388,6 +427,9 @@
allowfullscreen> allowfullscreen>
</iframe> </iframe>
</div> </div>
<a href="https://www.youtube.com/playlist?list=PLUby3nb967OAoUDyuAtKTSLCEgZkFwqdP" target="_blank" rel="noopener" class="playlist-link">
→ OPEN FULL PLAYLIST ON YOUTUBE
</a>
</section> </section>
</main> </main>

View File

@@ -255,6 +255,24 @@
.panel-teal { --border-color: var(--wl-teal); } .panel-teal { --border-color: var(--wl-teal); }
.panel-green { --border-color: var(--wl-green); } .panel-green { --border-color: var(--wl-green); }
.panel-toucan { --border-color: var(--wl-toucan); } .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);
}
</style> </style>
</head> </head>
<body> <body>
@@ -289,6 +307,9 @@
allowfullscreen> allowfullscreen>
</iframe> </iframe>
</div> </div>
<a href="https://www.youtube.com/playlist?list=PLeYBqpyQVyaYqtBAfbNy6d_xtxcrjCVy6" target="_blank" rel="noopener" class="playlist-link">
→ OPEN FULL PLAYLIST ON YOUTUBE
</a>
</section> </section>
<section class="playlist-panel panel-green"> <section class="playlist-panel panel-green">
@@ -303,6 +324,9 @@
allowfullscreen> allowfullscreen>
</iframe> </iframe>
</div> </div>
<a href="https://www.youtube.com/playlist?list=PLkTkIkgJg3GsmoEsh4a9-YRUuZtHNr0w9" target="_blank" rel="noopener" class="playlist-link">
→ OPEN FULL PLAYLIST ON YOUTUBE
</a>
</section> </section>
<section class="playlist-panel panel-toucan"> <section class="playlist-panel panel-toucan">
@@ -317,6 +341,9 @@
allowfullscreen> allowfullscreen>
</iframe> </iframe>
</div> </div>
<a href="https://www.youtube.com/playlist?list=PLa8L4_jjaB62-j89zcyfQ_ZV7bVceMSDB" target="_blank" rel="noopener" class="playlist-link">
→ OPEN FULL PLAYLIST ON YOUTUBE
</a>
</section> </section>
<section class="playlist-panel panel-teal"> <section class="playlist-panel panel-teal">
@@ -331,6 +358,9 @@
allowfullscreen> allowfullscreen>
</iframe> </iframe>
</div> </div>
<a href="https://www.youtube.com/playlist?list=PLJQUAVYdQ53t3hqA1t1hNcWrrZT5sGMfj" target="_blank" rel="noopener" class="playlist-link">
→ OPEN FULL PLAYLIST ON YOUTUBE
</a>
</section> </section>
<section class="playlist-panel panel-green"> <section class="playlist-panel panel-green">
@@ -345,6 +375,9 @@
allowfullscreen> allowfullscreen>
</iframe> </iframe>
</div> </div>
<a href="https://www.youtube.com/playlist?list=PLgp6-KTN0LyAkDMmtGROSmer8IpL7kUSd" target="_blank" rel="noopener" class="playlist-link">
→ OPEN FULL PLAYLIST ON YOUTUBE
</a>
</section> </section>
<section class="playlist-panel panel-toucan"> <section class="playlist-panel panel-toucan">
@@ -359,6 +392,9 @@
allowfullscreen> allowfullscreen>
</iframe> </iframe>
</div> </div>
<a href="https://www.youtube.com/playlist?list=PLK5fE38XOCnpWSvoxMNL8igQxPZlAi4_F" target="_blank" rel="noopener" class="playlist-link">
→ OPEN FULL PLAYLIST ON YOUTUBE
</a>
</section> </section>
<section class="playlist-panel panel-teal"> <section class="playlist-panel panel-teal">
@@ -373,6 +409,9 @@
allowfullscreen> allowfullscreen>
</iframe> </iframe>
</div> </div>
<a href="https://www.youtube.com/playlist?list=PLbOF9TQmQrNgWHaLCPaE81l4hEL-2Rrjf" target="_blank" rel="noopener" class="playlist-link">
→ OPEN FULL PLAYLIST ON YOUTUBE
</a>
</section> </section>
</main> </main>

View File

@@ -254,6 +254,24 @@
.panel-teal { --border-color: var(--wl-teal); } .panel-teal { --border-color: var(--wl-teal); }
.panel-green { --border-color: var(--wl-green); } .panel-green { --border-color: var(--wl-green); }
.panel-toucan { --border-color: var(--wl-toucan); } .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);
}
</style> </style>
</head> </head>
<body> <body>
@@ -288,6 +306,9 @@
allowfullscreen> allowfullscreen>
</iframe> </iframe>
</div> </div>
<a href="https://www.youtube.com/playlist?list=PLx8zUw4PoWHgqy5bD0HcuuTgVqPOSNrHn" target="_blank" rel="noopener" class="playlist-link">
→ OPEN FULL PLAYLIST ON YOUTUBE
</a>
</section> </section>
<section class="playlist-panel panel-green"> <section class="playlist-panel panel-green">
@@ -302,6 +323,9 @@
allowfullscreen> allowfullscreen>
</iframe> </iframe>
</div> </div>
<a href="https://www.youtube.com/playlist?list=PLqqTsphh57d5czFm-bK404ripWFI-2a8c" target="_blank" rel="noopener" class="playlist-link">
→ OPEN FULL PLAYLIST ON YOUTUBE
</a>
</section> </section>
<section class="playlist-panel panel-toucan"> <section class="playlist-panel panel-toucan">
@@ -316,6 +340,9 @@
allowfullscreen> allowfullscreen>
</iframe> </iframe>
</div> </div>
<a href="https://www.youtube.com/playlist?list=PLHPWDhsjb4ZFGV_3ezZHcQ142HwppW--Y" target="_blank" rel="noopener" class="playlist-link">
→ OPEN FULL PLAYLIST ON YOUTUBE
</a>
</section> </section>
<section class="playlist-panel panel-teal"> <section class="playlist-panel panel-teal">
@@ -330,6 +357,9 @@
allowfullscreen> allowfullscreen>
</iframe> </iframe>
</div> </div>
<a href="https://www.youtube.com/playlist?list=PLSpz5qTrO-GnziQviNzmarSRpTbe8OcgQ" target="_blank" rel="noopener" class="playlist-link">
→ OPEN FULL PLAYLIST ON YOUTUBE
</a>
</section> </section>
<section class="playlist-panel panel-green"> <section class="playlist-panel panel-green">
@@ -344,6 +374,9 @@
allowfullscreen> allowfullscreen>
</iframe> </iframe>
</div> </div>
<a href="https://www.youtube.com/playlist?list=PLo16qa3p5doyYLVw4JCm7bGBH7nf4vLnV" target="_blank" rel="noopener" class="playlist-link">
→ OPEN FULL PLAYLIST ON YOUTUBE
</a>
</section> </section>
<section class="playlist-panel panel-toucan"> <section class="playlist-panel panel-toucan">
@@ -358,6 +391,9 @@
allowfullscreen> allowfullscreen>
</iframe> </iframe>
</div> </div>
<a href="https://www.youtube.com/playlist?list=PLjf4Mu2Zp3kYtBZB38-huwZA3DJaIcGN_" target="_blank" rel="noopener" class="playlist-link">
→ OPEN FULL PLAYLIST ON YOUTUBE
</a>
</section> </section>
</main> </main>
@@ -366,9 +402,9 @@
// Lightbox: show on first load // Lightbox: show on first load
const lightbox = document.getElementById('lightbox'); const lightbox = document.getElementById('lightbox');
if (!localStorage.getItem('watchlist-thelastcinema-seen')) { if (!localStorage.getItem('watchlist-lastcinema-seen')) {
lightbox.style.display = 'flex'; lightbox.style.display = 'flex';
localStorage.setItem('watchlist-thelastcinema-seen', '1'); localStorage.setItem('watchlist-lastcinema-seen', '1');
} }
function closeLightbox() { lightbox.style.display = 'none'; } function closeLightbox() { lightbox.style.display = 'none'; }

View File

@@ -256,6 +256,24 @@
.panel-teal { --border-color: var(--wl-teal); } .panel-teal { --border-color: var(--wl-teal); }
.panel-green { --border-color: var(--wl-green); } .panel-green { --border-color: var(--wl-green); }
.panel-toucan { --border-color: var(--wl-toucan); } .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);
}
</style> </style>
</head> </head>
<body> <body>
@@ -290,6 +308,9 @@
allowfullscreen> allowfullscreen>
</iframe> </iframe>
</div> </div>
<a href="https://www.youtube.com/playlist?list=PLN_G7yTx9SXeR047RrbIuhsJFBeBZHaeO" target="_blank" rel="noopener" class="playlist-link">
→ OPEN FULL PLAYLIST ON YOUTUBE
</a>
</section> </section>
<section class="playlist-panel panel-green"> <section class="playlist-panel panel-green">
@@ -304,6 +325,9 @@
allowfullscreen> allowfullscreen>
</iframe> </iframe>
</div> </div>
<a href="https://www.youtube.com/playlist?list=PLnPbOOvxxh-cJNVhhQ05TldMrNv_ycNPW" target="_blank" rel="noopener" class="playlist-link">
→ OPEN FULL PLAYLIST ON YOUTUBE
</a>
</section> </section>
<section class="playlist-panel panel-toucan"> <section class="playlist-panel panel-toucan">
@@ -318,6 +342,9 @@
allowfullscreen> allowfullscreen>
</iframe> </iframe>
</div> </div>
<a href="https://www.youtube.com/playlist?list=PLg0P6LepONgLmkrXUQpIBjnvYoi_lolo0" target="_blank" rel="noopener" class="playlist-link">
→ OPEN FULL PLAYLIST ON YOUTUBE
</a>
</section> </section>
<section class="playlist-panel panel-teal"> <section class="playlist-panel panel-teal">
@@ -332,6 +359,9 @@
allowfullscreen> allowfullscreen>
</iframe> </iframe>
</div> </div>
<a href="https://www.youtube.com/playlist?list=PLAsJFJTfcTKP-eGc0S6EbCfSoctELYM7t" target="_blank" rel="noopener" class="playlist-link">
→ OPEN FULL PLAYLIST ON YOUTUBE
</a>
</section> </section>
<section class="playlist-panel panel-green"> <section class="playlist-panel panel-green">
@@ -346,6 +376,9 @@
allowfullscreen> allowfullscreen>
</iframe> </iframe>
</div> </div>
<a href="https://www.youtube.com/playlist?list=PLezayui57fOezxQBXfB0YIvM2EgSFdoZO" target="_blank" rel="noopener" class="playlist-link">
→ OPEN FULL PLAYLIST ON YOUTUBE
</a>
</section> </section>
<section class="playlist-panel panel-toucan"> <section class="playlist-panel panel-toucan">
@@ -360,6 +393,9 @@
allowfullscreen> allowfullscreen>
</iframe> </iframe>
</div> </div>
<a href="https://www.youtube.com/playlist?list=PLCwOPk7IsaoA61VHcHD8M3rb5dRcLm7Dy" target="_blank" rel="noopener" class="playlist-link">
→ OPEN FULL PLAYLIST ON YOUTUBE
</a>
</section> </section>
<section class="playlist-panel panel-teal"> <section class="playlist-panel panel-teal">
@@ -374,6 +410,9 @@
allowfullscreen> allowfullscreen>
</iframe> </iframe>
</div> </div>
<a href="https://www.youtube.com/playlist?list=PLNPzbTO0Qe116YhIxNIj083qeTlMpD32e" target="_blank" rel="noopener" class="playlist-link">
→ OPEN FULL PLAYLIST ON YOUTUBE
</a>
</section> </section>
<section class="playlist-panel panel-green"> <section class="playlist-panel panel-green">
@@ -388,6 +427,9 @@
allowfullscreen> allowfullscreen>
</iframe> </iframe>
</div> </div>
<a href="https://www.youtube.com/playlist?list=PLgvBz-Cwkzii_UJNJcU0Qtr5Gzu6tG66T" target="_blank" rel="noopener" class="playlist-link">
→ OPEN FULL PLAYLIST ON YOUTUBE
</a>
</section> </section>
</main> </main>