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

kindlestrip 是一款精简 mobi 格式电子书的小脚本。使用 KindleGen 或 Kindle Comic Creator、Kindle Previewer 之类的官方电子书转换软件转换的 mobi 格式电子书,使用 KindleUnpack 拆解后可以看到一个压缩文件 kindlegensrc.zip,这就是 mobi 文件内含的源文件存档。

该文档是转换前的源文件的打包存档,仅供调试之用,大小和转换前的 epub 文件相同,几乎占 mobi 文件大小的一多半。如果是个人使用,而不是上传发布到 KDP(Kindle出版服务)包含一份源文件是没有必要的,kindlestrip 的作用就是将 kindlegen 生成的 mobi 中这部分删除以求更小的文件体积,精简后的文件仅仅是去除掉了对于个人用户来说冗余的源文件,对电子书的阅读没有丝毫影响。

一、脚本下载

KindleStrip 是用 Python 语言写成的,所以必须得有 Python 环境的支持。如果你使用的是 Windows 系统且没有安装 Python 的话,请先去 Python 官网下载并安装 Python,再下载本脚本使用。如果您使用的是 Mac OS X 系统,因为系统自带 Python 就不用另外安装了,可直接下载脚本使用。

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

另外,如果你的系统是 Mac OS X,也可以运行“终端”运行下面的命令直接安装。

pip install kindlestrip

如果你的系统为 Windows 也可以下载下面这个批处理脚本批量精简 mobi 文件。

批处理脚本:kindlestrip_v136_batch.zip

二、脚本使用

脚本的使用很简单。为了方便说明,下面步骤中的 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

三、脚本提示

如果 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.

三、其他

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

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

kindlegen -dont_append_source xxx.opf

有帮助,[ 捐助本站 ] 或分享给小伙伴:

发表评论

标注为 * 的是必填项。您填写的 Email 将会被保密。如果是在本站首次留言,审核后才能显示。

小伙伴们发表了 9 条评论

  1. 用chainlp做了一本漫画,结束时提示kindlestrip.py错误,结果mobi有900M大小,用batch.bat处理显示memory error.
    发现无论是用chainlp,还是kcc制作漫画时,只要文件过大,就会出现strip这个脚本不可用的情况,然后自己用strip这个脚本也会显示错误。文件名和路径都符合要求。
    我安装的是python2.7.3

  2. 1. 安装Kindle Comic Creator ,安装目录下的KC2文件夹内有一个striptool.exe文件。使用Kindle Comic Creator 制作的约340M的漫画测试,将其拖到striptool.exe上,用striptool.exe打开,即可获得含有嵌入的源文件和一个文件名相同的170M左右的mobi文件。
    2. 尝试上述功能时,电脑上下载了kindlestrip_v136.py,但是安装的时Python 3,不确定直接使用striptool的时候,Python是否是必要的。
    3. 使用Kindle Comic Convertor制作的40M左右的漫画测试,拖放到striptool.exe上面,没有生成相应的文件夹,可能 Converter制作的漫画中不含源文件

  3. 单独strip,提示:
    print “Warning: pathof expects utf-8 encoded byestring: “, s
    SyntaxError: Missing parentheses in call to ‘print’
    又是什么意思?

  4. 下载并安装了 Python,运行 batch.bat 批处理文件结果result 文件夹中什么都没有,反复几次在c盘、桌面都没用。求解!

    • 上课的放假 您好。这会不会是您所处理的电子书无需处理?因为只有 KindleGen 生成的电子书才会在电子书中嵌入源文件,而其他诸如 Calibre 转换过的电子书则无需处理。