从Linux CLI将书籍发送到Kindle

我得到了一个闪亮的新Kindle Paperwhite。 这是一个不错的书本阅读器,我喜欢300 dpi的屏幕分辨率,背光和长达数周的电池寿命,所有这些仅需100到120美元。 不过,最重要的是,我爱我的女儿萨莎(Sasha)视力低下,可以使用现有最大字体从Kindle阅读书籍。

我必须承认,我对Kindle感到非常高兴,以致于我为我的母亲,然后是我的妹妹,以及最近的我的儿子买了一个。 但是,最大的问题是查找书籍。 俄语是我的母语,尽管我用英语读书,但我更喜欢俄语。

亚马逊Kindle书店有一些俄语书籍,但是选择不够好,而且其中一些书籍还没有准备好(格式不好)。 幸运的是,周围有许多电子图书馆都提供俄文书籍。 问题是,大多数书本采用FB2格式,需要将其转换为Kindle可以理解的格式。

Kindle理解一些通用格式(PDF,DOC),我认为这些格式不太适合书籍,而亚马逊拥有电子书格式-MOBI和AZW。 这些是我们追求的格式。

转换图书后,需要将其发送到设备。 传统上,人们会通过USB将Kindle连接到PC并复制书籍。 您仍然可以使用现代Kindle来做到这一点(尽管我还没有尝试过),但是有一种更简单的方法。 Kindle现在已启用Wi-Fi(还有一款终身免费3G的型号,如果您想支付70美元的额外费用),因此只需将书寄过来,无论Kindle是否在隔壁房间,或遍布全球的某处(我妈妈和姐姐的单位就是这种情况)。

将书籍发送到Kindle的一种方法是通过电子邮件。 这既方便又容易,唯一的问题是不支持.AZW格式(尽管我不知道为什么),而仅将.MOBI留给我们。

为了从FB2转换为MOBI,我们可以使用一个名为Calibre的程序。 它同时具有GUI(口径)和CLI(电子书转换)模式,并且有据可查。 重要的一件事: 确保设置了新的MOBI格式 ,否则结果将很丑陋(没有连字符,没有正当理由,在句末之前还有一些额外的空间)。 如果您看到这样的情况,请重试,将MOBI输出文件类型设置为“ new”或“ both”(默认为“ old”),使结果与非常旧的Kindle设备兼容,并且显然还会破坏新Kindle设备的外观。那些。)。

这本书是米哈伊尔·韦勒(Mikhail Veller)的“来自比萨的信使,或零时光”(2000)

无论如何,在玩Calibre之后,我发现了另一个名为KindleGen的工具。 是的,他们确实有一个适用于Linux的命令行工具,尽管该工具上次在2014年进行了更新,并且不接受非压缩的FB2,因此您必须先对其进行压缩(并且该工具首先要做的是解压缩,嗯,嗯, 随你)。

我发现的下一个问题是,如果FB2不是Unicode(即UTF-8),kindlegen将不起作用。 不幸的是,这不是一个开放源代码的工具,我肯定会对其进行修复,以处理非UTF8和非压缩FB2。

在这个苛刻的封闭源代码现实中,我必须编写一个Shell脚本来准备FB2文件,以供kindlegen处理。 这是脚本:

它肯定可以使用一些改进-一方面,我在一个地方使用zip / unzip,在另一个地方使用7za。 也可以添加一些命令行处理,因为当前我必须编辑脚本源以指定要将电子书发送到哪里。 但这确实是我为之编写的主要内容-将FB2修复为UTF-8,必要时将其压缩,使用KindleGen转换为MOBI,然后通过电子邮件发送至Kindle。