用pandoc和calibre生成电子书

前几年在Windows下,经常用一些别人的现成工具来做epub,切换到Linux下,有些不适应。这几天做了一些尝试,记录一下:

python抓取与calibre

用简单脚本,尝试抓取了好奇心日报的几个专栏,包括:

期间遇到异步载入的问题,还有抓取图片失败的问题,慢慢也解决了,能基本完成目标。有的专栏已经不见了,比如“我们如何与未来相处”这个系列,只能从别处找来手工用Sigil编辑,可以利用的是一个Chrome浏览器扩展:EpubPress。

好笑的是,后来我发现calibre内置了新闻抓取功能,同样是基于 python 和 BeautifulSoup,通过简单修改recipe文件,大部分网站都能抓。用了好久一直没注意这个功能,不过自己用python也是学习的过程,也能结局另类网站的特别情况。calibre的抓取新闻还是有用的,直接抓取推送kindle。

text生成电子书

思路很简单,利用 pandoc 这个强大工具,markdown 格式可以方便的转换成epub、mobi。步骤:

  1. 修正text文档,给章节加上#,markdown包含的本地图片可以做为插图
  2. 预先建立(或在python脚本中生成)metadata.txt文件,包含电子书的元数据,官方例子,可以指定封面和CSS。
  3. pandoc 生成 epub 文件,markdown文件会自动按标题切分,并生成目录,支持指定目录深度。
  4. calibre 内置的 ebook-convert 可以转换 epub 到 mobi

这样编辑出来的epub文件,用 Sigil 检查完全符合规范,自动化完成。对于注释、字体美化等问题,我也不太关注。我写的脚本在github

文本整理

除了开始提到的抓取,早期电子书基本来自个人的OCR,后来大部分都是购买后破解得来。

OCR的错漏,以及txt格式电子书传播中的各种现状,造就了很多电子书工具,比如老马的工具(现在搬到百度网盘了)。之前还收集了一些,脱离了Windows 也就不需要了。

通过学bash和python,能解决大部分问题。google能排除大部分错误,也能发现前人走过的坑。前一段还用把自己在豆瓣的已读记录爬了下来,爬哪天豆瓣完了或者删掉某本书。

20181020