Changeset 48481cd in Klonkt
- Timestamp:
- 08/20/2026 12:59:45 AM (3 weeks ago)
- Branches:
- main
- Children:
- 4989294
- Parents:
- e46ebaa
- git-author:
- Robin <roboburr@…> (08/20/2026 12:57:38 AM)
- git-committer:
- Robin <roboburr@…> (08/20/2026 12:59:45 AM)
- Files:
-
- 2 edited
-
src/services/AudioEmbedService.js (modified) (1 diff)
-
test/apple-music-embed.test.js (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
src/services/AudioEmbedService.js
re46ebaa r48481cd 248 248 // gevangen wordt gaat rechtstreeks achter https://embed.music.apple.com/ aan. 249 249 const match = url.match( 250 /music\.apple\.com\/([a-z]{2}\/( ?:album|playlist|song)\/[^/?#]+\/(?:[0-9]+|pl\.[A-Za-z0-9_-]+))/i,250 /music\.apple\.com\/([a-z]{2}\/(album|playlist|song)\/[^/?#]+\/(?:[0-9]+|pl\.[A-Za-z0-9_-]+))/i, 251 251 ); 252 252 if (!match) return null; 253 253 const src = `https://embed.music.apple.com/${match[1]}`; 254 // De hoogte hangt af van WAT je insluit, en dat stond hier op een vaste 255 // 175px -- de maat van een LOS NUMMER. Een album of afspeellijst is 450px, 256 // dus daarvan zag je ongeveer een derde, met `overflow:hidden` eroverheen 257 // zodat de rest ook niet te bereiken viel. Barts melding (20-8) over 258 // boiert.eu/the-mixtape. 259 // 260 // Nagemeten en niet overgenomen: de embed-pagina van die lijst 261 // (pl.u-LdbqzVvI3go5g) geeft zijn <main> EN zijn <body> allebei precies 262 // 450px. Dat is ook de hoogte in Apple's eigen insluitcode. 263 const hoogte = String(match[2]).toLowerCase() === 'song' ? 175 : 450; 254 264 return ` 255 265 <figure class="folio-embed folio-embed--applemusic"> 256 266 <iframe src="${this.escape(src)}" 257 style="width:100%;height: 175px;border:0;overflow:hidden;border-radius:8px;"267 style="width:100%;height:${hoogte}px;border:0;overflow:hidden;border-radius:8px;" 258 268 loading="lazy" 259 269 allow="autoplay; clipboard-write; encrypted-media" -
test/apple-music-embed.test.js
re46ebaa r48481cd 53 53 } 54 54 }); 55 56 // ── De hoogte hoort bij wat je insluit (Bart, 20-8) ───────────────────────── 57 // Op boiert.eu/the-mixtape stond een afspeellijst in een venster van 175px: de 58 // maat van een LOS NUMMER. Je zag ongeveer een derde, en `overflow:hidden` 59 // maakte de rest ook nog onbereikbaar. 60 // 61 // 450 is niet uit de documentatie overgenomen maar nagemeten: de embed-pagina 62 // van pl.u-LdbqzVvI3go5g geeft zijn <main> en <body> allebei precies 450px. 63 test('een afspeellijst krijgt 450px, niet de hoogte van een los nummer', () => { 64 const html = AudioEmbedService.generateIframe('applemusic', 65 { url: 'https://music.apple.com/nl/playlist/romance/pl.u-LdbqzVvI3go5g' }); 66 assert.match(html, /height:450px/, 'een lijst is 450 hoog'); 67 assert.ok(!/height:175px/.test(html), 'en zeker niet 175'); 68 }); 69 70 test('een album ook: dat is dezelfde speler met een lijst erin', () => { 71 const html = AudioEmbedService.generateIframe('applemusic', 72 { url: 'https://music.apple.com/nl/album/blue/1440857781' }); 73 assert.match(html, /height:450px/); 74 }); 75 76 test('een los nummer blijft klein', () => { 77 const html = AudioEmbedService.generateIframe('applemusic', 78 { url: 'https://music.apple.com/nl/song/blue/1440857785' }); 79 assert.match(html, /height:175px/, 'een enkel nummer heeft geen lijst te tonen'); 80 }); 81 82 test('en de soort wordt uit de URL gelezen, niet geraden', () => { 83 // Dezelfde id-vorm, ander soort: alleen het woord in het pad mag beslissen. 84 const lijst = AudioEmbedService.generateIframe('applemusic', 85 { url: 'https://music.apple.com/us/playlist/x/pl.abc123def456' }); 86 const nummer = AudioEmbedService.generateIframe('applemusic', 87 { url: 'https://music.apple.com/us/song/x/123456789' }); 88 assert.match(lijst, /height:450px/); 89 assert.match(nummer, /height:175px/); 90 });
Note:
See TracChangeset
for help on using the changeset viewer.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)