仓库源文站点原文


title: Kindle 电子书生成工具 description: 本项目旨在写一个 Kindle 电子书的构建工具,从互联网上抓取数据,合并整合都生成一本小巧的 .mobi 电子书。而使用这个工具,你只需要编辑下配置文件,或者直接运行命令行工具。 warning: true mark: hot categories:


花了两个晚上把 OPF 和 epub 格式整明白了,准备把订阅的 RSS 内容抓取下来做成电子书推到 kindle 中阅读。后续也会把自己博客整成电子书,提供给习惯 kindle 阅读的朋友。研究这些东西目的还是想回到比较纯粹的阅读设备上,毕竟手机屏小干扰多,看久了眼睛也有点不舒服。

本项目旨在写一个 Kindle 电子书的构建工具,从互联网上抓取数据,合并整合都生成一本小巧的 .mobi 电子书。而使用这个工具,你只需要编辑下配置文件,或者直接运行命令行工具。

<!--more-->

<s>**注意:** 项目中提供的 [/bin/kindlegen](//github.com/barretlee/kindleBookMaker/blob/master/bin/kindlegen) 文件只适用于 Mac 系统,如果您使用的是 windows,需要在这里下载对应的 [kindleGen](http://www.amazon.com/gp/feature.html?docId=1000765211),并替换本项目中的文件。</s> 感谢 hillwah 的 PR,帮我添加了对其他平台的支持。

项目结构

数据有这么几个来源:

下图为该工具的一个结构图:

Kindle Book Maker<!--<source src="https://img.alicdn.com/tfs/TB1B_rJJVXXXXcvXXXXXXXXXXXX-809-584.png">-->

抓到数据后,工具会帮助分析过滤数据,尤其对 hexo 生成的文件做了特殊的处理,后续也会添加几个扩展功能(比如之间转换 markdown 文件),如果 html 中包含了远程内容——CSS、图片等——程序会全部抓取过来。

最后,使用官方提供了 kindleGen 工具构建,我已经把这个文件放到了 /bin/kindlegen 下,大约 28M,有点大。

使用方法

可以下载代码之后,尝试运行下已经提供了一个 DEMO(封面图片就懒得换了,是我自己的头像):

git clone //github.com/barretlee/kindleBookMaker.git;
cd kindleBookMaker;
npm install;
node index;
open build/*.mobi;

提供了很多方法可以调用,不过都通过命令行的方式简化了:

还有另外三个参数:

配置

var moment = require('moment');

module.exports = {
  // entry: './src/KF8-Demo',
  entry: {
    base: './src/KF8-Demo',
    list: []
  },
  bookInfo: {
    title: "Barret Lee's Personal Website",
    lang: "zh",
    creator: "Barret Lee",
    copyright: "Barret Lee",
    publisher: "",
    coverImage: 'coverImage.png'
  },
  /*option*/
  output: {
    base: './build',
    format: '[name]-' + moment().format('YYYYMMDD')
  },
  /*option for uri*/
  singlePage: {
    title: 'div.title',
    description: 'div.content',
    reg: function(data) {
      return data.replace(/<div class="shit-spider"[\s\S]+?<\/div>/, '');
    }
  },
  /*option*/
  push2kindle: {
    email: 'barret.china@gmail.com',
    password: 'your-email-password',
    kindle: 'barretlee.com@kindle.cn'
  }
};

Todo

参考文献