让Google reader full feed changer支持改写链接

这篇文章是专门针对solidot的,solidot这网站的feed只输出摘要确实挺讨厌的,不过觉得它的文章还算有价值,评论也比cnbeta有营养多了,还是订阅并用Google reader full feed changer来对付,用下面两条xpath来获取全文和评论

{
    url: 'http://solidot.org',
    xpath: '//div[@class="body"] | //ul[@id="commentlisting"]'
},

全文获取没问题,当然引用部分居然用“<i>”来包住确实值得强烈鄙视,抓取全文在Google Reader就成斜体。

google_reader_full_feed_changer_rewrite_feed_link

好了这就算了,评论默认使用嵌套线型,如果要看后续回复,你得切换成嵌套平铺,这还会跳到另一个页面。而还是有些评论叠着起来,原来还要把门槛切换成“-1: XX条评论”才会把所有评论显示出来。

google_reader_full_feed_changer_rewrite_feed_link_1

也就是看一篇文章的正文要点击好几次,还不算上正文提到的链接。研究一下,其实链接末尾加上“&threshold=-1&mode=nested”,就可以了,比如这个,全部评论都出来吧。

现在就需要修改Google reader full feed changer,让它直接把所有评论获取出来,也就是自动加上面那两个参数。编辑脚本,在开头“FullFeed.getCurrentEntry”的函数里,有这么一段

var len = SITE_INFO.length;
for (var i = 0; i < len; i++) {
    var reg = new RegExp(SITE_INFO[i].url);
    if (source.match(reg) || link.match(reg)) {
        this.request(i, link, body);
        break;
    }
}

在if语句下插入改写语句,就这一句

if (i == N) link += "&threshold=-1&mode=nested"

其中“i == N”里的“N”改成要feed在SITE_INFO里的顺序,从0开始,比如我的solidot在SITE_INFO排在最前面,所以是0。“link”是文章原始链接。改好后如下,保存刷新Google Reader就看到效果了。

var len = SITE_INFO.length;
for (var i = 0; i < len; i++) {
    var reg = new RegExp(SITE_INFO[i].url);
    if (source.match(reg) || link.match(reg)) {
        // get full solidot comment
        if (i == 0) link += "&threshold=-1&mode=nested"
        this.request(i, link, body);
        break;
    }
}

一些比较抠门的网站在feed里的链接还不是原始链接,或者要再跳转一下,把链接改写,就能把全文抓下来了。

This entry was posted in 浏览器 and tagged , . Bookmark the permalink.

2 Responses to 让Google reader full feed changer支持改写链接

  1. slowman001 says:

    请问一下订阅http://blog.soft.idv.tw/?feed=rss2后增加
    url: ‘http://blog.soft.idv.tw)’,
    xpath: ‘//div[@class="post"]‘,
    charset: ‘utp8′
    虽然可以看到全文,但是排版全乱掉了,该如何解决?

    回复回复
  2. muzuiget says:

    @slowman001
    因为没有把相应的CSS也抓过来,这个没办法(有也是非常麻烦),只能将就看。

    回复回复

发表评论

您的电子邮箱不会被公开。 标记为 * 的区域必须填写

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">