Working RSS Feed Manager

- Auto updates feeds
- Sends updates to specified channels
- Needs threading
This commit is contained in:
Logan Cusano
2023-02-25 20:56:01 -05:00
parent d33f1ceccc
commit 3266a1550e
4 changed files with 44 additions and 15 deletions

View File

@@ -0,0 +1,26 @@
//Will handle updating feeds in all channels
const { DebugBuilder } = require("../utilities/debugBuilder");
const log = new DebugBuilder("server", "rssController");
const libCore = require("../libCore");
const libUtils = require("../libUtils");
exports.RSSController = class RSSController {
constructor(_client) {
this.client = _client;
}
async start(){
log.INFO("Starting RSS Controller");
while(true){
await new Promise(resolve => setTimeout(resolve, 10000));
this.collectLatestPosts();
}
}
async collectLatestPosts(){
log.INFO("Updating sources");
libCore.updateFeeds(this.client)
}
}

View File

@@ -8,6 +8,7 @@ var http = require('http');
const fs = require('fs');
require('dotenv').config();
const libCore = require("./libCore");
const { RSSController } = require("./controllers/rssController");
const libUtils = require("./libUtils");
const deployCommands = require("./utilities/deployCommands");
@@ -123,8 +124,9 @@ client.on('ready', () => {
log.DEBUG(`Starting HTTP Server`);
runHTTPServer();
log.DEBUG("Loading new posts");
libCore.updateFeeds(client);
log.DEBUG("Loading new posts");
const rssManager = new RSSController(client);
rssManager.start();
});
// Setup any additional event handlers

View File

@@ -2,7 +2,7 @@
let Parser = require('rss-parser');
const axios = require('axios');
let parser = new Parser();
const storageHandler = require("./libStorage");
const { FeedStorage, PostStorage } = require("./libStorage");
const libUtils = require("./libUtils");
const { createHash } = require("crypto");
@@ -19,15 +19,9 @@ const configuration = new Configuration({
const openai = new OpenAIApi(configuration);
*/
// Data Structures
var feeds = {};
var rssFeedMap = [];
var rssFeedCategories = [];
// Setup Storage handlers
var feedStorage = new storageHandler.feedStorage();
var postStorage = new storageHandler.postStorage();
var feedStorage = new FeedStorage();
var postStorage = new PostStorage();
/**
* Adds or updates new source url to configured storage
@@ -291,7 +285,10 @@ exports.getChat = async function (_prompt, { _model = "text-davinci-003", _tempe
* @constructor
*/
exports.getSources = function () {
return feeds;
feedStorage.getAllRecords((err, records) => {
if (err) throw err;
return records;
})
}
/**
@@ -320,7 +317,11 @@ exports.getQuotes = async function (quote_url) {
* @constructor
*/
exports.getCategories = function () {
return rssFeedCategories;
feedStorage.getUniqueByKey("category", (err, results) => {
if (err) throw err;
return results
});
}
exports.addPost = (postObject, callback) => {

View File

@@ -142,7 +142,7 @@ class Storage {
}
}
exports.feedStorage = class feedStorage extends Storage {
exports.FeedStorage = class FeedStorage extends Storage {
constructor() {
super(rssFeedsTable);
}
@@ -323,7 +323,7 @@ exports.feedStorage = class feedStorage extends Storage {
}
}
exports.postStorage = class postStorage extends Storage {
exports.PostStorage = class PostStorage extends Storage {
constructor() {
super(rssPostsTable);
}