Total Pageviews

Showing posts with label KINDLE. Show all posts
Showing posts with label KINDLE. Show all posts

Friday, 20 October 2017

KindleEar

A website application running in Google app engine, deliver rss news to your kindle. generate mobi by using python, multilanguages supported.

简介

这是一个运行在Google App Engine(GAE)上的Kindle个人推送服务应用,生成排版精美的杂志模式mobi/epub格式,自动每天推送至您的Kindle
此应用目前的主要功能有:
  • 支持类似Calibre的recipe格式的不限量RSS/ATOM或网页内容收集
  • 不限量自定义RSS,直接输入RSS/ATOM链接和标题即可自动推送
  • 多账号管理,支持多用户和多Kindle
  • 生成带图的杂志格式mobi或带图的有目录epub
  • 自动每天定时推送
  • 强大而且方便的邮件中转服务
  • 和Evernote/Pocket/Instapaper等系统的集成
注:如果您要求不高,自定义RSS推送功能足以应付一般应用,如果要求排版和完美,可以参照books目录下的文件范本自己添加一个文件再重新上传即可,books目录下的书籍文件都不是随意预置的,每个文件都至少演示一个适用的books编写技巧。 在您懂python的前提下,您可以完全的操控网页,可以生成您需要的最完美的MOBI/EPUB文件。

标准部署步骤

  1. 创建一个Application,注意不用申请GCE,那个是60天试用的,而GAE是限额范围内永久免费的。
  2. 安装 Python 2.7.x
  3. 安装 GAE SDK
  4. 下载 KindleEar ,解压到一个特定的目录。
  5. 在以下三个文件中修改一些参数:
文件待修改内容说明
app.yamlapplication你的ApplicationId
module-worker.yamlapplication你的ApplicationId
config.pySRC_EMAIL创建GAE工程的GMAIL邮箱
config.pyDOMAIN你申请的应用的域名
如果使用gcloud部署,需要注释掉yaml文件中的application/version项。
  1. 转到GAE SDK安装目录(默认为:C:\Program Files\Google\google_appengine)
  2. 部署命令: 8.1 使用appcfg.py:
    • c:\python27\python.exe appcfg.py update kindleear目录\app.yaml kindleear目录\module-worker.yaml
    • c:\python27\python.exe appcfg.py update kindleear目录 8.2 使用gcloud:
    • `"C:\Program Files\Google\Cloud SDK\google-cloud-sdk\bin\gcloud.cmd" app deploy --version=1 KindleEar目录\app.yaml KindleEar目录\module-worker.yaml
    • `"C:\Program Files\Google\Cloud SDK\google-cloud-sdk\bin\gcloud.cmd" app deploy --version=1 KindleEar目录
  3. 全部完成后就可以尝试打开域名:
    http://appid.appspot.com (appid是你申请的application名字)
    比如作者的网站域名为:http://kindleear.appspot.com/
    注:初始用户名为 admin,密码为 admin,建议登录后及时修改密码。
  4. 更详细一点的说明请参照Github上的 FAQ 或作者网站的 FAQ 链接。有关部署失败,部署后"internal server error"等问题都有解释。
    不建议使用GAE Launcher部署KindleEar,除非你知道怎么设置Extra Flags等参数。
  5. 步骤已经说的很详细了,如果自己还是部署不成功,也可以选择直接捐赠给作者50块钱 (Wiki捐赠页面),然后将gmail地址和密码发给作者(先要提前关闭密码二步验证),作者负责帮你部署成功。有需要自定义抓取和分析其他网站的需求,也可以联系作者有偿实现。

简化的部署步骤(推荐)

假如你不想安装python和GAE SDK,则可以:
  1. 下载KindleEar 并解压(改目录名为KindleEar)。
  2. 下载KindleEar-Uploader 并解压。
  3. 将KindleEar目录放到Uploader目录下,双击uploader.bat即开始上传,根据提示输入你的相关信息即可,在第一次成功部署之后,适用uploader再次升级KindleEar则不需要再次输入。
    此uploader仅适用于Windows系统.
from https://github.com/cdhigh/KindleEar

Thursday, 19 October 2017

让Kindle支持重排PDF文件

使用小屏幕Kindle阅读PDF文档时,如果文档不是专门为小屏幕阅读器排版,就会经常出现显示字体太小的情况,造成阅读不便。而Kindle的屏幕刷新率又太低,页面局部放大后再移动阅读区域亦不现实。解决这一问题目前常用的方法有以下三种:

