改了一个Recepie,可以通过Google Reader下载所有的历史文章。
先修改下面代码中的rssFeeds=['
http://www.freemindworld.com/blog/feed.rss']'中的RSS地址,改成你想要的。如果有多个,可以用引号逗号隔开。比如:
rssFeeds=['
http://www.luanxiang.org/blog/feed','http://www.write.org.cn/feed']
需要的话可以改一下max_articles_per_feed和oldest_article值,也许现在的默认值太大,会抓到太多的文章。
把改好的代码直接贴到自定义订阅清单的高级模式中即可。
在下载前,还要在"定期新闻下载"对话框中该订阅清单的"日程表"中输入你的Google帐号和密码。
然后就可以点“立即下载”按钮了。
注意,用这个订阅清单(包括别的所有needs_subscription = True的订阅清单)时,在下载任务的日志中会明文输出你输入的帐户和密码,所以如果要把日志往外帖的时候,注意把这些敏感信息清除掉。
import urllib, re, mechanize
from calibre.web.feeds.recipes import BasicNewsRecipe
from calibre import __appname__
class FullFeedViaGoogleReader(BasicNewsRecipe):
title = 'Full Feed Via Google Reader'
description = 'Fetches full feed articles from Google Reader'
needs_subscription = True
__author__ = 'davec, rollercoaster, Starson17, lifanxi'
base_url = '
https://www.google.com/reader/atom/feed/' oldest_article = 10000
max_articles_per_feed = 10000
use_embedded_content = True
def get_browser(self):
br = BasicNewsRecipe.get_browser(self)
if self.username is not None and self.password is not None:
request = urllib.urlencode([('Email', self.username), ('Passwd', self.password),
('service', 'reader'), ('accountType', 'HOSTED_OR_GOOGLE'), ('source', __appname__)])
response = br.open('
https://www.google.com/accounts/ClientLogin', request)
auth = re.search('Auth=(\S*)', response.read()).group(1)
cookies = mechanize.CookieJar()
br = mechanize.build_opener(mechanize.HTTPCookieProcessor(cookies))
br.addheaders = [('Authorization', 'GoogleLogin auth='+auth)]
return br
def get_feeds(self):
rssFeeds = ['
http://www.freemindworld.com/blog/feed.rss']
feeds = [ self.base_url + f + ('?n=%d' % self.max_articles_per_feed) for f in rssFeeds ]
return feeds