CentOS 上实现 Google Reader 自动推送到 Kindle 的功能

首先,如果你嫌麻烦而且没有VPS而且对推送的内容不需要包含图片的话,那么你可以直接去下面这个网站:

http://reader.dogear.mobi/

直接用你的Google帐户登陆就好,一步搞定,不过推送过来的东西没有图片,所以很不爽。那么就按照我的步骤来一步步完成这个事情吧。

首先我们需要做一个准备工作,因为CentOS上面的Python是2.4的很多库都木有,然后呢一个个去装又比较麻烦,所以我就直接升级了CentOS上面的Python到2.7.1,步骤很简单,登陆到VPS的SSH后步骤如下:

1.从官网下载Python 2.7

wget http://www.python.org/ftp/python/2.7.1/Python-2.7.1.tar.bz2

2.安装

tar -jxvf Python-2.7.1.tar.bz2 cd Python-2.7.1 ./configure (如不指定 --prefix,默认安装在/usr/local/lib/python2.7) make && make install

3.设定默认版本

mv /usr/bin/python /usr/bin/python24 ln -s /usr/local/bin/python2.7 /usr/bin/python

好的,这里开始你的VPS上面的Python就是2.7.1的了,下面就开始我们的正题咯~首先我们要准备的东西如下:

1.kindlereader

https://github.com/jiedan/kindlereader

这个是用来抓取Google Reader的一个小程序,Python写的,git管理,可以直接在VPS上用命令:

git clone https://github.com/jiedan/kindlereader.git

但是由于后面有些东西要修改而且还要添加一些内容,所以推荐在本地先同步下来测试好在和后面的文件一并打包上传到vps里面。同步下来的文件这些是有用的:

kindlereader.py 、lib(文件夹)、feed2mobi.py、config.ini(同步下来是config.sample.ini,改名为config.ini)

把上述文件放到一个文件夹里面。

2.Kindle Publishing Programs

下载地址:http://www.amazon.com/gp/feature.html?ie=UTF8&docId=1000234621

这个是用来生成图文并茂的kindle的mobi文件用的,必须包含,因为要跑在CentOS上面,所以选择Linux版本下载下来,并且把压缩包里面的kindlegen这个文件放到刚git 获取下来的 kindlereader 文件夹里面(注意,需要和kindlereader.py同目录)

到这里,准备工作就好了,下面开始配置工作。

配置工作非常简单,主要就是修改config.ini文件,里面都有中文的注释也不用多讲,我这里就贴官方的sample了~:

[general] ; 是否自动退出, 1 要, 0 否, 计划任务一般都要自动退出 autoexit = 0 ; 输出格式,支持 epub 和 mobi,默认为 mobi ; TODO:epub计划中还不支持 outputformat = mobi ; 输出 kindle格式的类型: book 或 periodical kindleformat = book [reader] ; google reader 用户名 username = yourname@gmail.com ; google reader 密码,可以不写提示时再输入 password = ; 需要抓取的分类,此项优先于 skipcategories, 仅当此项为空时 skipcategories 设置有效 selectcategories = ; 跳过分类,用英文逗号隔开, 例如:label1,label2 skipcategories = ; 是否要标记为已读: 1 标记, 0 不标记 markread = 0 ; 每个feed中最多抓取条目 maxitemsnumber = 20 ; 排除已读 1 是 0 否, 如果设置为是则为只加载未读条目,反之亦然 excluderead = 1 ; 每篇文章最多下载图片数数目, -1 为不限, 图片太多可能需要时间很长并且造成mobi过大无法发送 ; 如果下载图片需要kindlegen支持,请确保kindlereader.exe所在目录中包含kindlegen.exe maximageperarticle = 5 ; 邮件发送设置 [mail] ; 是否发送邮件,如果不发送可以直接拷贝 /data/ 中相应文件到kindle: 1 发送, 0 不发送 ; 下载图片一般mobi会很大,建议不要发送邮件了,直接到/data目录拷贝mobi文件至kindle mail_enable = 0 ; 发件人,请使用亚马逊注册邮箱,或你的"Your Kindle's approved email list"中的其他邮箱 from = youremail ; 亚马逊提供的投递邮箱地址,注意 @free.kindle.com只能投递到wifi, @kindle.com可以投递到3G但要收费,也可以填写一个其他邮箱地址,由该邮箱转发到你的kindle邮箱地址 to = "name"@free.kindle.com ; smtp服务器地址可以使用gmail的smtp服务器 host = smtp.gmail.com ; smtp服务器端口, 不加密一般为 25, 加密一般为 465 port = 465 ; smtp服务器是否需要 ssl: 1 需要, 0 不需要, 请根据你使用的smtp实际情况选择 ssl = 1 ; smtp服务器需要认证时请填写下面两项,任何一项不填写则认为你的smtp服务器不需要认证 username = password =

这里还有一个小小的修改,因为我们是在vps上面做计划任务,所以不管程序执行结果如何我们都是希望程序自动退出的,这样就不需要人工干预了。所以,对于kindlereader.py这个程序,我们还需要修改一点点代码。

第731~737行原来是这样的

try: if self.config.get(section, name).strip() in ['1', 1]: autoexit = True else: autoexit = False except: auto_exit = False

修改为

try: if self.config.get(section, name).strip() in ['1', 1]: autoexit = True else: autoexit = True except: auto_exit = True

好了,到此我们就完全配置好了,之后就是把所有文件上传到服务器某个目录下面,比如/home/kindle/这个目录

然后写这样一个脚本文件:

#!/bin/sh cd /home/kindle/ python kindlereader.py

保存为start.sh 赋予执行权限

chmod a+u start.sh

然后修改cron任务,执行

crontab -e

添加这么两行
30 7 * * * sh /home/kindle/start.sh
30 23 * * 0 rm -r /home/kindle/data/

第一条的意思是每天7点半给我推送,第二条是每周日23点30分删除掉之前的所有data(这个文件夹里面放的都是这周产生的缓存文件)
至此一切完美,睡觉去吧。。。然后第二天早上你的kindle里面就有推送过来的东西咯~