使用预处理软件对PDF文档进行裁剪页边,比如用裁边软件Briss去掉PDF文档的页边空白,使可阅读区域尽量大,再把生成的PDF文档放到Kindle里阅读。部分文档经过裁剪之后可以获得很好的阅读效果,但是还有一部分文档处理之后的页面仍然过大。
使用OCR(光学字符识别)软件把PDF中的文字提取导出为其他可重新排版的文档格式,如TXT和MOBI等。由于OCR存在一定的识别错误率,也不能保留排版样式(比如字体、字号和图表公式),因此这种方法的应用范围有限。
使用阅读器提取出文档中的字符和样式,以适应屏幕宽度的方式重新排版(称为文字回流,Text Reflow)。这种方法虽然可以保留字体样式信息,但是对于图表和公式的支持和方法二一样不够好;这种方法的另一个缺陷是不能重排扫描版的文档,因为扫描版文档中无法提取出字符和格式信息。
而本文要介绍的Kindle上的阅读器Koreader/Kindlepdfviewer采用图像分割再重排的方式处理PDF文档,这样不仅支持文字版PDF重排和数学公式的重排,还能对扫描版PDF和DJVU文档进行重新排版。 Koreader/Kindlepdfviewer重排的原理后文有简单介绍。

Contents [hide]

1 简单介绍KOReader/Kindlepdfviewer
1.1 “Kindle的PDF阅读外挂”
1.2 重排功能的开发
2 软件重排效果
2.1 多栏排版页面的重排
2.2 数学公式的重排
2.3 扫描版PDF的重排
2.4 中文文档的重排
3 软件安装
3.1 Kindle 2、Kindle 3和Kindle DX(G):
3.1.1 Kindle越狱
3.1.2 安装launchpad
3.1.3 安装Kindlepdfviewer或Librerator
3.2 Kindle 4 NT和Kindle 4 Black:
3.2.1 Kindle越狱
3.2.2 安装kite
3.2.3 安装Librerator
3.3 Kindle Touch和Kindle Paperwhite:
3.3.1 Kindle越狱
3.3.2 安装KPVBooklet
3.3.3 安装Koreader
4 软件使用
4.1 键盘版
4.2 触屏版
4.3 排版参数微调
4.4 手动切边(视频演示)
4.5 关于翻页延迟
5 软件升级
6 软件卸载
7 Bug报告
8 更多讨论
简单介绍KOReader/Kindlepdfviewer

“Kindle的PDF阅读外挂”

新版Kindlepdfviewer正式更名为Koreader。Koreader是在GPLv3协议下开放源代码的Kindle阅读器,支持PDF, DJVU, EPUB, MOBI, TXT, XPS, CBZ, FB2, HTML, RTF, CHM, DOC, ZIP等几乎所有主流电子书文档格式。Koreader默认运行在Kindle原生系统里,只需要在原生系统中打开Koreader程序就可以使用,关闭Koreader程序就回到了原生系统界面,切换很方便。目前Koreader可以运行在Kindle Touch和Kindle Paperwhite设备上。Koreader对非触屏Kindle设备Kindle 2、Kindle DX(G)、Kindle 3、Kindle 4的支持会逐步加入,目前这些设备可使用老版本的Kindlepdfviewer或者Librerator。

重排功能的开发

Koreader的重排功能离不开另一个开源软件项目K2pdfopt(GPLV3协议发布)。K2pdfopt也是为了解决PDF文档在小屏幕Kindle上阅读的排版问题而开发的。与其它PDF预处理软件相比,它有很多独一无二的特性,比如自动化程度很高,能够自动识别多栏排版的文档进行分栏,自动去除页面白边,自动对扫描文档进行水平校正,以及最重要的基于图像分割的重排版算法。K2pdfopt使用完全基于图像处理的方法对文字重新排版,软件处理时会把原始PDF/DJVU页面放大再分割成以词为单位的像素区域,把这些像素区域重新排列到目标宽度的页面中,所以理论上只要能够读取文档的页面像素就可以对其中的文字进行重新排版。这个算法的前提是页面中的文字之间需要有一定的空隙,以提供分割像素区域的位点。更多K2pdfopt的处理效果请参考这篇文章用K2PDFopt重排版面,随手解救扫描PDF 。

K2pdfopt被移植到Koreader/Kindlepdfviewer以后就可以在阅读时让PDF重新排版。实时重排可以省去电脑上处理PDF的步骤,并且可以在kindle上交互式地微调排版参数,尽可能地生成满意的排版。使用Koreader的重排模式阅读时,软件会自动把当前页和下一页重排版成适应屏幕的尺寸。

软件重排效果

以下是Kindlepdfviewer重排功能在Kindle 3上的使用效果截屏,包括重排前的原始页面与重排后的页面对比图。

多栏排版页面的重排

下图是Koreader/Kindlepdfviewer对多栏排版的PDF页面带图和带样式的重排效果:

带图的分栏页面重排
左侧为重排前的原始页面,其中图像占据两栏的宽度,而重排之后图像仍然完整地显示,文字部分被重排为一栏显示。

数学公式的重排

对PDF页面中的数学公式重排支持是Koreader/Kindlepdfviewer的关键特性,因为使用文字提取的重排版方式对公式这种复杂排版样式的支持并不好,而Koreader/Kindlepdfviewer独特的排版算法却可以获得非常好的重排效果:

带数学公式的页面重排
左侧为重排前的原始页面,右侧是重排后的页面,字体放大了1.5倍仍然保持了公式的完整。

扫描版PDF的重排

Koreader/Kindlepdfviewer支持实体书扫描的PDF文档重排,重排效果如下:

