在Google Code上创建了kindle tools项目
为了分享一些有用的小工具,我在google code上创建了一个新的项目:http://kindle-tools.googlecode.com
有兴趣参与这个项目的同学请与我联系,我会把你加入到developer list中去。
目前这个项目的owner是:freeoz.k3@gmail.com
有什么需求,请发到这个邮箱去。
当然,我未必会看,哈哈哈。。。。 有兴趣,啥都不会,行么?
做了个开发计划
http://kindle-tools.googlecode.com/files/Kindle%20Tools%20Development%20Plan%20v1.0.doc有兴趣的同学请下载看看去。 原帖由 四香油饼 于 1-10-2010 22:04 发表 http://www.freeoz.org/ibbs/images/common/back.gif
有兴趣,啥都不会,行么?
开发计划里有Java和脚本两个主要问分,饼叔想搞Java还是脚本?
你也可以发挥一下你的C++,做一两个模块出来用一用。 原帖由 key 于 2-10-2010 12:02 发表 http://www.freeoz.org/ibbs/images/common/back.gif
开发计划里有Java和脚本两个主要问分,饼叔想搞Java还是脚本?
你也可以发挥一下你的C++,做一两个模块出来用一用。
行啊。老师给布置任务吧 我有兴趣,但是我不喜欢java,我喜欢.net + powershell.
非正式发布 0.1-RC Command Line文本版本
一个初步可以使用的命令行版本已经可以释出,现在非正式发布,请各位民工级Kindle用户在责任自负的前提下自己checkout使用。
1. 项目checkout
具体内容请查看:
http://code.google.com/p/kindle-tools/source/checkout
简单来说就是:
svn checkout http://kindle-tools.googlecode.com/svn/trunk/ kindle-tools
对svn有疑问的同学请自己找书看。
2. 项目目录
为了兑现“语言不限”的承诺,我建立了JavaTools项目目录,在其下建立maven Project Object Management配置。
tiny-test-area大致上和论坛的灌水区同义,想试试手的同学请到这个区灌程序,但注意不要放太大的文件,
比如一些网上可以找到的库,请提供下载地址或下载脚本即可,不要直接把文件copy进去。
JavaTools目录下的目录结构大致上参考了《Maven Definitive Guide》的建议,
事实上我是首先参考了“江南白衣”同学的springside项目,然后再参考《Maven Definitive Guide》,
而白衣老大本身就是啃这书的,所以基本上同源。不过那个modules/*-parent目录越来越让我觉得does not make sense,
先用着吧。
3. 项目平台搭建
如果你还没有搭建你的maven平台,请行下载。如果找不到maven,请自行放狗。
4. 项目编译
到JavaTools目录下一个命令搞定:
mvn compile
如果你想制作jar:
mvn package -Dmaven.test.skip=true
如果你实在想看看我的unit test做了什么可以把-Dmaven.test.skip=true这句去掉
5. 项目执行
我现在没有建议单单的项目执行脚本,因为暂时目标用户群还是广大民工同学,基本上指望大家打字快,
查书快,放狗也快。执行程序,请直接用maven来执行:
cd modules/k3tool-cli
mvn exec:java -Dexec.mainClass=k3tool.cli.SimpleTxtFileProcessor
如果你落足眼力,应该能看到下面的usage:
Missing base dir
usage: java -cp <classpath> k3tool.cli.SimpleTxtFileProcessor
-b <baseDir> Base input directory
-c <file> Configuration file
-C <file> Create configuration template
-o <targetDir> Target output directory
5.1 建立配置文件模板
我把OPF的配置简化成自己的配置。为了减轻文档压力,我建立了一个配置文件模板,你可以用程序来生成这个模板。
-C <file> Create configuration template
mvn exec:java -Dexec.mainClass=k3tool.cli.SimpleTxtFileProcessor -Dexec.args="-C my-config.xml"
生成的配置文件模板如下:<?xml version="1.0" encoding="UTF-8"?>
<Book>
<Info name="title">Title of the book</Info>
<Info name="language">zh-cn</Info>
<Info name="creator">Name of the creator</Info>
<Info name="publisher">Name of the publisher</Info>
<Info name="subject">Subject of the book</Info>
<Info name="desc"/>
<Info name="coverPath"/>
<Info name="welcomePath"/>
<Info name="tocFile"/>
<Info name="inputCharset">GB18030</Info>
</Book>对XML文件有疑问的民工请自行查书或放狗。
修改这个配置文件,查注意,如非必要,本配置文件以及其他所有的文件请用UTF-8编码,对编码有疑问的同学,请自行放狗。
下面是我做的金庸全集的配置文件,请参考之:<?xml version="1.0" encoding="UTF-8"?>
<Book>
<Info name="title">金庸全集</Info>
<Info name="language">zh-cn</Info>
<Info name="creator">金庸</Info>
<Info name="publisher">金庸</Info>
<Info name="subject">金庸全集</Info>
<Info name="desc"></Info>
<Info name="coverPath"/>
<Info name="welcomePath"/>
<Info name="tocFile"/>
<Info name="inputCharset">GB18030</Info>
</Book>5.2 生成OPF档案
本程序的作用是对指定目录下的所有文本文件建立一个相应的OPF档案,再用Kindle的官方工具生成Kindle文档格式。
下面是程序执行的命令example:
mvn exec:java -Dexec.mainClass=k3tool.cli.SimpleTxtFileProcessor -Dexec.args="-c my-config.xml -b C:\eBook\金庸全集 -o output\金庸全集"
如果程序没有出错,你能看到下面的生成目录:
output\金庸全集\content
内容如下:
5.3 生成mobi/prc文件
cd output\金庸全集\content
kindlegen Kindle-Book.opf -o 金庸全集.mobi -unicode
kindlegen不是我写的,是尊敬的amazon同学写的。要注意这个东西性能一般,
我要它生成一套金庸全集,它花了我十多分钟,当然,如果内容少一些,比如只生成
一套鹿鼎记会好很多。
-unicode参数比较有必要,你可以试试用和不用。
0.2 RC释出,Kindle-tools进入实战阶段
经过这个长周末的奋战,现在kindle-tools已进入0.2-RC实战阶段。现在kindle-tools已经可以实用性地支持txt, html, xhtml和各种图片
(被拍砖,我知道其他工具也支持,但我这个是定制库程序,不是GUI界面实用程序)。
目前我已经在kindle-tools的基础上建立了自己的应用服务器,定时打包一些我关心的
信息,建立电子书,推送致我的K3,只要有wifi网终,我就可以自动下载这些电子书。
这是电子书下载到本地后的home列表
这是电子书的目录,我目前对这个目录不是太满意,接下来会做一些改动,不过暂时能用,先用几天吧。
这是电子书的内容,没有什么特别了。
简单来说,kindle-tools是一套基础支持工具,你可以在上面建立你自己的应用,而不需要了解和处理
各种关于OPF,编码等问题。关键是你可以自己定制自己的工具,不需要等别人送上门来。 关于kindle-tools的功能简介。
1. 自动基于目录建立电子书,包括书目和内容。
2. 支持TXT和HTML等格式。MobiPocket Creator也支持这个功能,但kindle-tools可以做得比它更好。
对于一个html文档,如果包含了一些图片,而图片放在remote的话,kindle-tools会下载这个图片到本地。
远程图片在kindle上是不支持的(电子书呀同学)。
3. 离线文档与在线地址的结合。如果有一个离线的HTML文档,可以在同一个目录下建立一个名称为:
<DOT><HTML File Name><DOT>baseurl
的文本文件,用一行来记录这个离线文件原来的URL。这样做的作用在于,如果这个离线文档上有相对路径的图片,
这个图片会在建立电子书的过程中被自动下载下来。
Kindle-Tools上第三方程序库
Kindle tools上大量采用了第三方开源程序库,主要是Apache家族那些成员。排名不分先后,包括:
XOM: 一个名声还不错的XML处理库。
Apache commons-cli: 一个用于处理console程序输入参数的库
Apache commons-beanutils: 一个用于简化Java Bean Reflect操作以及基础库型的auto convert的库
Apache commons-lang:我基本上只用StringUtils
Apache commons-io:一个用于简化IO操作的库,包括文件和目录的拷贝、删除以及简化一些常用的数据写入与读出操作的库。这套东西我用得不熟,程序有点bug
TagSoup:一套用于处理HTML至XHTML转换的库,名声不错,不过我发现它对于XML encoding的支持有点问题,现在只能手动定制编码。你会看到一个写得很奇怪的static method,就是为了做手动编码支持TagSoup而写的。
Spring Framework:事实上我暂时没有大量用它,至少在kindle-tools上。因为kindle-tools本身是一个工具库,而不是终端程序界面,所在spring framework的作用不大。但spring framework IOC是一个基础思路,我在终端服务器上用这东西。
程序质量问题
目前kindle-tools已经包含了18个类文件,1,777行代码(包括空行和注释,但不包括test package的代码)。但这套东西我目前暂时还不关心代码质量问题。相反,我有点故意把代码写得随便一些,
而不执着于代码的风格(naming convention我还是执着的),类设计和框架设计,
我希望采用功能驱动的方式,和后期refactor的做法来实现系统的进化。
虽然Don Knuth同学很不认同这些东西,我也不太认同,但没有实践没有发言权,
所以我打算在这里实践一下。
比如,除了一开始我写了好几个model来represent OPF标准之外,其他东西我基本上把实现都压入一些
我认为最容易想到的类中去,最典型的例子是SimpelTxtFileProcessor,这是一个console接口,
但我把所有的东西都压进去写,然后再考虑其他。
如果你希望加入这个项目,我不强制要求你跟随我这种风格。你可以随时提出你的refactor观点或类框架
设计,只要发个邮件给我说说你想怎样做就行了。但如果你想“学习”我的代码,那就建议不要了。这套东西
可能是我目前写得最烂的一套代码。当然,你可以理解成我为了避免被牛人们b4的借口。 key真是精力无限啊!
回复 #12 清风不写字 的帖子
quick hand man制作并发布电子书:Hibernate Reference 3.6
http://code.google.com/p/kindle-tools/downloads/detail?name=Hibernate-Reference-3.6.zip&can=2&q=这本电子书是由kindle-tools + wget + 手动操作做出来的,
我之前试过直接由PDF制作,但没有目录,很不方便。
所以就自己半自动做一本了。
kindle-tools大bug求修正
目前kindle-tools采用的是TagSoup + XOM的方式来处理HTML/XHTML,这个解决方案之下,HTML会出现一个问题:<pre/>元素问题。
由于我把所有的HTML元素都当做一般的XML元素来处理,这样<pre/>就会出错。
因为输出的格式会被启动格式化,而这个格式会改变<pre/>的样子。
希望大家能提出一个好的解决方案,谢谢。
页:
[1]