// Generate RSS feed from blog posts async function generateRSSFeed() { try { const response = await fetch('/blog/blog-posts.json'); const posts = await response.json(); // Sort posts by date (newest first) const sortedPosts = posts.sort((a, b) => new Date(b.date) - new Date(a.date)); // Build RSS XML const rssItems = sortedPosts.map(post => { // Escape HTML in content for XML const escapeXml = (str) => { return str.replace(/&/g, '&') .replace(//g, '>') .replace(/"/g, '"') .replace(/'/g, '''); }; const content = escapeXml(post.content); const title = escapeXml(post.title); const excerpt = escapeXml(post.excerpt); const pubDate = new Date(post.date).toUTCString(); return ` ${title} https://example.com/blogpost.html?id=${post.id} https://example.com/blogpost.html?id=${post.id} ${pubDate}
${content}]]>
`; }).join('\n'); const rssXml = ` My Blog https://example.com/blog Blog posts en-us ${new Date().toUTCString()} ${rssItems} `; return rssXml; } catch (error) { console.error('Error generating RSS feed:', error); return null; } } // If this script is run directly (not imported), generate and serve the feed if (typeof window === 'undefined') { // Node.js environment - generate RSS file const fs = require('fs'); const path = require('path'); async function writeRSSFile() { const posts = JSON.parse(fs.readFileSync(path.join(__dirname, 'blog-posts.json'), 'utf8')); const sortedPosts = posts.sort((a, b) => new Date(b.date) - new Date(a.date)); const escapeXml = (str) => { return str.replace(/&/g, '&') .replace(//g, '>') .replace(/"/g, '"') .replace(/'/g, '''); }; const rssItems = sortedPosts.map(post => { const content = escapeXml(post.content); const title = escapeXml(post.title); const excerpt = escapeXml(post.excerpt); const pubDate = new Date(post.date).toUTCString(); return ` ${title} https://example.com/blogpost.html?id=${post.id} https://example.com/blogpost.html?id=${post.id} ${pubDate}
${content}]]>
`; }).join('\n'); const rssXml = ` My Blog https://example.com/blog Blog posts en-us ${new Date().toUTCString()} ${rssItems} `; fs.writeFileSync(path.join(__dirname, 'feed.xml'), rssXml, 'utf8'); console.log('RSS feed generated successfully'); } writeRSSFile(); }