KindleStrip:大幅精简压缩 mobi 文件体积

kindlestrip 是精简 mobi 格式电子书小脚本。KindleGen 或 Kindle Comic Creator、Kindle Previewer mobi 格式电子书, KindleUnpack    拆卸后可以看到压缩文件 kindlegensrc.zip,这就是 mobi 文件内含的源文件存档。

该文件是转换前源文件的打包存档,仅用于调试、尺寸和转换前 epub 文件相同,几乎占 mobi 文件大小的一半以上。如果是个人使用,而不是上传到 KDP(Kindle出版服务)包含一份源文件是没有必要的,kindlestrip 的作用是 kindlegen 生成的 mobi 为了减少文件的体积,精简的文件只去除了个人用户冗余的源文件,对电子书的阅读没有影响。

1、脚本下载

KindleStrip    是用 Python 语言写的,所以一定要有 Python 环境支持。如果使用 Windows 系统未安装 Python 请先去 Python 官网下载安装Python,然后下载脚本使用。如果使用 macOS 系统,因为系统自带 Python 不需要单独安装,脚本可以直接下载使用。

脚本下载kindlestrip_v136.py.zip    | 下载脚本发布页面

另外,如果你使用的系统是 macOS 或 Linux,也可以直接安装终端运行下面的命令。

pip install kindlestrip

如果你使用的系统是 Windows 也可以下载以下批处理脚本批量精简 mobi 文件。

下载批处理脚本kindlestrip_v136_batch.zip

使用方法是将待处理的电子书文件放入 temp 文件夹,双击操作 batch.bat 脚本完成后,电子书会自动放入 result 文件夹。

2、使用脚本

脚本的使用非常简单。为了方便说明, 在以下步骤中kindlestrip 和 mobi 文件放在同一目录下。

1、Windows 系统

若使用 Windows 系统,首先运行命令提示符cd    命令定位到 kindlestrip 脚本和 mobi 文件所在的目录,然后运行以下命令。请注意,在此行命令中,kindlestrip_v136.py 是下载的脚本名称;infile.mobi 是精简前的文件名。如果文件名中有空格,请用单引号或双引号包裹;outfile.mobi 是精简后的文件名,名字随便起,如果文件名包含空格同样要使用引号。

kindlestrip_v136.py infile.mobi outfile.mobi

若要批量精简 mobi 格式电子书文件,请先下载 kindlestrip_v136_batch.zip 文件解压缩,可见 temp 和 result 两个文件夹可以处理要处理的 mobi 格式电子书放在 temp 文件中,然后batch.bat 批处理文件,精简 mobi 文件将存储在 中result 文件夹。

2、Mac OS X 系统

假如你用的是 Mac 系统,使用下载脚本,可以先运行终端,使用 cd    命令定位到 kindlestrip 脚本和 mobi 文件所在的目录,然后操作以下命令。如果文件名包含空间,请使用引号

python kindlestrip_v136.py infile.mobi outfile.mobi

使用 pip    安装命令更简单,定位到 mobi 文件所在目录,直接操作下列命令。

kindlestrip infile.mobi outfile.mobi

3、脚本提示

如果 mobi 如果文件中含有冗余文件,则类似于以下提示:

SRCS section number is:  43
SRCS section count is:  1
SRCS length is: 0x10cfa
done

如果 mobi 不含冗余源文件的文件将显示以下提示:

Error: File doesn't contain the sources section.

4、常见问题

如果有以下提示,电子书本身可能有问题:

SRCS section number is: 2921
SRCS section count is: 4
SRCS length is: 0x1d22a9c
Error: SRCS section num does not point to SRCS.

这里有两种解决方案:

一是先用 KindleUnpack    将电子书分解为源文件,然后使用以下带有非附加源选项的 KindleGen 命令将源文件重新转换mobi 格式电子书文件。

indlegen content.opf -dont_append_source

另一种是修改 KindeStrip 源码让它忽略了这个错误。 脚本文件kindlestipt.py    注释以下两行代码:

if self.datain[self.srcs_offset:self.srcs_offset 4] != 'SRCS    raise StripException("SRCS section num does not point to SRCS.")

这种方法在有限的电子书中没有发现任何异常。然而,如果电子书有问题,建议不要使用这种方法,因为我不知道删除脚本中的条件是否会影响确实有问题的电子书的识别。

5、其他

在使用 KindleGen 生成自制电子书时,可以添加一个参数 -dont_append_source    禁止过去生成的 mobi 文件中附加源文件。这样生成 mobi 文件不再需要 kindlestrip 来帮助删除冗余源文件。

具体命令如下所示(如果使用 )KindleGen 请点击这里检查具体操作步骤):

kindlegen -dont_append_source xxx.opf
阅读剩余
THE END