Web/node/rss.js

63 lines
2.2 KiB
JavaScript

const {
Feed
} = require("feed");
const fs = require("fs");
const converter = require("./showdown")(1);
let folder = `${__dirname}/../`;
console.log("Refreshing feeds...");
createFeed(function (feed) {
fs.writeFile(`${folder}feed.json`, feed.json1(), function (_) {});
fs.writeFile(`${folder}rss.xml`, feed.rss2(), function (_) {});
fs.writeFile(`${folder}atom.xml`, feed.atom1(), function (_) {});
});
function createFeed(callback) {
const feed = new Feed({
title: "Ellpeck's Blog",
description: "Occasionally I enjoy writing stuff. So here's some of the stuff I've written about gaming, programming and life.",
id: "https://ellpeck.de",
link: "https://ellpeck.de",
image: "https://ellpeck.de/res/logo.png",
favicon: "https://ellpeck.de/favicon.ico",
language: "en",
feedLinks: {
json: "https://ellpeck.de/feed.json",
atom: "https://ellpeck.de/atom.xml",
rss: "https://ellpeck.de/rss.xml"
},
author: {
name: "Ellpeck",
email: "me@ellpeck.de",
link: "https://ellpeck.de"
}
});
fs.readFile(`${__dirname}/../blog/src/posts.json`, function (_, data) {
let json = JSON.parse(data);
for (let i = json.length - 1; i >= 0; i--) {
let post = json[i];
let date = new Date(post.date);
fs.readFile(`${__dirname}/../blog/src/${post.id}.md`, function (_, content) {
let html = converter.makeHtml(content.toString());
feed.addItem({
title: `${post.name}${post.archived ? " (Archived)" : ""}`,
link: `https://ellpeck.de/blog/${post.id}`,
description: post.summary,
content: html,
date: date,
published: date,
category: [{
name: post.cat
}]
});
if (feed.categories.indexOf(post.cat) < 0)
feed.addCategory(post.cat);
if (i === 0)
callback(feed);
});
}
});
}