// 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();
}