Changeset cf5073b in Klonkt for test/ap-tracks.test.js


Ignore:
Timestamp:
08/08/2026 05:47:57 AM (5 weeks ago)
Author:
Robin <roboburr@…>
Branches:
main
Children:
f3a2556
Parents:
4d81de5
git-author:
Robin <roboburr@…> (08/08/2026 05:46:48 AM)
git-committer:
Robin <roboburr@…> (08/08/2026 05:47:57 AM)
Message:

Onze Audio inhoudelijk gelijk aan die van Funkwhale

Dezelfde track aan beide kanten naast elkaar gelegd -- 0METAL MARIO, bij hen op
the_ceeesg en bij ons op dev -- en de uitkomst was gunstiger dan verwacht.

OP ELK VELD WAAR AS2 IETS ZEGT ZIJN WIJ CONFORM EN ZIJ NIET, en dat is precies
een veld: duration. AS2 zegt MUST xsd:duration ("PT103S"), schema.org zegt
hetzelfde in ISO 8601, Funkwhale stuurt 103. Daar bewegen we dus niet.

Al hun EXTRA velden bleken geen eigen verzinsel maar termen die schema.org
gewoon heeft -- en schema.org stond al in onze context. Overgenomen zonder
concessie: de SLEUTELS zijn die van Funkwhale, want daar leest hij op, de
BETEKENIS komt van schema.org. Geen vreemd vocabulaire binnengehaald.

to op het OBJECT, niet alleen op de omhullende Create: een los

opgehaalde track moet zelf kunnen zeggen dat hij openbaar is

position het nummer op de plaat
license schema:license
size schema:contentSize, OP DE LINK -- het is die representatie die
bitrate schema:bitrate zoveel bytes is, niet het nummer
image naast icon; allebei AS2-kern, wij lazen icon, zij lezen image

BITRATE IS AFGELEID, niet gegokt: bytes maal acht gedeeld door seconden IS de
gemiddelde bitrate van een bestand. Alleen als we allebei de getallen hebben --
liever geen veld dan een verzonnen getal.

LICENTIE IS DE ENIGE MET EEN VERTAALSLAG. Bij ons is het vrije tekst uit een
keuzelijst ("CC BY 4.0"), bij hen een URI. Alleen de waarden die onze eigen
keuzelijst aanbiedt worden vertaald -- die kennen we exact. "Alle rechten
voorbehouden" heeft geen URI en levert dus niets op, en een al ingevulde URI
gaat ongemoeid door. Een zelfbedachte licentie-URI is erger dan geen: een lezer
gelooft hem.

Onderweg: t.position en t.license moesten alsnog in de trackquery, die
selecteerde ze niet.

7 tests.

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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • test/ap-tracks.test.js

    r4d81de5 rcf5073b  
    7575  assert.equal(a.duration, 'PT203S');
    7676  assert.equal(a.summary, 'De Band');
    77   assert.deepEqual(a.url, [{
    78     type: 'Link', href: 'https://test.example/audio/stream/open.mp3', mediaType: 'audio/mpeg',
    79   }], 'de mediaType hoort bij de link, niet bij het object');
     77  // De Link draagt sinds de veldvergelijking met Funkwhale ook de
     78  // bestandsgegevens: die horen bij DEZE representatie, niet bij het nummer.
     79  assert.equal(a.url.length, 1);
     80  assert.equal(a.url[0].type, 'Link');
     81  assert.equal(a.url[0].href, 'https://test.example/audio/stream/open.mp3');
     82  assert.equal(a.url[0].mediaType, 'audio/mpeg', 'de mediaType hoort bij de link, niet bij het object');
     83  assert.equal(a.mediaType, undefined, 'en dus NIET op het object');
    8084  assert.equal(a.icon.url, 'https://test.example/media/hoes.jpg');
    8185});
Note: See TracChangeset for help on using the changeset viewer.