moving to airtable design

This commit is contained in:
John Facey
2021-12-24 01:20:45 -06:00
parent f8ff15a018
commit e85d5644d4
6 changed files with 168 additions and 33 deletions

View File

@@ -1,32 +1,84 @@
let Parser = require('rss-parser');
const axios = require('axios');
let parser = new Parser();
let feeds = require('./feeds.json');
var feeds = [];
var jsonfile = require('jsonfile');
var fs = require('fs');
var file = ('./feeds.json');
var Airtable = require('airtable');
var apiKey=process.env.KEY;
var userBase=process.env.BASE;
var userTable =process.env.TABLE
token = process.env.TOKEN;
var base = new Airtable({apiKey: apiKey}).base(userBase);
let linkFlayerMap = [];
let answerData = {
text: ``,
source: ``
}
const { quotes } = require('./quotes.json');
exports.addSource = function(title,source){
var linkData = {
title: `${title}`,
link: `${source}`
}
exports.addSource = function(title,link,category){
for (i=0; i<feeds.length; i++){
if (feeds[i].link == source){
if (feeds[i].link == link){
return;
}
}
feeds.push(linkData);
base(userTable).create([
{
"fields": {
"title": title,
"link": link,
"category": category
}
}
], function(err, record) {
if (err) {
console.error(err);
return;
}
console.log(record.getId());
var linkData = {
title: `${title}`,
link: `${link}`,
category: `${category}`,
id: record.getId()
}
feeds.push(linkData);
});
}
exports.deleteSource = function(title) {
var deleteRecord = "";
for (i=0; i<feeds.length; i++){
if (feeds[i].title == title){
deleteRecord = feeds[i].id;
}
}
base(userTable).destroy(deleteRecord, function(err, deletedRecord) {
if (err) {
console.error(err);
return;
}
console.log(deletedRecord.id);
});
}
exports.sleep = (ms) => new Promise((resolve) => { setTimeout(resolve, ms); })
exports.loadFeeds = function() {
@@ -39,9 +91,10 @@ exports.loadFeeds = function() {
feed.items.forEach(item => {
var linkData = {
title: `${unescape(item.title)}`,
link: `${unescape(item.link)}`,
category: `${unescape(feedBlock.category)}`
title: `${item.title}`,
link: `${item.link}`,
category: `${feedBlock.category}`,
id: record.getId()
}
linkFlayerMap.push(linkData);
});
@@ -51,18 +104,6 @@ exports.loadFeeds = function() {
}
exports.writeFeed = function (feeds) {
jsonfile.writeFile(file, feeds, function (err) {
if (err != null) {
console.error(err);
}
});
console.log("saving feeds.json");
};
exports.getFeeds = function (feedType) {
var linkFlayerFilteredMap = [];
if (feedType == null || feedType == undefined || feedType == "") {
@@ -86,6 +127,32 @@ exports.getQuotes = function () {
return quotes;
}
exports.getConfig = function() {
feeds = [];
base(userTable)
.select().eachPage(function page(records, fetchNextPage) {
records.forEach(function(record) {
console.log('Retrieved title: ', record.get('title'));
console.log('Retrieved link:', record.get('link'));
console.log('Retrieved category:', record.get('category'));
var linkData = {
title: `${record.get('title')}`,
link: `${record.get('link')}`,
category: `${record.get('category')}`
}
feeds.push(linkData);
});
return;
//fetchNextPage();
}, function done(error) {
console.log(error);
});
}
exports.getAnswer = async function (question) {
var answerURL = `https://api.duckduckgo.com/?q=${question}&format=json&pretty=1`;
@@ -112,4 +179,6 @@ exports.getAnswer = async function (question) {
console.log(error);
});
return answerData;
}
}
this.getConfig();