刚入手Kindle 3,发现原生系统的Collections管理及其低效,文件一多就头大。即使将电子书放在documents的子目录中,也需要在kindle上手工指定Collections,实在是崩溃。一番google+尝试,用python实现了按照子目录自动更新Collections的功能,代码写的太烂就不发出来丢人了,把实现方法贴下来好了。
Kindle的Collections功能是通过/system/collections.json来实现的。
1. /system/collections.json文件格式
1.1. 标准json文件,文件编码与系统locale一致。例如通过debugOn修改为zh-CN后,cllections.json编码为GB 18030, 换行为Unix的LF格式。
1.2. 每一个Dictionary的索引为Collection名+"@
Locale",例如 "Amazon@
zh-CN"。
1.3. Items里每一个值为一本书的hash。如果是pdf文件,hash则为pdf文件全路径的utf-8编码的sha1值,如果是mobi文件,则hash为文件信息里的Amazon Standard Identification Number (ASIN)及类别。
例如:/mnt/us/documents/abc.pdf -> 8155cc904146beab3ebf567e84c8e62c18eee0b6
/mnt/us/documents/101023Concise English-Chinese Dictionary.mobi > #B0043GX3LA^EBOK
1.4. lastAccess 为timeStamp
2. 直接修改后的json文件会被自动恢复为旧文件,经过尝试发现了一个可行的办法:覆盖掉原json文件后不要弹出Kindle磁盘,直接将Kindle的电源按钮拨到右边,保持10秒左右(电源按钮由绿变黄),松开电源按钮,拔掉usb线,Kindle将重启,新的Collections.json就会被采用。
ps: Collections分类名字是支持中文的。
参考信息:
http://hi.baidu.com/jjzhou485/blog/item/3d903696c8d25747d0135e21.html <2.5固件中collection的数据格式>
<Manage Kindle 2.5 collections.json file>
http://github.com/kroo/mobi-python <A library for reading (unencrypted) mobi-reader files in Python>
@
Livid 能不能开个Kindle节点?