- Timestamp:
- 08/08/2026 05:30:29 AM (5 weeks ago)
- Branches:
- main
- Children:
- cf5073b
- Parents:
- 34e63f0
- git-author:
- Robin <roboburr@…> (08/08/2026 05:28:46 AM)
- git-committer:
- Robin <roboburr@…> (08/08/2026 05:30:29 AM)
- Location:
- src
- Files:
-
- 2 edited
-
routes/feed.js (modified) (3 diffs)
-
services/ActivityPubService.js (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/routes/feed.js
r34e63f0 r4d81de5 66 66 const tracks = siteOpenTracks(site.id); 67 67 const lastBuild = posts[0]?.published_at || new Date().toISOString(); 68 69 // De itunes-velden waar een podcast-app een kanaal aan herkent. Funkwhale 70 // bouwde onze kanaalpagina langs de RSS-kant op en liet de categorie leeg, 71 // want die leest hij hier -- niet uit `category` op de AP-actor. 72 // 73 // De categorie volgt DEZELFDE regel als daar: alleen 'Music' als er ook 74 // werkelijk publieke muziek is. Een blog zonder open track is naar buiten 75 // toe geen muziekkanaal, en gated muziek telt niet mee -- afwezig is 76 // afwezig, ook in een categorie. 77 const abs = (u) => !u ? null : (/^https?:/i.test(u) ? u : `${base}${u.startsWith('/') ? '' : '/'}${u}`); 78 const kanaalKunst = abs(site.profile_photo || site.og_image_default || null); 79 const kanaalTags = [ 80 ` <itunes:author>${escapeXml(site.author || site.title || '')}</itunes:author>`, 81 site.description || site.tagline 82 ? ` <itunes:summary>${escapeXml(site.description || site.tagline)}</itunes:summary>` : null, 83 kanaalKunst ? ` <itunes:image href="${escapeXml(kanaalKunst)}" />` : null, 84 tracks.length ? ' <itunes:category text="Music" />' : null, 85 ].filter(Boolean).join('\n'); 68 86 69 87 const wanneer = (d) => { const t = Date.parse(d); return Number.isNaN(t) ? 0 : t; }; … … 88 106 <description>${escapeXml(t.artist || '')}</description> 89 107 <enclosure url="${escapeXml(`${base}/audio/stream/${encodeURIComponent(fn)}`)}" length="${Number(t.size) || 0}" type="${escapeXml(t.mime_type || 'audio/mpeg')}" />${t.duration ? ` 90 <itunes:duration>${Math.round(t.duration)}</itunes:duration>` : ''} 108 <itunes:duration>${Math.round(t.duration)}</itunes:duration>` : ''}${t.artist ? ` 109 <itunes:author>${escapeXml(t.artist)}</itunes:author>` : ''}${abs(t.cover_url) ? ` 110 <itunes:image href="${escapeXml(abs(t.cover_url))}" />` : ''} 91 111 </item>` }; 92 112 }), … … 103 123 <lastBuildDate>${new Date(lastBuild).toUTCString()}</lastBuildDate> 104 124 <atom:link href="${escapeXml(base + '/feed.xml')}" rel="self" type="application/rss+xml" /> 125 ${kanaalTags} 105 126 ${items} 106 127 </channel> -
src/services/ActivityPubService.js
r34e63f0 r4d81de5 233 233 * de kast, niet enable_audio_player -- die staat standaard aan en zegt niets. 234 234 */ 235 function channelCategory(site) { 236 try { 237 return db.prepare('SELECT 1 FROM audio_tracks WHERE site_id = ? LIMIT 1').get(site.id) ? 'music' : null; 235 export function channelCategory(site) { 236 try { 237 // ALLEEN opengezette tracks tellen. Eerst keek dit naar elke track, ook een 238 // gated -- en dan roept een site met uitsluitend afgeschermde muziek toch 239 // "hier is muziek" naar de hele fediverse. Dat botst met de regel die we 240 // overal aanhouden: een gesloten track is AFWEZIG, niet stilletjes 241 // aanwezig. Naar buiten toe is een kanaal zonder publieke muziek geen 242 // muziekkanaal. 243 return db.prepare('SELECT 1 FROM audio_tracks WHERE site_id = ? AND fedi_open = 1 LIMIT 1').get(site.id) ? 'music' : null; 238 244 } catch { return null; } 239 245 } … … 6039 6045 AP_CONTEXT, getOrCreateKeys, apWants, sendAP, actorId, noteId, stripLeadingMentions, 6040 6046 buildActor, buildNote, buildCreate, buildOutbox, buildFollowers, buildFollowing, buildFeatured, 6041 channelUrls, timelineFields, guessMediaType,6047 channelUrls, channelCategory, timelineFields, guessMediaType, 6042 6048 siteOpenTracks, openTrack, buildTrackAudio, buildTrackCollection, buildTrackCreate, 6043 6049 buildPlaylistCollection, playlistOpenTracks, listPlaylistsAP, playlistLinkTags,
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)