Wondering what’s next for npm?Check out our public roadmap! »

    rss-braider

    1.2.4 • Public • Published

    Build Status dependencies Status

    Summary

    Braid/aggregate one or more RSS feeds (file or url) into a single feed (RSS or JSON output). Process resulting feed through specified plugins. Automatic deduplication

    Installation

    npm install rss-braider
    

    Test

    npm install
    npm test
    

    Examples

    $ cd examples
    $ node simple.js  (combines 3 sources)
    $ node use_plugins.js (combines 3 sources and runs a transformation plugin)
    

    Code Example

    var RssBraider = require('rss-braider'),
        feeds = {};
     
    // Pull feeds from config files:
    //      feeds.simple_test_feed = require("./config/feed").feed;
    // Or define in-line
    feeds.simple_test_feed = {
        "feed_name"             : "feed",
        "default_count"         : 1,
        "no_cdata_fields"       : [], // Don't wrap these fields in CDATA tags
        "meta" : {
            "title": "NPR Braided Feed",
            "description": "This is a test of two NPR"
        },
        "sources" : [
            {
                "name"              : "NPR Headlines",
                "count"             : 2,
                "feed_url"          : "http://www.npr.org/rss/rss.php?id=1001",
            },
            {
                "name"              : "NPR Sports",
                "count"             : 2,
                "feed_url"          : "http://www.npr.org/rss/rss.php?id=1055"
            }
        ]
    };
    var braider_options = {
        feeds           : feeds,
        indent          : "    ",
        date_sort_order : "desc", // Newest first
        log_level       : "debug"
    };
    var rss_braider = RssBraider.createClient(braider_options);
     
    // Override logging level (debug, info, warn, err, off)
    rss_braider.logger.level('off');
     
    // Output braided feed as rss. use 'json' for JSON output.
    rss_braider.processFeed('simple_test_feed', 'rss', function(err, data){
        if (err) {
            return console.log(err);
        }
        console.log(data);
    });

    Plugins

    Plugins provide custom manipulation and filtering of RSS items/articles. See examples/plugins for examples.

    A plugin operates by modifying the itemOptions object or by returning null which will exclude the item (article) from the resulting feed (See examples/plugins/filter_out_all_articles.js).

    The itemsOptions object gets passed to node-rss to generate the RSS feeds, so read the documentation on that module and its use of custom namespaces. (https://github.com/dylang/node-rss)

    Plugin Example

    This plugin will capitalize the article title for all articles

    module.exports = function (item, itemOptions, source) {
        if (!item || !itemOptions) {
            return;
        }
     
        if (itemOptions.title) {
            itemOptions.title = itemOptions.title.toUpperCase();
        }
     
        return itemOptions;
    };

    The plugin is registered with the feed in the feed config .js file and are run in order.

    var feed = {
        "feed_name"         : "feed with plugins",
        "default_count"     : 1,
        "plugins"           : ['capitalize_title', 'plugin_template'],
    ...

    Release Notes

    1.0.0

    Changed plugin architecture to allow filtering out of article/items by returning -1 instead of a modified itemsOptions object. This is a breaking change as it will require existing plugins to return itemsOptions instead of modifying the reference. See examples/plugins.

    Install

    npm i rss-braider

    DownloadsWeekly Downloads

    18

    Version

    1.2.4

    License

    MIT

    Unpacked Size

    347 kB

    Total Files

    36

    Last publish

    Collaborators

    • avatar