Changeset 976d36d in Klonkt


Ignore:
Timestamp:
06/20/2026 04:03:58 AM (3 months ago)
Author:
roboburr <roboburr@…>
Branches:
main
Children:
b56afa7
Parents:
9e6b54f
Message:

fix(embed): bar-free square cover for YouTube audio

hqdefault is 4:3 with baked-in black bars → doesn't fill a square cover.
Now mqdefault (16:9, no bars) as the direct cover, and async upgrade to the
sharp maxresdefault (also no bars) when available. Applies to the launcher
card and the mini/sheet cover. busters audio-player.js?v=22,
embed-player.js?v=10.

Co-Authored-By: Claude <noreply@…>

Location:
src
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • src/assets/js/audio-player.js

    r9e6b54f r976d36d  
    924924      postUrl: opts.postUrl || '',
    925925    }], 0);
     926    // Upgrade de cover async naar de scherpe maxresdefault (ook 16:9, geen balken)
     927    // als die bestaat. Async → de user-gesture voor afspelen blijft intact; de
     928    // direct gezette mqdefault toont al meteen een balkloze cover.
     929    try {
     930      const maxres = 'https://i.ytimg.com/vi/' + opts.id + '/maxresdefault.jpg';
     931      const im = new Image();
     932      im.onload = () => {
     933        if (im.naturalWidth <= 120) return;  // 120x90 = YouTube-placeholder (geen maxres)
     934        const t = queue[currentIndex];
     935        if (t && t.yt === opts.id) { t.cover = maxres; setCoverImage(cover, maxres); setCoverImage(sheetCover, maxres); }
     936      };
     937      im.src = maxres;
     938    } catch (e) {}
    926939  }
    927940
  • src/assets/js/embed-player.js

    r9e6b54f r976d36d  
    193193    const poster = provider === 'youtube'
    194194      ? `https://i.ytimg.com/vi/${ytId(ref, url)}/hqdefault.jpg` : '';
     195    // 16:9-thumbnail ZONDER zwarte balken (mqdefault) voor de vierkante cover —
     196    // hqdefault is 4:3 met letterbox en vult een vierkant niet schoon.
     197    const ytThumb = provider === 'youtube'
     198      ? `https://i.ytimg.com/vi/${ytId(ref, url)}/mqdefault.jpg` : '';
    195199
    196200    el.innerHTML = ''
     
    229233    let preMuteVol = 100;
    230234    // Audio-only YouTube: zet de thumbnail als albumhoes op de audio-kaart.
    231     if (audioOnly && poster) {
     235    if (audioOnly && ytThumb) {
    232236      const art0 = el.querySelector('.pcms-embed-art');
    233       if (art0) { art0.style.backgroundImage = `url('${poster}')`; art0.classList.add('has-art'); }
     237      if (art0) { art0.style.backgroundImage = `url('${ytThumb}')`; art0.classList.add('has-art'); }
    234238    }
    235239
     
    310314      // én doorspelen bij navigeren. De inline-kaart is enkel de launcher.
    311315      if (audioOnly && window.pcmsAudioPlayer && typeof window.pcmsAudioPlayer.playYouTube === 'function') {
    312         window.pcmsAudioPlayer.playYouTube({ id: ytId(ref, url), cover: poster, postUrl: location.pathname + location.search });
     316        window.pcmsAudioPlayer.playYouTube({ id: ytId(ref, url), cover: ytThumb, postUrl: location.pathname + location.search });
    313317        el.classList.add('pcms-embed-elsewhere');
    314318        return;
  • src/views/shell.ejs

    r9e6b54f r976d36d  
    300300     ?v=N — cache-buster: bump bij elke audio-player.js wijziging zodat
    301301     Cloudflare (max-age=1y) niet de oude versie blijft serveren. -->
    302 <script src="/assets/js/audio-player.js?v=21"></script>
     302<script src="/assets/js/audio-player.js?v=22"></script>
    303303<!-- Eigen custom media-embeds (YouTube/SoundCloud/Spotify) via de echte
    304304     player-API's + gedeelde mutual-exclusion registry met de site-speler. -->
    305 <script src="/assets/js/embed-player.js?v=9" defer></script>
     305<script src="/assets/js/embed-player.js?v=10" defer></script>
    306306<% if (site && site.enable_audio_player && audioTracks && audioTracks.length > 0) { %>
    307307  <script>window.PCMS_SITE_TRACKS = <%- JSON.stringify(audioTracks) %>;</script>
Note: See TracChangeset for help on using the changeset viewer.