Changeset f704237 in Klonkt for src/services/ArchiveImportService.js
- Timestamp:
- 08/14/2026 02:35:06 AM (4 weeks ago)
- Branches:
- main
- Children:
- 47f1183
- Parents:
- fc664ce
- File:
-
- 1 edited
-
src/services/ArchiveImportService.js (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/services/ArchiveImportService.js
rfc664ce rf704237 166 166 const bestand = t['shaer:file']; 167 167 const bytes = bestand ? files.get(bestand) : null; 168 if (!bytes || !bytes.length) { 168 // "Geen bestand" en "niets om te tonen" zijn niet hetzelfde. Een LINK-ONLY 169 // track heeft nooit een bestand gehad: hij bestaat uit een Spotify- of 170 // YouTube-link en Klonkt maakt daar een embed-kaart van. Die hoort gewoon 171 // mee. Mijn eerste regel gooide hem weg, en dat kostte Robin een nummer 172 // (Youngstown) dat op de oude site prima werkte. 173 const links = Array.isArray(t.url) ? t.url.filter(Boolean) : []; 174 const alleenLinks = t['shaer:availability'] === 'linkOnly' || (!bestand && links.length > 0); 175 if ((!bytes || !bytes.length) && !alleenLinks) { 169 176 rapport.tracksMissing += 1; 170 177 rapport.waarschuwingen.push(`${t.name || id}: geluidsbestand zit niet in het archief, track niet aangemaakt`); 171 continue; // de hele regel van deze functie 178 continue; 179 } 180 if (alleenLinks) { 181 // Geen bestand om weg te schrijven, geen mediarij: alleen de track zelf. 182 werk.push({ soort: 'track', id, t, naam: null, bytes: null, doel: null, hoes: hoesTerug(files, t['shaer:coverFile'], werk) }); 183 rapport.tracks += 1; 184 rapport.tracksLinks = (rapport.tracksLinks || 0) + 1; 185 continue; 172 186 } 173 187 // Naam op de schijf: de hash uit het archief, met zijn extensie. De speler … … 256 270 posts: 0, overgeslagen: 0, overschreven: 0, 257 271 replies: 0, media: 0, mediaMissing: 0, gemist: [], waarschuwingen: [], 258 tracks: 0, tracksMissing: 0, playlists: 0, linksBijgetrokken: 0,272 tracks: 0, tracksMissing: 0, tracksLinks: 0, playlists: 0, linksBijgetrokken: 0, 259 273 }; 260 274 … … 417 431 // rolt de hele transactie terug: liever geen import dan een track zonder 418 432 // geluid, want dat is precies de val waar dit uit voortkomt. 419 fs.mkdirSync(path.dirname(s.doel), { recursive: true }); 420 fs.writeFileSync(s.doel, s.bytes); 421 const mediaId = randomUUID(); 422 db.prepare('INSERT INTO media (id, site_id, filename, mime_type, size, storage_path) VALUES (?,?,?,?,?,?)') 423 .run(mediaId, site.id, s.naam, s.t['shaer:mediaType'] || 'audio/mpeg', s.bytes.length, s.doel); 433 // 434 // Een link-only track heeft geen bestand en dus ook geen mediarij; die 435 // krijgt media_id NULL, precies zoals op de bron. 436 let mediaId = null; 437 if (s.doel && s.bytes) { 438 fs.mkdirSync(path.dirname(s.doel), { recursive: true }); 439 fs.writeFileSync(s.doel, s.bytes); 440 mediaId = randomUUID(); 441 db.prepare('INSERT INTO media (id, site_id, filename, mime_type, size, storage_path) VALUES (?,?,?,?,?,?)') 442 .run(mediaId, site.id, s.naam, s.t['shaer:mediaType'] || 'audio/mpeg', s.bytes.length, s.doel); 443 } 424 444 const link = (k) => (s.t.url || []).find((u) => String(u).includes(k)) || null; 425 445 db.prepare(`INSERT OR REPLACE INTO audio_tracks
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)