通过代理更新Gregarius
授权方式:署名,非商业用途,保持一致,转载时请务必以超链接(http://www.fwolf.com/blog/post/360)的形式标明文章原始出处和作者信息及本声明。Gregarius是我现在使用的rss阅读器,其它在线的比如google reader、zhuaxia我网速太慢,使用不顺畅,纯离线方式的吧,比如liferea,在浏览的时候依然要解析html和联网(feed内容中有图像),还是在本机架一个Gregarius,cron定时更新,然后用firefox看方便,保存有价值的文章也更方便。
原先更新都是用wget:
wget --no-check-certificate -O /tmp/gregarius.update https://my_local_machine_name/gregarius/update.php
wget的输出会已本地用户邮件形式被mutt收下来,设定好之后,有一段没时间看rss也没在意,这天忽然发现原来wget只要retry 3、4次就能更新完全部feed,现在需要十几次,而我的feed增长显然没达到这种程度;并且有些网站在Gregarius中看到已经很久没有更新了(-t 1可以指定只retry一次,默认是20次,-t 0为无限制retry下去)。同时在feed管理中看到,很多网站的名字都加上了删除线,比如“月光博客”,最后终于发现,这些名字打上了删除线的blog的feed全部托管在feedburner,并且内容全部没有更新,原因,自然是开始于前段时间的feedburner无法访问。
feedburner无法访问我倒不怕,我一直都在本机用squid、privoxy、tor智能中转web访问请求,现在只要让gregarius更新feed时用上我这个本地的代理服务器squid就可以了,看了一下gregarius的代码,远程读取rss使用的是Snoopy类,本地文件为extlib/Snoopy.class.inc,调用是在extlib/rss_fetch.inc文件中,大概第317行,function _fetch_remote_file部分,在这里添加如下内容即可:
$client->read_timeout = MAGPIE_FETCH_TIME_OUT;
$client->use_gzip = MAGPIE_USE_GZIP;
// 这几行是添加的内容,其它是原文件中的 Modify by Fwolf @ 2007-10-14
// Use proxy localhost:3128 when fetch feed
$client->proxy_host = "localhost";
$client->proxy_port = "3128";
$client->_isproxy = true;
$client->read_timeout = 0; // tor via squid is slow
//
if (is_array($headers) ) {
$client->rawheaders = $headers;
}
就这么简单,$client的设置参照Snoopy类的定义即可,然后调用不再使用wget,而是直接运行update.php:
cd /local/path/to/gregarius; php -f update.php
这样更新的结果会清晰的输出:
Engadget Simplified Chinese ...
OK (HTTP 200), 3 New Items
玩意儿 ...
OK (304 Not modified), 0 New Items
津津乐道 ...
HTTP Timeout (Local cache), 0 New Items
小众软件 ...
OK (HTTP 200), 0 New Items
如果加上-- --silent就没有输出了,第一个--是给截止php接收参数的参数,--silent才是给update.php用的。
本文针对Gregarius 0.5.5 revision1761。
Bookmark and Share This Page
If you like this then please subscribe to the RSS Feed.
Save to Browser Favorites
Ask
backflip
blinklist
BlogBookmark
Bloglines
BlogMarks
Blogsvine
BuddyMarks
BUMPzee!
CiteULike
co.mments
Connotea
del.icio.us
DotNetKicks
Digg
diigo
dropjack.com
dzone
Facebook
Fark
Faves
Feed Me Links
Friendsite
folkd.com
Furl
Google
Hugg
Jeqq
Kaboodle
kirtsy
linkaGoGo
LinksMarker
Ma.gnolia
Mister Wong
Mixx
MySpace
MyWeb
Netvouz
Newsvine
PlugIM
popcurrent
Propeller
Reddit
Rojo
Segnalo
Shoutwire
Simpy
Slashdot
Sphere
Sphinn
Spurl.net
Squidoo
StumbleUpon
Technorati
ThisNext
Webride
Windows Live
Yahoo!
Email This to a Friend
October 15th, 2007 at 8:15:14
不错不错。
直到现在我都用 wget:
0 * * * * wget -q -o /dev/null -O /dev/null http://rss.geelake.com/update.php >/dev/null 2>&1
[Reply]
October 15th, 2007 at 9:09:47
我也有一个站用gregarius。开始觉得很好。后来觉得还是linlina简单方便。所以其他聚合都用lilinan。gregariius本来想换掉了。现在看你也在研究和使用这个,我就保留吧。一定能从你的使用心得中将来收获不少呢。
这个什么意思?看着让人激动啊。能否找时间详细说一下。
给你提一个建议。为什么不把你gregarius站点放在国外呢,那样更新源不就没有问题了么?之后再邮件发给你。
既然你现在有主机了,上面也能cron,可以尝试一下啊。
[Reply]
October 15th, 2007 at 9:30:31
@jlake 极湖也是你的网站吧?怎么用opera的blog了?程序一般,还无法访问,不过现在好了:
@bxy wget的输出其实没有什么实际意义的,和shell下的输出结果一样,cron会把输出以本地用户邮件形式发给用户,mutt里自然就能看到了,比如下面的内容:
不放主机上不是因为cron占资源,而是因为会被爬虫乱抓(不是所有的都遵守robots.txt),并且会影响别人的网站,原来有网友抱怨我gregarius里的内容在搜索引擎中排在他网站前面(这里,fcicq的留言);另外也没有意义,就我自己用,远程数据备份也不方便。
[Reply]