What is feedBase?

A project to get lots of feeds into a database.

How it works

Each feedBase user has a single OPML file containing their subscriptions. You can edit the file whenever you like. When your list changes your subscriptions are added to a database of the subscriptions of all other Scripting News readers. From that we compile a top 100 list so we can see who everyone else subscribes to and find other interesting sites. Periodically we read the feeds to keep our database of info about them up to date.

View readXmlFeed.js
function readXmlFeed (urlfeed) { //1/16/18 by DW
//Instead of processing items as they come in, gather them into an array, and process them at the end.
var req = myRequestCall (urlfeed);
var feedparser = new FeedParser ();
var feedItems = new Array ();
req.on ("response", function (response) {
var stream = this;
if (response.statusCode == 200) {
stream.pipe (feedparser);
View codeQueues2.js
function readRiverFile (relpath, afterReadCallback, callback) {
var f = config.dataFolder + relpath;
if (riverQueues [f] === undefined) {
riverQueues [f] = [callback];
fs.readFile (f, function (err, jsontext) {
var jstruct = undefined;
if (!err) {
try {
jstruct = JSON.parse (jsontext);
View codeQueues.js
function readRiverFile (relpath, callback) {
var f = config.dataFolder + relpath;
if (riverQueues [f] === undefined) {
riverQueues [f] = [callback];
fs.readFile (f, function (err, data) {
if (err) {
console.log ("readRiverFile: err.message == " + err.message);
else {
var theQueue = riverQueues [f];
View uploadToGithub.js
const request = require ("request");
const fs = require ("fs");
var myPost = {
username: "scripting",
repo: "test1",
path: "ideas/plot.html",
content: "<!DOCTYPE html>\n<html><body>A programmer writes a demo app. Everyone lives happily ever after.</body></html>",
type: "text/html",
committer: {
View runUserScript.js
function runUserScript (s, scriptName) {
var now = new Date ();
function msg (s) {
var package = {
text: s,
path: scriptName
bullMancuso.send ("callback", "msg", utils.jsonStringify (package));
function persist (objectName) {
View systemScript.ftsc
local (sourcefolder = user.prefs.dropboxfolder + "");
local (githubfolder = user.prefs.githubfolder + "fargoPublisher:");
local (montaukfolder = user.prefs.dropboxfolder + "montauk:fargopub:");
on copyone (f1, f2) {
file.surefilepath (f2);
try {
if file.readwholefile (f1) != file.readwholefile (f2) {
file.copy (f1, f2)
View config.json
"localPath": "/home/ubuntu/Dropbox/Nodescripts2/littleoutliner/publicFiles"
View config.json
"watchFolder": "/Users/davewiner/publicFolder/",
"s3Folder": "/",
"urlS3Folder": ""
View example.js
//see blog post here --
function openLinksInExternalWindow () {
$(document).off ("click", 'a[href^="http"]'); //remove pre-existing click handlers
$(document).on ("click", 'a[href^="http"]', function (event) {
event.preventDefault (); (this.href);