2022-06-08 12:28:30 +01:00
|
|
|
// Import dependencies
|
|
|
|
const fs = require("fs");
|
|
|
|
const Parser = require("rss-parser");
|
2022-06-09 10:06:22 +01:00
|
|
|
const { filterFeed } = require("./FeedFilter");
|
2022-06-08 22:10:37 +01:00
|
|
|
const lodash = require('lodash');
|
2022-06-09 07:34:40 +00:00
|
|
|
const log = require('simple-node-logger').createSimpleLogger('jdrssdownloader.log');
|
2022-06-08 12:28:30 +01:00
|
|
|
|
2022-06-09 10:29:05 +01:00
|
|
|
async function feedUpdater() {
|
2022-06-09 10:06:22 +01:00
|
|
|
// Make a new RSS Parser
|
|
|
|
const parser = new Parser();
|
2022-06-08 12:28:30 +01:00
|
|
|
|
2022-06-09 10:06:22 +01:00
|
|
|
// Get all the items in the RSS feed
|
|
|
|
const feed = await parser.parseURL(JSON.parse(fs.readFileSync('config.json')).RSSFeed);
|
2022-06-08 12:28:30 +01:00
|
|
|
|
2022-06-09 10:06:22 +01:00
|
|
|
let items = [];
|
2022-06-08 12:28:30 +01:00
|
|
|
|
2022-06-09 10:06:22 +01:00
|
|
|
// Clean up the string and replace reserved characters
|
|
|
|
const fileName = `${feed.title.replace(/\s+/g, "-").replace(/[/\\?%*:|"<>]/g, '').toLowerCase()}.json`;
|
2022-06-08 12:28:30 +01:00
|
|
|
|
2022-06-09 10:06:22 +01:00
|
|
|
if (fs.existsSync(fileName)) {
|
|
|
|
items = require(`./${fileName}`);
|
|
|
|
}
|
|
|
|
// Compare existing cache and new items and merge differences
|
|
|
|
let updatedArray = lodash.unionBy(feed.items, items, 'title');
|
2022-06-08 22:10:37 +01:00
|
|
|
|
2022-06-09 10:06:22 +01:00
|
|
|
// Save the file
|
|
|
|
log.info(updatedArray.length + ' items in file cache')
|
|
|
|
fs.writeFileSync(fileName, JSON.stringify(updatedArray));
|
|
|
|
|
|
|
|
// run next part
|
2022-06-09 10:29:05 +01:00
|
|
|
// return fileName
|
|
|
|
// filterFeed(fileName)
|
|
|
|
}
|
|
|
|
// ();
|
|
|
|
|
|
|
|
module.exports = {
|
|
|
|
feedUpdater
|
|
|
|
}
|