Changeset e854ace in Klonkt for src/services/AudioEmbedService.js


Ignore:
Timestamp:
08/17/2026 06:22:36 PM (3 weeks ago)
Author:
Bart <bart@…>
Branches:
main
Children:
acbc9fc
Parents:
995b100
Message:

Een Apple Music-afspeellijst is geen album: het id is geen getal

Barts melding (17-8): het concept "The Mixtape" op boiert.eu toonde in preview
letterlijk [[embed:https://music.apple.com/nl/playlist/romance/pl.u-...]].

Twee fouten achter elkaar. detectProvider herkent Apple Music aan /playlist/ en
kijkt niet verder, maar applemusicIframe eiste [0-9]+ als id. Dat klopt voor een
album of een nummer; een afspeellijst heet pl.u-LdbqzVvI3go5g. Dus null, en
embedMediaShortcodes viel terug op de shortcode zelf.

Die terugval is de tweede fout, en hij maakte de eerste onbegrijpelijk. Een
lezer ziet geen "dit kan ik niet", hij ziet rommel op de pagina. Onherkend gaf
al netjes een melding; herkend-maar-niet-te-bouwen geeft nu dezelfde, want voor
de lezer is het hetzelfde geval.

De vangst blijft krap -- geen slash, vraagteken of hekje -- want hij gaat
rechtstreeks achter embed.music.apple.com/ aan. Een test loopt drie
ontsnappingspogingen langs.

Co-Authored-By: Claude Opus 5 <claude@…>

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/services/AudioEmbedService.js

    r995b100 re854ace  
    239239
    240240  static applemusicIframe({ url }) {
    241     const match = url.match(/music\.apple\.com\/([a-z]{2}\/(?:album|playlist|song)\/[^/?#]+\/[0-9]+)/i);
     241    // Een album of nummer heeft een NUMMER als id, een afspeellijst niet: die
     242    // heet `pl.u-LdbqzVvI3go5g`. Met alleen [0-9]+ viel elke playlist hier af
     243    // en gaf deze functie null -- waarna de shortcode zelf op de pagina kwam.
     244    // Barts melding (17-8): het concept "The Mixtape" toonde in preview
     245    // letterlijk [[embed:https://music.apple.com/nl/playlist/...]].
     246    //
     247    // Bewust krap: geen slash, vraagteken of hekje in het id, want wat hier
     248    // gevangen wordt gaat rechtstreeks achter https://embed.music.apple.com/ aan.
     249    const match = url.match(
     250      /music\.apple\.com\/([a-z]{2}\/(?:album|playlist|song)\/[^/?#]+\/(?:[0-9]+|pl\.[A-Za-z0-9_-]+))/i,
     251    );
    242252    if (!match) return null;
    243253    const src = `https://embed.music.apple.com/${match[1]}`;
     
    341351        return `<div class="post-embed-missing"><em>Embed: niet-ondersteunde of ongeldige URL.</em></div>`;
    342352      }
    343       return this.generateIframe(detected.provider, detected) || match;
     353      // HERKEND maar niet te bouwen is geen reden om de shortcode zelf te
     354      // tonen. Dat deed het wel, en dan leest een bezoeker "[[embed:https://...]]"
     355      // op de pagina en denkt hij dat er iets stuk is. Onherkend gaf hierboven
     356      // al een nette melding; herkend-maar-mislukt hoort dezelfde te geven,
     357      // want voor de lezer is het hetzelfde geval.
     358      return this.generateIframe(detected.provider, detected)
     359        || `<div class="post-embed-missing"><em>Embed: niet-ondersteunde of ongeldige URL.</em></div>`;
    344360    });
    345361  }
Note: See TracChangeset for help on using the changeset viewer.