EE-Book

EE-Book 简介

缘起


在知乎「发现(大V们)更大的世界」的过程中,我发现了一个开源项目ZhihuHelp,刚好初学Python,于是跟着慢慢地学习,写了一些简单爬虫,写正则表达式,学BS库,学EPub格式电子书的组织结构,后来开始给知乎助手这个项目提Issues,pull requests,再到后来,根据自己的需要写了简书的版本,能够把某个博主的所有博文做成电子书,如,把王垠的所有博客做成EPub格式的电子书:

wangyin

地址是:jianshu2e-book

再后来,我又写了新浪博客的版本,如,把韩寒的博客做成EPub格式的电子书:

hanhanblog

地址是:SinaBlog2e-book

我是Kindle重度用户,这几个程序的功能对我很有帮助,用着用着,有一天我突然想到,其实这样的需求还真不少,我应该把这个程序变成一个框架,把需要爬取的网站作为一个个模块放在里面,于是便有了EE-Book

所以,EE-Book是什么?

简单来说,EE-Book能够让你把某网站的特定内容爬取下来做成EPub格式的电子书。

它是桌面程序,用Python+PyQt开发,在各种主流平台都可以使用。这个程序将是模块化,社区化的,任何人只要有需求,都可以提Issues,或者pull requests,然后这个模块将会添加到程序中,这样大家都能用了。当然这里的「提Issues,或者pull requests」是广义的概念,它可以是github项目主页的页面,也可以是独立的论坛,这个程序正在开发中,暂时没有Web的版本,以后开发对应的网站也未尝不可。

example

小A是一个播客重度用户,刚开始学Python,有一天他开始听talk python to me,在iTunes下载之后,他发现这个节目的网站上几乎所有的episodes都有对应的文稿,「真不错,可以学Python,可以练听力,还可以学英语」,但问题来了,小A用电脑的时候根本没空听Podcast,而这个播客的主页又没有做移动端的适配,拿手机完全没办法看,于是他提了一个Issue,程序员小B看见了这个Issue,嘿,刚好我也在听这个,就写这个模块方便大家吧,于是EE-Book就有了这一模块,小A制作了电子书,终于可以拿着手机,kindle阅读了。

这样的场景当然还有很多。网络上的资源参差不齐,我们不缺阅读资源,我们缺的是深度阅读,EE-Book就可以给我们一个选择,在网络不便的时候,在需要断绝干扰深度思考的时候,我们可以利用EE-Book的功能进行深度阅读。

这个是我的最初想法,说来惭愧,不久前才了解到calibre这个图书管理软件,当时后台部分写得差不多了,我模仿calibre的Fetch News界面写了一个简单的GUI,但当时并没有深入了解recipe的功能,最近才发现calibre的recipe非常强大,一些想法在calibre的recipe功能中已经有了实现,但不管怎么样,这个轮子我打算继续造下去,一方面是为了学习Python+PyQt,另一方面,我可以做calibre做不到的事情,calibre开发了近10年,代码量很大,很重,而recipe需要按照一定的规范编写,有一定的局限性,EE-Book会将重点放在EPub格式电子书的制作上,自由度很高,可以高度定制样式,不管是什么反爬虫的措施,都可以进行各种方式的hack,保证书籍的质量。recipe能否做到,我刚接触,不确定,但我确信既然recipe是基于calibre这个框架的,一定有它的局限性,并没有对recipe的每一个功能都很了解,这也是我发这个帖子的原因,我想要分享这个项目,希望各位能给出一些意见,或者谈谈calibre的缺点是什么,任何建设性的意见或建议我都会虚心接受,更希望有人参与进来,到项目主页提issue也好,说说需求,搞不好哪天EE-Book就可以制作你想要的电子书了。而且目前刚开始写PyQt,也遇到了一点困难,希望老手能够指点一二。

其实calibre的recipe应当火起来才对的,但很多人甚至都没有听说过,我觉得这个是有原因的,一个普通的没有写过代码的读者,听说了calibre的这个功能,他看到recipe的实现方式,心想要自己写代码,可能就望而却步了。事物的发展总是从简单到复杂再到简单,EE-Book要做的事情就是从复杂到简单,代码的部分留给我们来做,利用这个框架,可以很快地添加模块,而普通的用户提issue(甚至奖赏),就可以完成自己想要的电子书的制作。recipe针对的是某个网址,需要根据某个页面写代码,而EE-Book针对的是整个网站,比如制作知乎这种类型的电子书,只需要提供一个网址,如示例:

zhihu_kind_info

就可以制作相应的电子书,在命令行下,只需要把网址写入ReadList.txt文件中,运行即可获得EPub格式的文件,在GUI界面下,只需要把网址写到文本编辑框中,点下载即可。
最新版知乎助手生成的电子书是这样的(当然这些样式都可以自己写):

book_demo

这里再次向知乎助手的作者表示感谢,我的程序基于这个框架,也请大家多多支持这个软件的发展,知乎助手的作者正在开发网页版,有时间,有兴趣的朋友也可以一起参与。

依葫芦画瓢,我写了新浪博客、简书的部分,精力有限,都还比较简陋。目前EE-Book有这三个模块:

zhihu_jianshu_sinablog

目前代码耦合度还比较高,正在调整,开发中。刚开始学PyQt,写的GUI界面实在是很简陋,请多担待,也请大家多多提意见:)

说说想法,提issue,哪怕写要爬取的网站需求都行~