在Calibre Recipe里保存收录过的文章

一般来说,Calibre Recipe关注的内容是定期更新的,比如说知乎日报的内容,文章列表每天都会全部更新。

但如果某些内容并不是完全更新,只是部分更新,怎么处理呢?
比如说简书的每周热门文章,某些文章因为热门会持续几周都在其中。这样的话Recipe应该怎么处理才能保证只抓取新的文章,而忽略以前收录的文章呢?

一个朴素的想法就是,把之前收录过的文章都保存起来,然后在recipe里添加要抓取文章之前先check一下有没有抓取过了。
然而在尝试这个朴素的想法的时候,发现在Recipe里保存数据是个问题——保存的文件找不到!

稍微debug了一下,然后看了一下calibre的实现,发现它在抓取过程中的working directory是`/tmp/`下的一个临时目录,完成之后还会被删掉,当然找不到了。。。

尝试一:绝对路径,它work,但是太丑了。

尝试二:如下python里一般获取cwd的方法都不work

os.getcwd()
print os.path.dirname(os.path.realpath(__file__))

因为calibre在__init__.py里有`self.cwd = None` 然后`os.chdir()`

尝试三:遍历inpsect一层层的stack,结果只能找到`/usr/bin/`里面去

尝试四:最后突然想到,既然只是个环境变量,那在os.environ里一定有相关的信息嘛,直接打印看一下,发现

os.environ['PWD']

就是我想要的目录。于是,用这个目录当CWD就搞定了。

具体的code直接看这个commit了。

Share