Ignore:
Timestamp:
08/14/2026 02:35:06 AM (4 weeks ago)
Author:
Robin <roboburr@…>
Branches:
main
Children:
47f1183
Parents:
fc664ce
Message:

Een track zonder bestand is niet hetzelfde als een kapotte track

Robin, over het ene nummer dat niet meekwam: "ah, dat was een no audio 'audio'
voor alleen spotify en youtube links". Dat is een bestaand Klonkt-type, geen
ongelukje: geen gehost bestand, wel externe links, en buildNote maakt er een
embed-kaart van (trackEmbedLinks). Mijn regel "geen bestand, geen track" was te
grof en gooide hem weg.

"Geen bestand" en "niets om te tonen" zijn niet hetzelfde. De regel blijft
staan waar hij hoort: een track zonder bestand EN zonder links wordt nog steeds
geweigerd, want die kan niets.

Het archiefformaat heeft nu drie staten in plaats van twee: included, missing,
en linkOnly. Een link-only track telt dus ook niet meer als "ontbrekend", want
er ontbreekt niets.

EN EEN TWEEDE FOUT DIE HIERONDER LAG. De pull viste de audio-URL uit de
url-lijst met element NUL. buildTrackAudio zet daar een text/html-link naar de
post voor het bestand: wie blind de eerste pakt downloadt een HTML-pagina en
schrijft die weg als mp3. Nu wordt de link met mediaType audio/* gezocht, met
/audio/stream/ als terugval. Dat het bij Robin niet misging is geluk: zijn
tracks hadden geen host-post in die lijst.

Changed files:
src/services/ArchiveExportService.js

  • shaer:availability kent linkOnly; die telt niet als audioMissing

src/services/ArchiveImportService.js

  • link-only tracks komen mee, met media_id NULL zoals op de bron
  • de schrijftak kan een track zonder bestand aan

src/services/MigrationService.js

  • de pull vist de audio-link uit de lijst in plaats van element nul
  • een track met alleen externe links wordt gewoon aangemaakt

test/archive-audio.test.js

  • link-only reist mee; zonder bestand en zonder links blijft geweigerd

test/fep1580-migration.test.js

  • hetzelfde voor de ophaalknop, plus: de audio-link wordt gevist

remarks: Robins Youngstown-nummer komt hiermee alsnog over. Suite 1009 groen;
tegenproef op beide, en de eerste poging daarvan kwam niet aan (te slordige
sabotage), dus opnieuw gedaan met twee rode tests als bewijs.

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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/services/ArchiveExportService.js

    rfc664ce rf704237  
    228228      } catch { naam = null; }           // onleesbaar telt als ontbrekend, niet als stilte
    229229    }
    230     if (!naam) {
     230    // Een LINK-ONLY track is geen kapotte track. Klonkt kent dat type: geen
     231    // gehost bestand, wel een Spotify- of YouTube-link, en buildNote maakt er
     232    // een embed-kaart van (zie trackEmbedLinks). Die tellen dus niet als
     233    // ontbrekend, anders meldt de export een probleem dat er niet is.
     234    const alleenLinks = !t.media_id && [t.link_spotify, t.link_youtube, t.link_soundcloud].some(Boolean);
     235    if (!naam && !alleenLinks) {
    231236      tellingen.audioMissing += 1;
    232237      ontbrekend.push({ track: t.title || t.id, url: t.storage_path || '(geen mediarij)' });
    233238    }
     239    if (alleenLinks) tellingen.audioLinks = (tellingen.audioLinks || 0) + 1;
    234240    items.push({
    235241      id: t.id, name: t.title || '', artist: t.artist || undefined, album: t.album || undefined,
     
    247253      // stond. Stil weglaten zou een leugen zijn, en de importer moet hierop
    248254      // kunnen weigeren in plaats van een track zonder bestand aan te maken.
    249       'shaer:availability': naam ? 'included' : 'missing',
     255      // Drie staten in plaats van twee: erbij, weg, of bewust zonder bestand.
     256      'shaer:availability': naam ? 'included' : (alleenLinks ? 'linkOnly' : 'missing'),
    250257      'shaer:originalPath': naam ? undefined : (t.storage_path || undefined),
    251258      url: [t.link_spotify, t.link_youtube, t.link_soundcloud].filter(Boolean),
Note: See TracChangeset for help on using the changeset viewer.