Changes in src/services/ap-core.js [9a585bf:fbfd7a1] in Klonkt
- File:
-
- 1 edited
-
src/services/ap-core.js (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/services/ap-core.js
r9a585bf rfbfd7a1 57 57 // zou een verhuizing kunnen laten mislukken. 58 58 sameAs: { '@id': 'schema:sameAs', '@type': '@id' }, 59 // ── Wat we uit Funkwhale's vocabulaire overnemen, en waarom ──60 //61 // LIBRARY. Gemeten op 13-8: open.audio had onze vier tracks binnengehaald62 // via hun AP-id, met een artist_credit dat het zelf uit onze attributedTo63 // afleidde -- maar uploads LEEG en is_playable false. Bij Funkwhale hangt64 // een upload aan een library; zonder die bak blijft een track een naam65 // zonder geluid.66 //67 // TRACK. Hier stond dat we deze NIET namen, met als reden: hij vraagt een68 // entiteit waar wij tekst hebben, en er een id voor verzinnen belooft wat69 // we niet waarmaken. Die redenering klopte half, en de Emissary-meting van70 // 16-8 (shaer-3f8a) laat zien welke helft. Een TRACK heeft bij ons wel71 // degelijk een eigen identiteit -- het is een rij met een titel en een72 // plaats in een uitgave. Wat wij niet hebben is een ALBUM als entiteit, en73 // dat is een andere vraag (shaer-k37k). Emissary stuurt precies die kleine74 // vorm: type, id, name, position. Wij ook, en album blijft eruit tot het75 // een echt object is -- een verzonnen album-URI is nu juist wel de belofte76 // die we niet kunnen waarmaken.77 //78 // Twee onafhankelijke implementaties zenden dit nu, en het is de kant waar79 // FEP-be68 heen beweegt. ArtistCredit blijft eruit: dat is nog steeds een80 // entiteit die wij niet hebben.81 //82 // De vorm van de termen is letterlijk die van hun contexts.py (regel83 // 293-306), zodat een lezer die hun context laadt en een lezer die de onze84 // leest op dezelfde IRI's uitkomen.85 fw: 'https://funkwhale.audio/ns#',86 Library: 'fw:Library',87 library: { '@id': 'fw:library', '@type': '@id' },88 Track: 'fw:Track',89 track: { '@id': 'fw:track', '@type': '@id' },90 // ARTIEST-CREDIT. Hun TrackSerializer eist minstens een artist_credit, en91 // dat leek lang onmogelijk: het vraagt een Artist met een eigen id, en bij92 // ons was een artiest tekst. Sinds de MusicBrainz-koppeling (shaer-mbz) is93 // dat niet meer waar -- de site-ACTOR is de artiest. Een echte, opvraagbare94 // URI, met de sitetitel als naam en een musicbrainzId als hij gekoppeld is.95 // Er valt hier niets te verzinnen; open.audio leidde dit zelfs al zelf af96 // uit onze attributedTo (gemeten 13-8).97 //98 // `@container: @list` is GEEN opsmuk. Ze lezen dit veld met99 // first_attr(FW.artist_credit, "@list"), en zonder die declaratie expandeert100 // onze array niet naar een @list -- dan staat er iets dat er goed uitziet en101 // door hun lezer niet gevonden wordt. Letterlijk hun contexts.py regel 311.102 Artist: 'fw:Artist',103 ArtistCredit: 'fw:ArtistCredit',104 artist: { '@id': 'fw:artist', '@type': '@id' },105 artist_credit: { '@id': 'fw:artist_credit', '@type': '@id', '@container': '@list' },106 credit: 'fw:credit',107 musicbrainzId: 'fw:musicbrainzId',108 59 position: 'schema:position', 109 60 bitrate: 'schema:bitrate', … … 298 249 * en zonder `next`. Hem naar de laatste pagina terugbuigen zou opnieuw een 299 250 * antwoord zijn dat over zichzelf liegt. 300 * 301 * `ongeordend` maakt er de NIET-geordende vorm van: `Collection` met 302 * `CollectionPage` en `items`, in plaats van `OrderedCollection` met 303 * `OrderedCollectionPage` en `orderedItems`. Dat is geen dialect maar de andere 304 * helft van AS2 -- en de bibliotheek hoort daar: een platenkast heeft geen 305 * volgorde die iets betekent, en `Library` is bij Funkwhale expliciet een 306 * `Collection`. Onze outbox is wél geordend (chronologie is daar de inhoud) en 307 * blijft dus zoals hij was. 308 * 309 * De pagina draagt in die vorm ook `first` en `last`. AS2 staat dat toe -- 310 * CollectionPage erft van Collection -- en een lezer die halverwege binnenkomt 311 * kan zo terug naar het begin zonder eerst de wortel op te halen. 312 */ 313 export function pagedCollection(id, items, { totalItems, page = false, perPage = PAGINA_GROOTTE, alGesneden = false, ongeordend = false, extra = {} } = {}) { 251 */ 252 export function pagedCollection(id, items, { totalItems, page = false, perPage = PAGINA_GROOTTE, alGesneden = false, extra = {} } = {}) { 314 253 const lijst = items || []; 315 254 const telling = totalItems === undefined ? lijst.length : totalItems; … … 328 267 '@context': AP_CONTEXT, 329 268 id: url(n), 330 type: ongeordend ? 'CollectionPage' :'OrderedCollectionPage',269 type: 'OrderedCollectionPage', 331 270 partOf: id, 332 271 totalItems: telling, 333 ...(ongeordend ? { first: url(1), last: url(paginas) } : {}),334 ...(extra.attributedTo ? { attributedTo: extra.attributedTo } : {}),335 272 ...(n > 1 ? { prev: url(n - 1) } : {}), 336 273 ...(n < paginas ? { next: url(n + 1) } : {}), 337 ...(ongeordend ? { items: deel } : { orderedItems: deel }),274 orderedItems: deel, 338 275 }; 339 276 } … … 341 278 '@context': AP_CONTEXT, 342 279 id, 343 type: ongeordend ? 'Collection' :'OrderedCollection',280 type: 'OrderedCollection', 344 281 ...extra, 345 282 totalItems: telling, 346 283 first: url(1), 347 284 last: url(paginas), 348 ...(ongeordend ? { items: lijst } : { orderedItems: lijst }),285 orderedItems: lijst, 349 286 }; 350 287 }
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)