扫描版PDF页面的重排
左侧为重排前的扫描PDF页面,右侧是重排后的页面。

中文文档的重排

经过测试Koreader/Kindlepdfviewer对大部分英文文档都可以获得很好的重排效果。而中文文档因为字间距太小,没有西文词之间的空格所以重排时应该选择较小的词间距。理论上只要中文字之间的间隔足够大,对中文文档也能获得很好的重排效果。这是对中文文档的重排测试(使用《红楼梦》脂评汇校本PDF文档):

中文PDF文档的重排中文PDF文档的重排
左侧为重排前的PDF页面,右侧是重排后的页面。重排效果是字体样式全部保留,只增加了字体大小。

对中文竖排文档的重排(使用中华书局《点校本二十四史》扫描版PDF):

中文竖排版的重排中文竖排版的重排
左上为重排前的原始页面,右上是重排使用的参数,使用了较小的字号、较小的词间距和90度旋转屏幕。下图是重排后的显示效果。

软件安装

Kindle 2、Kindle 3和Kindle DX(G):

Kindle越狱

到MobileRead论坛的这个帖子里下载越狱文件kindle-jailbreak-x.xx.x.zip (x.xx.x对应版本号)。把下载的ZIP文件解压缩之后选择对应设备固件的升级文件,比如Kindle 3 WIFI 固件版本3.4的设备应该选择update_jailbreak_0.11.N_k3w_install.bin或者更新版文件,将其拷贝到Kindle的根目录中。断开Kindle和电脑的连接,通过Menu> Settings> Menu> Update Your Kindle升级。当出现升级成功的提示表示越狱成功。将Kindle连接到电脑上,在Kindle的根目录中会多出一个linkjail的目录。如果越狱不成功,很可能是因为设备已经越狱过,请忽略此步,直接尝试下一步。

安装launchpad

安装前请先确认设备已经越狱。Launchpad是Kindle上的快捷键管理软件,用于启动Kindlepdfviewer程序。到MobileRead论坛的这个帖子 里下载launchpad的安装文件lpad-pkg-xxxx.zip (xxxx对应版本号)。 把下载的文件解压缩之后选择设备对应的安装文件,以Kindle 3 WIFI为例,应该选择 update_launchpad_0.0.1c_k3w_install.bin或者更新版文件,将其拷贝到Kindle的根目录中。断开Kindle和电脑的连接,通过Menu> Settings> Menu> Update Your Kindle升级。当出现升级成功的提示表示安装成功。将Kindle连接到电脑上,在Kindle的根目录中会多出一个launchpad的目录。

安装Kindlepdfviewer或Librerator

稳定版1KPV下载地址:https://kindlepdfviewer-package.googlecode.com/files/kindlepdfviewer-v2013.1.zip ,最新开发版KPV下载地址:https://code.google.com/p/kindlepdfviewer-package/downloads。在Kindle的根目录下创建customupdates目录(注意大小写),把下载的ZIP安装包拷贝到customupdates目录下,安装包不需要解压缩。断开Kindle和电脑的连接,在Kindle上按Shift-Shift-I安装Kindlepdfviewer,注意按键间隔不要超过0.7秒,如果按键生效屏幕左下角会出现^[Shift I]字样,等待安装程序完成屏幕左下角会出现Success提示。之后在Kindle上按Shift-Shift-空格三个键,会更新launchpad的快捷键列表把Kindlepdfviewer的快捷键添加进去。如果以上操作步骤都顺利完成,那么恭喜你已经安装成功。可以使用Shift-P-D按键序列打开Kindlepdfviewer。退出Kindlepdfviewer切换到原生系统请在文件管理器界面按Home键,查看更多使用说明请打开Kindlepdfviewer后按“H”键。

Librerator是KPV的一个修改版,安装方法与KPV相同。软件介绍和安装包下载地址: http://www.mobileread.com/forums/showthread.php?t=198742 。Librerator和KPV使用的启动快捷键序列不同所以二者可以互不影响地使用。

Kindle 4 NT和Kindle 4 Black:

Kindle越狱

到MobileRead论坛的这个帖子里下载越狱文件kindle-jailbreak-k4-x.x.x.zip (x.x.x对应版本号)。把下载的ZIP文件解压缩之后,将data.tar.gz和ENABLE_DIAGS两个文件拷贝到Kindle磁盘的根目录中。断开Kindle和电脑的连接,通过Menu > Settings > Menu > Restart重启机器进入诊断模式。使用五向键依次选择“D) Exit, Reboot or Disable Diags” 、”R) Reboot System”、”Q) To continue”。重启后主页会出现一本名为”You are Jailbroken”的书,说明越狱成功。

安装kite

到Hi-pda论坛的这个帖子下载安装文件update_kite_0.0.1_install-k4.bin,并将其拷贝到Kindle的根目录中。断开Kindle和电脑的连接,通过Menu> Settings> Menu> Update Your Kindle升级安装。

安装Librerator

到MobileRead论坛的这个帖子下载最新版Librerator。把下载的ZIP文件解压缩到Kindle磁盘根目录。

