Web/node/rss.js

57 lines
1.9 KiB
JavaScript
Raw Normal View History

2019-10-04 23:20:47 +02:00
const {
Feed
} = require("feed");
const fs = require("fs");
2019-10-20 15:56:22 +02:00
const converter = require("./showdown")(1);
2019-10-04 23:20:47 +02:00
2020-04-02 21:54:20 +02:00
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 (_, _) {});
});
2019-10-04 23:20:47 +02:00
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"
}
});
2021-03-11 03:21:23 +01:00
fs.readFile(__dirname + "/../blogsrc/posts.json", function (_, data) {
2019-10-04 23:33:45 +02:00
let json = JSON.parse(data);
2019-10-04 23:20:47 +02:00
for (let i = json.length - 1; i >= 0; i--) {
2019-10-04 23:33:45 +02:00
let post = json[i];
let date = new Date(post.date);
2019-10-04 23:20:47 +02:00
2021-03-11 03:21:23 +01:00
fs.readFile(__dirname + "/../blogsrc/" + post.id + ".md", function (_, content) {
2019-10-04 23:33:45 +02:00
let html = converter.makeHtml(content.toString());
2019-10-04 23:20:47 +02:00
feed.addItem({
2020-09-30 00:27:47 +02:00
title: post.name + (post.archived ? " (Archived)" : ""),
2021-03-11 03:21:23 +01:00
link: "https://ellpeck.de/blog/" + post.id,
description: post.summary,
2019-10-04 23:20:47 +02:00
content: html,
date: date,
published: date
});
if (i == 0) {
callback(feed);
}
});
}
});
}