const { Feed } = require("feed"); const fs = require("fs"); const converter = require("./showdown")(1); module.exports = function () { let folder = __dirname + "/../"; createFeeds(folder); fs.watchFile(folder + "blog/posts.json", function (curr, prev) { if (curr.mtime == prev.mtime) return; createFeeds(folder); }); } function createFeeds(folder) { 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", feedLinks: { json: "https://ellpeck.de/feed.json", atom: "https://ellpeck.de/atom.xml" }, author: { name: "Ellpeck", email: "me@ellpeck.de", link: "https://ellpeck.de" } }); fs.readFile(__dirname + "/../blog/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/" + post.id + ".md", function (_, content) { let html = converter.makeHtml(content.toString()); feed.addItem({ title: post.name, link: "https://ellpeck.de/blog-" + post.id, description: post.summary, content: html, date: date, published: date }); if (i == 0) { callback(feed); } }); } }); }