Kindle Touch和Kindle Paperwhite:

Kindle越狱

Kindle Touch的越狱方法参考:http://www.mobileread.com/forums/showthread.php?p=2169819 Kindle Paperwhite的越狱方法参考:http://www.mobileread.com/forums/showthread.php?t=198446

安装KPVBooklet

KPVBooklet支持5.1.2至5.3.4的Kindle固件(建议越狱后升级到5.3以上固件再安装),下载地址:https://code.google.com/p/kpvbooklet-package/downloads 。将下载的zip文件解压缩,把update_kpvbooklet_x.x.x_install.bin文件拷贝到Kindle的磁盘根目录下,断开USB连接。通过Menu> Settings> Menu> Update Your Kindle升级安装2,3,注意不要通过restart来安装。

安装Koreader

下载最新的Koreader安装包,下载地址:https://code.google.com/p/koreader-package/downloads 。将下载的zip文件解压缩到Kindle磁盘根目录即可。

注1:稳定版会积累一定的特性和bug修复后不定期发布;开发版使用项目最新代码每天自动编译,适合喜欢尝试新特性的朋友。 注2:升级安装KPVBooklet只需下载最新KPVBooklet安装包,使用安装bin文件升级。 注3:Update Your Kindle显示为灰色可能是因为安装了特定版本的多看,可在Kindle磁盘根目录下创建一个名为DUOKAN_DISABLE的文件,然后重启机器再安装。

软件使用

键盘版

使用Kindlepdfviewer打开PDF文档时会出现选择阅读器的提示对话框.

选择PDF阅读器
如果需要PDF重排请选择PDFReflow阅读器。在当前对话框中快捷键”T”可以关联选择的阅读器到所有PDF文档,下次打开PDF时将不再出现此对话框;快捷键”F”会关联选择的阅读器到此文档。如果需要清除阅读器关联,请用PDFReflow阅读器打开一个PDF文档后按ALT+C,清除此文档的阅读器关联;按SHIFT+C清除对此文档格式的关联。

触屏版

Koreader可以通过KPVBooklet与原生系统集成,在原生系统主界面即可显示EPUB、DjVu等文档。默认使用Koreader打开PDF、EPUB、DjVu、FB2、CHM和DOC文档,使用原生系统自带阅读器打开MOBI、AZW和TXT文档。也可以长按PDF文档在弹出窗口中选择GOTO来使用原生阅读器打开PDF文档。

在PDF阅读页面之后,点击屏幕顶部可打开文档菜单对话框,点击屏幕左侧可上翻页,点击屏幕右侧可下翻页,点击屏幕底部可打开设置对话框。

排版参数微调

在Kindlepdfviewer的PDF阅读界面按“Aa”键可以调出重排参数调整界面进行排版微调。目前可调参数包括:字体大小、页边距、行间距、分词间距、对齐方式、最大栏数、水平较正、字体黑度、屏幕旋转等。如下图所示:

重排参数调整界面
以下是各参数的使用方法(使用2012.11稳定版):

换行重排(Reflow)开启时,选择不同的字号可以放大和缩小页面字体。注意实际显示的字体大小不一定与选择的大小完全相同。
软件支持先切边后重排。切边(Trim Page)选择自动模式(auto)时,软件会自己选择切除页面白边,使内容区域最大化;也可以选择手动切边(manual),具体使用方法请看下节视频演示。
软件能够自动识别并去除扫描PDF/DJVU页面上的污点(Defect),可选污点大小,默认使用中等(medium)大小。
重排生成页面的页边距(Page Margin)有三档可调,默认使用中等(medium)页边距。
重排生成页面的行间距(Line Spacing)有三档可调,默认使用中等(medium)行间距。
重排过程中断词阈值使用词间距(Word Spacing/Word Gap)参数,建议中文文档选择较小(small)词间距,英文文档选择中等(medium)或较大(large)词间距。
重排页面的渲染质量(Render Quality)有三档可调,选择高质量(high)时显示效果最好但是重排时间也最长,选择低质量(low)时重排时间可以大大缩短。默认使用高质量渲染。
重排扫描PDF页面时可以对页面文字进行水平较正(Auto Straighten),数字表示最大校正角度,默认此选项关闭(最大校正角度为0),开启之后重排时间会大大增加,文字版PDF请勿打开。
重排页面的对齐方式(Justification),有自动(auto)、左对齐(left)、居中(center)、右对齐(right)和两端对齐(full)可供选择。
重排多栏排版的文档时可指定分栏数(Columns)。
重排页面的字体黑度(Contrast)有5级可调,注意默认(default)字体黑度时重排速度最快。
支持0°、90°、180°和270°屏幕旋转,可使用90°旋转重排竖排版的文档。
手动切边(视频演示)

(测试使用商务印书馆《汉译世界学术名著》丛书PDF文档)

如果遇到视频无法播放的情况请使用较新的Chrome或者Firefox浏览器重新打开本网页。



