Changeset 2091647 in Klonkt for src/services/music
- Timestamp:
- 08/15/2026 07:03:06 AM (4 weeks ago)
- Branches:
- main
- Children:
- 732272a
- Parents:
- eac3229
- File:
-
- 1 edited
-
src/services/music/index.js (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/services/music/index.js
reac3229 r2091647 168 168 url: [...(post ? [{ type: 'Link', href: `${base}/${post.slug}`, mediaType: 'text/html' }] : []), bestand], 169 169 }; 170 // De bak waar dit bestand in hangt (shaer-0nh). Voor Funkwhale is dit het 171 // haakje waaraan een upload komt te zitten; zonder dit veld blijft een track 172 // daar een naam zonder geluid. 173 a.library = libraryId(base, site); 170 174 if (r.artist) a.summary = r.artist; // artiest als summary: kaal AS2, geen eigen vocab 171 175 // AS2-kern `context`: "de context waarbinnen dit object bestaat". Voor een … … 211 215 if (/^https?:\/\//i.test(s)) return safeUrl(s); // iemand vulde al een URI in 212 216 return LICENTIES[s.toLowerCase()] || null; // "Alle rechten voorbehouden" heeft er geen 217 } 218 219 /** Het AS2-id van de bibliotheek van een site. */ 220 export function libraryId(base, site) { 221 return `${actorId(base, site.slug)}/library`; 222 } 223 224 /** 225 * De site als Funkwhale-LIBRARY (skelet). 226 * 227 * WAAROM DIT GEEN DIALECT IS ZOALS track EN ArtistCredit DAT WEL ZIJN. Die twee 228 * vragen entiteiten waar wij tekst hebben; hiervoor hoeven we niets te 229 * verzinnen. Een library is precies wat er al staat: onze open tracks, met een 230 * echte telling en een echt id. 231 * 232 * WAAROM HET NODIG IS, gemeten op 13-8. open.audio heeft onze vier tracks 233 * binnengehaald langs de AP-weg -- met ONZE track-id's, en met een artist_credit 234 * dat Funkwhale zelf uit onze attributedTo afleidde. Maar `uploads` is leeg en 235 * `is_playable` false. Bij hen hangt een upload aan een library; zonder library 236 * is er geen bak om het bestand in te hangen. Het audiobestand zelf is wel 237 * gewoon op te halen (200, audio/mpeg, ook anoniem) -- ze hebben het niet 238 * geprobeerd. 239 * 240 * SKELET, en dat woord is letterlijk bedoeld. Dit is de vorm uit hun docs: 241 * type, id, name, followers, totalItems, first, last, plus attributedTo en 242 * summary. Wat er NIET is: de volg-afhandeling. Onze bibliotheek is openbaar -- 243 * elke track erin heeft fedi_open -- dus er valt niets goed te keuren. Komt er 244 * ooit een besloten variant, dan hoort daar het Follow/Accept-werk bij. 245 */ 246 export function buildLibrary(base, site, rows) { 247 const id = libraryId(base, site); 248 const hostPosts = site.id ? trackHostPosts(site.id) : null; 249 const items = (rows || []).map((r) => buildTrackAudio(base, site, r, { hostPosts })); 250 return pagedCollection(id, items, { 251 extra: { 252 type: 'Library', 253 name: site.title || site.slug, 254 attributedTo: actorId(base, site.slug), 255 // Vereist volgens hun docs. Openbaar, dus de telling is eerlijk en de 256 // lijst blijft leeg -- wie ons volgt volgt de ACTOR, niet de bak. 257 followers: `${id}/followers`, 258 ...(site.description ? { summary: String(site.description).slice(0, 500) } : {}), 259 }, 260 }); 213 261 } 214 262
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)