Nu-Reader是一个可扩展的可定制的订阅/采集程序
注意!当前版本只是一个简单粗陋、bug百出的试验/预览版本,主要用以验证想法的可行性
- Node
- MongoDB
cd {project_dir}
npm install
node app.js
使用浏览器打开 http://127.0.0.1:3000
传统RSS Reader的内核本质上是抓取RSS源-解析RSS-更新内容-呈现内容的程序。实际上这样的过程不仅仅适用于RSS。在强调语义化网络和mushup(混搭)的今天,数据以传统html、语义化标签、api、webservice等各种方式传播,传统RSS Reader不再能满足大家的需求。
Nu-Reader提供了信息处理的统一流程和简单的扩展机制,只要编写少量代码和简单的配置就可以拓展新的功能。
在Nu-Reader里可以定义不同的订阅方式(Action)。如图:
RSS订阅是最基本的方式,其他预置的订阅方式由读取既有的API、解析HTML、改变RSS原有内容等方法实现。新的订阅方式(Action)是简单轻量的,可以利用既有的基础
每种订阅方式由一到多个子动作组成(管道),以最基本的RSS订阅为例:feed.fetch -> feed.removeDuplicate -> feed.update,即RSS采集 -> 去重 -> 更新内容。(注意上图中的items列)
为什么要分成一个个子动作呢?想象每种订阅方式是一节节组成的水管,某段管子不合适,我们就可以换掉这一段,中间还可以加上净水器、加热器、水表等等。这种方式提高了复用性和灵活性。比如我们只想在V2EX招聘的RSS中订阅有关上海的条目,我可以新建一个Action名为“RSS filter 上海”,在RSS basic的基础上加入一个简单的自定义子动作custom.shanghai
exports.shanghai = function(data,callback) {
data.items = data.items.filter(function(item){
return item.title.search('上海')!==-1;
});
callback(data);
}
这样我们在订阅时选择“RSS filter 上海”,获得的内容就是过滤过的。
在自带的其他实例action里,Zhuhu Daily针对json数据源,赶集租房和Github Trending针对html页面。RSS - mail启用了一个mail子动作,可以讲获得的最新内容发到的邮箱中,实际上mail子动作可以放在任意一种Action的末尾
再生成当前频道的RSS
获取所有文章, 附加参数: size,offset,job
获取某篇文章
获取所有任务(订阅)
添加任务(订阅)
删除任务(订阅)
所有动作(订阅方式)
添加一个动作
删除一个动作
开启后台进程
关闭后台进程