如果原始页面正文四周有污点或者旁注,会影响程序判断正文的缩进方式,自动重排经常会出现大段空白和断行。手动切边把正文四周切掉之后再重排可以避免这种情况出现,让重排后的文档排版更整洁。使用方法见视屏演示,按“Aa”键调出重排参数调整对话框,在切边(Trim Page)选项中选择手动切边(manual),使用五向键的确认键打开原始页面视图,首先通过五向键调整切边的左上角,确认左上角之后再调整切边右下角。确认之后重排即使用切边以后的页面。对于大部分文档,一般不需要每一页都做手动切边,如果当前页码是奇数页,之后遇到奇数页就会自动使用当前页面的切边信息。

关于翻页延迟

重排处理需要很多CPU计算,再加上Kindle的CPU频率不是很高,所以重排一页大约需要3到5秒钟时间,具体视页面大小而定。但是阅读时软件可以预先重排处理下一页,这样读完一页再翻下一页就没有延迟了。最新版加入了多线程(Multi-threads)缓存机制,开启多线程之后可以显著改善翻页体验。

软件升级

下载最新版Koreader/Kindlepdfviewer软件包,把ZIP文件包解压缩到Kindle磁盘根目录,即可升级安装Koreader/Kindlepdfviewer。

软件卸载

需要卸载软件请直接删除Kindle下的koreader/kindlepdfviewer目录, 把安装过的对应软件的uninstall文件逐一拷贝到Kindle磁盘根目录,点“Update Your Kindle”即可卸载相应软件。

Bug报告

大家使用软件时,欢迎把无法生成可读排版的情况作为bug报告给我,方便在后续的版本中进行修复。Bug报告请提供原始PDF文档或出现问题的页面,重排使用的参数截屏,并发送到我的邮箱:chrox@网易126邮箱,或者回复帖子KOReader/Kindlepdfviewer更新日志,功能建议和Bug反馈。软件的完善离不开用户的bug报告,在此先行道谢。

更多讨论

更多关于Koreader的讨论请关注:
  1. KOReader/Kindlepdfviewer更新日志,功能建议和Bug反馈
  2. Kindlepdfviewer项目Wiki的中文指南
  3. Kindlepdfviewer – document reader for Kindle, based on muPDF/djvulibre/CREngine, GPLv3
  4. KOReader: a document reader for PDF, DJVU, EPUB, FB2, HTML, … (GPLv3)
  5. Librerator – multi-format e-reader, fork of KindlePDFViewer

Saturday, 14 October 2017

用电脑和手机无线管理Kindle中的文件

BTSync是BitTorrent Labs开发的一款点对点同步软件,支持Windows、MAC、Linux、Android、IOS等众多平台,甚至包括Kindle在内的一系列Linux ARM平台!
在PC端和Kindle端配置BTSync之后,两端对应文件夹的文件将自动同步,在PC端对文件的增加、删除和修改操作也将同步到Kindle端,反之亦然,这样就可以扔掉数据线远程管理Kindle上的文件了,如果在手机上也安装BTSync客户端,那么用手机也可以管理Kindle上的文件。

BTSync 的下载地址是: http://labs.bittorrent.com/experiments/sync.html

Window端的配置

Windows端的安转几乎是傻瓜化的,一路Next即可,安装完成之后需要配置一个同步文件夹,把生成的密钥记录下来(不要泄露给他人),后面将在Kindle的配置文件里使用。

Kindle端的配置

安装和配置

BTSync的Linux ARM平台客户端只是一个二进制文件,并不能在Kindle上直接运行,我们需要以插件的形式通过KUAL来启动。KUAL的安装和使用可以参考在'Kindle PaperWhite上安装KUAL'- 
http://briteming.blogspot.de/2017/10/kindle-paperwhitekual.html
MobileRead的网友eurekafarfeduc分别共享了他们的btsync配置文件和KUAL插件菜单,我在他们的基础上做了一些修改: btsync(KUAL extensions),下载之后解压到Kindle的extensions目录下,然后编辑bin目录下的config文件,将密钥改成Windows配置的共享文件夹密钥。配置文件指定Kindle的共享文件夹是documents目录的BTSync文件夹,当然改成其它的文件夹也是可以的。
{  
  "device_name": "My Kindle",  
  "listening_port" : 12321,  
  "storage_path": "/var/log/btsync",  
  "pid_file" : "/var/run/btsync.pid",  
  "check_for_updates" : false,  
  "use_upnp" : false,  
  "download_limit" : 0,  
  "upload_limit" : 0,  
  "shared_folders" :  
  [  
    {  
      "secret" : "共享文件的密钥",  
      "dir" : "/mnt/us/documents/BTSync",  
      "use_relay_server" : true,  
      "use_dht" : true,  
      "search_lan" : true,  
      "use_sync_trash" : false  
    }  
  ]  
}  
这时候断开Kindle和PC的链接,启动KUAL之后可以看到btsync插件的菜单,在这里可以查看btsync的运行状态、运行btsync、停止btsync和编辑btsync配置文件(需要leafpad,建议到电脑上更改)。

