- Timestamp:
- 08/16/2026 02:12:14 PM (3 weeks ago)
- Branches:
- main
- Children:
- 9026de5
- Parents:
- aebde2b
- Location:
- src
- Files:
-
- 3 edited
-
routes/activitypub.js (modified) (1 diff)
-
services/PlaylistService.js (modified) (1 diff)
-
services/music/index.js (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/routes/activitypub.js
raebde2b r7090fd2 1202 1202 const site = publicSite(req.params.slug); 1203 1203 if (!site) return res.status(404).end(); 1204 const pl = db.prepare('SELECT id, title, artist, year, cover_url, kind FROM playlists WHERE id = ? AND site_id = ?')1204 const pl = db.prepare('SELECT id, title, artist, year, cover_url, kind, release_date, mb_release_id, created_at FROM playlists WHERE id = ? AND site_id = ?') 1205 1205 .get(req.params.id, site.id); 1206 1206 if (!pl) return res.status(404).end(); -
src/services/PlaylistService.js
raebde2b r7090fd2 155 155 cover: p.cover_url || fallbackCover, 156 156 kind: (p.kind === 'playlist') ? 'playlist' : 'album', 157 // created_at hoort erbij omdat de AP-kant er `published` van maakt. Zonder 158 // dit veld viel buildAlbumObject terug op 1970, en dat stond op 16-8 159 // gewoon op de federatie. 160 created_at: p.created_at, 157 161 // Leeg als het een afspeellijst is -- de opslag houdt ze daar al leeg, 158 162 // maar dit is de plek waar de editor leest en die mag niet afhangen van -
src/services/music/index.js
raebde2b r7090fd2 451 451 const uit = new Map(); 452 452 for (const r of rijen) if (!uit.has(r.tid)) uit.set(r.tid, r); 453 // De post die deze plaat uitbrengt, EEN keer per album opgezocht en niet per 454 // track: uitgavePost() doet er echt werk voor (hij leest de typering van de 455 // post) en een site heeft veel meer nummers dan platen. 456 // 457 // WAAROM DIT ERBIJ MOET: buildPlaylistCollection laat leenVanPost de naam van 458 // de post overnemen -- de post IS de uitgave. Zonder dezelfde lening hier zou 459 // het ingesloten Album "Cartoon Epic" heten en zijn eigen URI "Geen koffie, 460 // wel thee!". Een id met twee namen, en dat is precies wat op 16-8 uit de 461 // meting rolde. 462 const perAlbum = new Map(); 463 for (const r of uit.values()) { 464 if (perAlbum.has(r.id)) continue; 465 perAlbum.set(r.id, uitgavePost(siteId, r.id)); 466 } 467 for (const r of uit.values()) r._post = perAlbum.get(r.id) || null; 453 468 return uit; 454 469 } … … 470 485 if (!pl) return null; 471 486 const abs = (u) => !u ? null : (/^https?:/i.test(u) ? u : `${base}${u.startsWith('/') ? '' : '/'}${u}`); 472 const wanneer = pl.created_at ? new Date(pl.created_at).toISOString() : new Date(0).toISOString(); 487 // GEEN epoch als terugval. `published` is bij hen verplicht, maar 1970 is een 488 // ANTWOORD en geen ontbrekend veld -- en dat is erger: een lezer kan een gat 489 // opmerken, een leugen niet. playlists.created_at heeft een default, dus als 490 // hij hier ontbreekt is er een leespad dat de kolom laat vallen. Dat willen we 491 // zien, niet maskeren. (Zo kwam op 16-8 de route boven water die id, title, 492 // artist, year, cover_url en kind selecteerde en de rest niet.) 493 const wanneer = pl.created_at ? new Date(pl.created_at).toISOString() : null; 494 // Dezelfde lening als in buildPlaylistCollection: de post die de plaat 495 // uitbrengt geeft zijn titel, en de eigen titel blijft als alsoKnownAs staan. 496 const titel = (pl._post && pl._post.title) || pl.title; 473 497 const album = { 474 498 type: 'Album', 475 499 id: `${actorId(base, site.slug)}/playlists/${pl.id}`, 476 name: pl.title,477 published: wanneer,500 name: titel, 501 ...(wanneer ? { published: wanneer } : {}), 478 502 attributedTo: actorId(base, site.slug), 479 artist_credit: artistCredit(base, site, pl.artist, wanneer ),503 artist_credit: artistCredit(base, site, pl.artist, wanneer || new Date().toISOString()), 480 504 }; 505 if (titel !== pl.title) album.alsoKnownAs = pl.title; 481 506 // `released` alleen als er een ECHTE datum is. `year` vult hem niet aan: een 482 507 // jaartal is geen dag, en dat is de reden dat release_date bestaat.
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)