btsync运行之后会一直在后台运行,只要有WIFI连接就可以同步PC和Kindle的文件,你可以通过菜单随时查看btsync的运行状态。另外经测试btsync对耗电影响不大,使用btsync之前我一般是一周一充,btsync后台运行后仍然是一周一冲。

Kindle端启动之后你在PC端同步文件夹的相应操作就能同步到Kindle了,同样的,在Kindle端对文件的操作也会同步到PC。btsync的同步速度非常快,一般2秒左右就能检测到文件的更改。

可能会遇到的几个问题

我不想同步Kindle自动生成的sdr目录下的文件。

为了保存进度等信息,Kindle会为每本电子书生成一些文件,保存在书名.sdr文件夹里,由于这些文件并不重要,我不想同步这些文件。
btsync具有排除功能,每个同步文件夹里有一个名为.SyncIgnore的文件,我们可以指定需要排除的文件和目录名字,比如排除sdr目录则增加下面两行:
*.sdr  
*.sdr/*  
注意:更改这个文件后需要重新启动btsync才有效。

开机自动启动btsync

首先安装dos1eventHandler,将btsync的自启动脚本btsync auto start放到scripts/startup目录即可。

将Kindle连上电脑之后btsync进程自动关闭

每次连上电脑之后需要手动重新启动一次btsync。

Android和其他平台

我们可能不会随时身边都带着电脑,那么这时候想把文件发到Kindle怎么办呢?幸好btsync的平台支持非常广泛,用一部Android或者IOS手机就行了,这里以Android为例。

首先去Google Play 下载BitTorrent® Sync客户端,启动之后添加一个文件夹,选择本地的同步目录,然后扫描在电脑上BTSync客户端的文件夹列表里邮件->Connect mobile
device,用手机扫描二维码就可以了,非常方便,手机连上之后将出现在在线的设备列表里。

如果要将手机上的文件发送到Kindle,只需要在手机上用文件管理器拷贝到手机上的同步文件夹即可。

参考资料

在Kindle PaperWhite上安装KUAL

KUAL(Unified Application Launcher)是一个可以运行其它应用程序的Kindlet,由MobileRead的高手twobob开发。
安装KUAL之后,你可以下载或自己编写插件并通过KUAL启动,使Kindle变得无限可能。比较实用的插件有kterm(终端控制台)、KindleExplorer(文件管理器)、Skipstone(webkit网络浏览器)等。
官方的安装指南比较麻烦,本文记录了我的操作过程,步骤相对精简一些,仅供参考。我的系统是已经越狱的5.3.8,需要安装的KUAL版本是v2.2。

系统越狱

安装KUAL之前,必须保证Kindle系统已经越狱。由于我的设备已经越狱,并且网上的教程也比较多,具体操作不再详述。

安装KUAL

下载KUAL.V.2.2.zip。将Kindle连接上电脑,将压缩包里的KindleLauncher-2.0.azw2(KPW对应这个文件,如果是其它Kindle设备请看说明)放到documents目录,KUAL.cfg放到extensions 目录。
断开Kindle和电脑的连接,此时在Kindle主界面上可以看到KindleLauncher应用程序的图标,直接点击打开。
不出意外的话应该满足不了KUAL的运行条件,可能会提示以下两种情况的错误:

安装开发者证书

如果提示证书错误,那么需要将开发者证书刷入系统。下载 prerequisites-all-supported-devices.zip ,选择相应设备的开发者证书文件放到U盘模式的根目录(比如KPW就是"update_k5_ALL_PW_ALL_devcerts_install.bin",详见压缩包的的Readme.txt),然后进入设置->升级系统就可以安装开发者证书了。

Kinldet越狱

Kindlet的越狱和系统的越狱不同,Kindlet越狱后是为了运行非Amazon官方下载的Kindlet。
Kindlet的越狱也非常简单,将压缩包相应的文件放到U盘根目录然后升级系统就可以了,比如KPW对应的文件是"update_k5_ALL_PW_ALL_kindlet_jailbreak_install.bin"。
满足上面的条件之后就可以正常运行KindleLauncher了,KUAL本身功能并不强大,我们需要通过插件来它的扩展功能。

安装插件

KUAL的插件安装非常简单,直接将对应的文件夹解压到extension目录下面就可以了,运行KUAL之后会自动加载插件的菜单。
推荐的一些常用的插件:

kterm

kterm是Kindle的终端控制台,安装之后可以在Kindle进行shell的交互操作,不需要进入usbnet模式。
kterm说明及下载地址: http://www.fabiszewski.net/kindle-terminal/

Leafpad

Leafpad是一款基于GTK+的全功能文本编辑器,这是Kindle的移植版本.
Leafpad说明及下载地址: http://www.fabiszewski.net/kindle-notepad/

Kindle Explorer

顾名思义,Kindle Explorer是Kindle的文件浏览器,貌似开发者是俄罗斯人,软件质量非常不错!另外该插件集成了Leafpad和kterm,可以直接在文件管理器中打开文件进行编辑或打开终端进行操作。
Kindle Explorer说明及下载地址: http://www.mobileread.com/forums/showthread.php?t=206296

Galculator

全功能的计算器Galculator的Kindle移植版本。

SkipStone

SkipStone是一款轻量级的Webkit浏览器,支持多标签浏览,具有下载管理功能,比系统的体验版浏览器好用。

卸载插件

卸载KUAL插件非常简单。由于KUAL的大多数插件都是“绿色”软件,一般来说,直接删除extensions目录下的相应文件夹即可,下次启动KUAL时,该插件的菜单会自动被删除。

参考资料

Tuesday, 12 January 2016

生成kindle电子书

Slight reformatting of the pages at

https://mitpress.mit.edu/sicp/full-text/book/book-Z-H-4.html#%_toc_start
from https://github.com/twcamper/sicp-kindle

Wednesday, 23 December 2015

KindleUnpack


python-based software to unpack Amazon / Kindle generated ebooks
KindleUnpack unpacks a non-DRM Kindle/MobiPocket ebook into its component parts which change depending on the type of Kindle/Mobi ebook being processed
- MobiPocket and early Kindle version 7 or less ebooks are unpacked to the 
        original html 3.2 and images folder that can then be edited and reprocessed by 
        MobiPocketCreator.

- Kindle Print Replica ebook as unpacked to the original PDF and any associated images.

- Kindle KF8 only ebooks (.azw3) are unpacked into an epub-like structure that may or 
        may not be a fully valid epub depending on if a fully valid epub was 
        originally provided to kindlegen as input.  NOTE: The generated epub should be
        validated using an epub validator and should changes be needed, it should load
        properly into Sigil and Calibre either of which can be used to edit the result
        to create a fully valid epub.

- Newer Kindle ebooks which have both KF8 and older versions inside are unpacked into 
        two different parts: the first being the older MobiPocket format ebook parts 
        and the second being an epub-like structure that can be edited using Sigil
The KindleUnpack program currently requires Python 2.7.X to function properly. But work is underway to create a version that will work on both Python 2.7.X and Python 3.4.X or later.
On Windows machines we strongly recommend you install the free version of ActiveState's Active Python 2.7.X or later as it properly installs all of the required parts including the tk widget kit and updates the system path on Windows machines. The official installer from python.org sometimes does not properly handle this for Windows machines.
On Mac OS X 10.6.X and later and almost all recent Linux versions, the required version of Python is already installed as part of the official OS installation so Mac OS X and Linux users need install nothing extra.
To install KindleUnpack, simply find a nice location on your machine and fully unzip it.
Do not move the KindleUnpack.pyw program away from its associated "lib" folder. If you have a proper Python 2.7 or later installation on your machine, you should be able to simply double-click the KindleUnpack.pyw icon and the gui interface should start
If you would prefer a command-line interface, simply look inside KindleUnpack's "lib" folder for the KindleUnpack.py python program and its support modules. You should then be able to run KindleUnpack.py by the following command:
python kindle_unpack.py [-r -s -d -h -i] [-p APNX_FILE] INPUT_FILE OUTPUT_FOLDER
where you replace:
INPUT_FILE - path to the desired Kindle/MobiPocket ebook
OUTPUT_FOLDER - path to folder where the ebook will be unpacked
Options: -h print this help message
-i               use HDImages to overwrite lower resolution versions, if present

-s               split combination mobis into older mobi and mobi KF8 ebooks

-p APNX_FILE     path to a .apnx file that contains real page numbers associated
                     with an azw3 ebook (optional).  Note: many apnx files have 
                     arbitrarily assigned page offsets that will confuse KindleUnpack 
                     if used
--epub_version= specify epub version to unpack to: 2, 3 or A (for automatic) or F for Force to epub2, default is 2
-r               write raw data to the output folder

-d               dump headers and other debug info to output and extra files
Please report any bugs or comments/requests our sticky forum on the Mobileread website.
It can be found at http://www.mobileread.com/forums.
Look under E-Book Formats > Kindle Formats > KindleUnpack (MobiUnpack).
from  https://github.com/kevinhendricks/KindleUnpack

Monday, 19 October 2015

Kindle PaperWhite作为树莓派的命令终端

 网上有大牛把Kindle作为树莓派的显示屏,外带一个Mac蓝牙键盘,实用移动电源供给。一个台低功耗的可移动主机,酷极了。手上真好有一台Kindle PaperWhite,于是开始折腾。

准备工作

  1. Raspberry Pi 一台
  2. Kindle PaperWhite 一台(已越狱
  3. USB转microUSB数据线2根,一根给Raspberry Pi供电,一根作为Kindle和Raspberry Pi的连接线

安装USBNetwork

USBNetwork工具可以通过usb数据线连接kindle和另一台电脑,实现ssh登录。
安装步骤如下
  1. 下载Kindle-usbnet-0.1.5N.zip,解压以后仔细阅读README_FIRST.txt文件
  2. 将update_usbnet_0.15.N_install_touch_pw.bin拷贝到Kindle根目录
  3. Kindle里工具栏菜单[设置]–> 工具栏菜单[更新您的Kindle],安装完成后会重启

  4. 安装完成以后Kindle更目录会多出一个usbnet目录和extensions\usbnet目录
  5. 编辑usbnet\etc\config文件,修改如下
     USE_WIFI="true"
     USE_OPENSSH="true"
    
开关USBNetwork模式
在Kindle的搜索框内,输入;usbnetwork或者;un。再输入一个可以切换。
查看网络状态
在Kindle的搜索框内,输入;711。可以查到当前无线网卡的IP地址

Mac通过USB线登录Kindle

  1. 用USB线连接Mac和Kindle
  2. 默认Kindle会被挂载成存储设备,先弹出该设备
  3. 然后开启Kindle的USBNetwork模式
  4. Mac[系统偏好设置]–>[网络] 新建一个RNDIS/Ethernet Gadget链接配置如下
     ip:     192.168.15.201
     mask:   255.255.255.0
     router: 192.168.15.244
    
    • 如果无法创建RNDIS连接,可能需要安装HoRNDIS
    • router的地址要Kindle的/usbnet/etc/config文件里KINDLE_IP项一致
  5. 终端SSH连接
     ssh root@192.168.15.244
    

通过WiFi登录Kindle

  1. 在Kindle的搜索框内,输入;711查找Kindle无线网卡IP
  2. 通过终端SSH连接即可
到此Kindle的Network算配置完毕,下来我们来配置Kindle的Kterm

安装KUAL和Kterm

KUAL

KUAL是Kindle Unified Application Launcher的缩写,其作用是为越狱的Kindle启动第三方应用。简单的说通过一本特殊的书籍来统一实现启动触发器。
  1. 下载prerequisites-all-supported-devices.zip
  2. 解压后将update_kindlet-dev-20130710-k5-ALL_install.bin文件拷贝到Kindle根目录,Kindle安装.bin文件的方法都是一样的,Kindle里点击[更新您的Kindle],然后会显示安装进度,自动重启后完成。
  3. 下载KUAL.V.2.2.zip
  4. 解压后将KindleLauncher-2.0.azw2文件拷贝到Kindle的/documents目录
  5. 断开连接后Kindle里多了一本《Kindle Launcher》的书,点开有一排可以启动的应用列表。

 

 

Extend

Extend是一组扩展的预编译好的linux命令行工具,让Kindle可以运行一些常用的linux命令,如:openssh,nano,screen,irssi,php,bash,rsync等。
  1. 下载optware_img_60m.zipkindle_extend-1.1.zip
  2. 解压kindle_extend-1.1.zip到kindle_extend-1.1目录
  3. 解压optware_img_60m.zip将optware.img文件替换kindle_extend-1.1/extend/optware.img文件
  4. kindle_extend-1.1目录下的extendextensions子目录拷贝到Kindle更目录
  5. 然后通过SSH登录Kindle执行如下命令
     mntroot rw
     mkdir /mnt/us/circles
     cp /mnt/us/extend/mountd /mnt/us/circles
     ln -s /mnt/us/circles/mountd /etc/rc5.d/S101mountd
     mntroot ro
     /mnt/us/install.sh
     /mnt/us/mount.sh
    

Kterm

Kterm是一个内置虚拟键盘的GTK+的Kindle终端模拟器

Kterm效果图
  1. 下载Kerm 0.7
  2. 解压后将此文件替换kterm/bin/kterm文件。具体看这里
  3. 然后将kterm文件夹拷贝到Kindle的extensions目录下
  4. 断开Kindle与电脑的链接,通过KUAL打开Kterm,随便Ping台机器试试。

配置Raspberry Pi的USB网络连接

安装了USBNetwork,Kindle已经可以通过数据线和Mac电脑连网,接下来配置Raspberry Pi的USB网络链接,使Kindle插入Raspberry Pi以后可以自动建立网络连接。
sudo vim /etc/network/interfaces
添加如下内容
#USB tethering
allow-hotplug usb0
iface usb0 inet static
    address 192.168.15.1
    netmask 255.255.255.0
    broadcast 192.168.15.255
    up iptables -I INPUT 1 -s 192.168.15.1 -j ACCEPT
    up eject /dev/sda1
  • allow-hotplug usb0表示插入USB后自动加载网络配置
  • up eject /dev/sda1表示弹出Kindle自动挂载的磁盘分区
重启网络
sudo service networking reload

见证奇迹的时刻

  1. 使用数据线连接Kindle和Raspberry Pi
  2. 开启USBNetwork模式,Kindle的搜索框内,输入;un然后回车
  3. 打开Kterm键入
    ssh pi@192.168.15.1
若提示输入密码或者保存密钥指纹,说明大功告成。
Kindle作为跳板机
Kindle和Raspberry Pi顺利创建连接之后,Mac OS可以通过Kindle的Wifi连接SSH登录进Kindle,然后再次SSH登录进入Raspberry Pi。

参考阅读

  1. KindleBerry Pi
  2. Kindleberry “Paperwhite” Pi
  3. Kindle Touch Hacking
  4. Kindleberry Wireless: A Portable Outdoor Hackstation
from http://codelife.me/blog/2013/12/17/kindle-pw-as-a-terminal-connect-to-raspberry-pi/