学习如何使用Python制作电子书?看着一篇文章就够了!

学习如何使用Python制作电子书?看着一篇文章就够了!

电子书制作分为两类: 文字类书籍 和 漫画类书籍
今天就来介绍一下如何使用Python制作这两种电子书籍.

文字类电子书制作

制作电子书可以使用ebooklib库,制作起来只需要简单的若干步骤就可以生成一本epub电子书, 然后再通过kindlegen工具转换各种格式就可以了。

  • Python库的安装方法 pip install ebooklib

制作电子书的主要步骤如下:
1. 创建电子书
2. 设置电子书的作者、书名等信息
2. 为电子书添加简介
3. 添加章节内容
4. 为电子书制作目录
5. 保存到文件

开始制作电子书

制作电子书代码示例如下:

from ebooklib import epub

book = epub.EpubBook()

book.set_identifier('sample123456')
book.set_title('Sample book')
book.set_language('en')
book.add_author('Aleksandar Erkalovic')

book.add_metadata('DC', 'description', 'This is description for my book')
book.add_metadata(None, 'meta', '', {'name': 'key', 'content': 'value'})

# intro chapter
c1 = epub.EpubHtml(title='Introduction',
                   file_name='intro.xhtml',
                   lang='en')
c1.set_content(u'<html><body><h1>Introduction</h1><p>Introduction paragraph.</p></body></html>')

# about chapter
c2 = epub.EpubHtml(title='About this book',
                   file_name='about.xhtml')
c2.set_content('<h1>About this book</h1><p>This is a book.</p>')

book.add_item(c1)
book.add_item(c2)


style = 'body { font-family: Times, Times New Roman, serif; }'

nav_css = epub.EpubItem(uid="style_nav",
                        file_name="style/nav.css",
                        media_type="text/css",
                        content=style)
book.add_item(nav_css)


# 目录TOC设置

book.toc = (epub.Link('intro.xhtml', 'Introduction', 'intro'),
              (
                epub.Section('Languages'),
                (c1, c2)
              )
            )

# 书脊设置
book.spine = ['nav', c1, c2]

# 最后,需要添加NCX和导航信息
book.add_item(epub.EpubNcx())
book.add_item(epub.EpubNav())

# 电子书输出到文件
epub.write_epub('test.epub', book)

电子书的制作过程就是这样的流程了。

漫画电子书制作

  1. 使用Python库 KindleComicConverter
  2. 格式转会工具kindlegen

具体使用方法

  1. 安装KindleComicConverter 库命令: pip install KindleComicConverter
  2. 安装后得到了一个命令kcc-c2e, 使用这个命令就可以将包含图片的目录制作成漫画电子书文件, 命令示例: kcc-c2e --forcecolor -p KPW -f MOBI -o ./鬼灭之刃第001话.epub./鬼灭之刃第001话/
  3. 安装kindlegen工具, 下载 kindlegen, 解压后将kindlegen存放到 /usr/local/bin 目录下即可。

kcc-c2e命令介绍:

  • --forcecolor : 表示生成漫画书保留色彩信息, 如果不增加就会将图片处理成灰度图片
  • -p KPW : 生成适配KPW设备的电子书, 可以在帮助信息中看到支持的设备列表
  • -f MOBI : 保存文件格式, 支持MOBIEPUBCBZKFX四种。
  • -o outpath : 生成文件名路径,如果是包含文件名,文件名后追要以".epub"结尾。

批量制作漫画书

准备工作完成,接下来开始制作电子书了。

现在根据自己的文件路径信息执行一下命令:

kcc-c2e --forcecolor -p KPW -f MOBI -o ./鬼灭之刃第001话.epub ./鬼灭之刃第001话/

此时,会先生成鬼灭之刃第001话.epub文件,然后再转换成MOBI格式的./鬼灭之刃第001话.mobi文件(转换使用的是kindlegen工具命令)。

下面是一个简单的按照目录批量生成漫画电子书的脚本:

#!/usr/bin/env bash

# kcc-c2e -b 2 -p KPW -o /data/Images/comics/out/鬼灭之刃 -f MOBI 鬼灭之刃
usage(){
cat <<END
使用说明:
        `basename $0` <漫画名称目录>
        用于批量生成多卷Volume文档
参数说明:
        漫画目录名是包含子目录(卷)结构的
#
# 漫画名目录
#   卷1名
#   卷2名
#   ...
#   卷n名
# 生成文件名为:
#   漫画名_卷1名.mobi
#   漫画名_卷2名.mobi
#   ...
#   漫画名_卷n名.mobi
# 保存目录固定: /data/Images/comics/out
END
}

if [ "$#" == "0" -o "$1" = "-h" ] ; then
    usage
    exit 0
fi

fn_path="$1"
main_name=`basename $fn_path`
base_path=`dirname $fn_path`

echo "file_path: $fn_path"
echo "base_path: $base_path"
echo "file_name: $main_name"

outdir="/data/Images/comics/out/$main_name"

if [ "$base_path" = "." -o "$base_path" = "" ] ; then
        base_path="/data/Images/comics"
fi

fn_path="$base_path/$main_name"
if [ ! -r "$fn_path" ] ; then
        echo "$fn_path doesnt exist!"
        exit 1
fi

if [ ! -r "$outdir" ] ; then
        mkdir $outdir
        if [ "$?" != "0" ] ; then
                echo "输出目录创建失败:[$outdir]"
                exit 1
        fi
fi

cd $base_path/$main_name

for chapter_name in `ls`
do
        out_name="$outdir/${main_name}_${chapter_name}.epub"
        mobi_out_name="$outdir/${main_name}_${chapter_name}.mobi"
        if [ ! -r "$mobi_out_name" ] ; then
                kcc-c2e --forcecolor -p KPW -f MOBI -o $out_name $chapter_name
        fi
done

rm -rf /tmp/mobi-*
rm -f /tmp/mbt-*

到这里基本上就已经介绍完制作方法了, 如果生成漫画书时出现一些图片读取错误那就表示图片破损或者读取的不是图片文件, 可以根据错误信息找到对应图片确认是否有错误并修正,然后单独使用kcc-c2e命令生成就可以了。


转载本文时请注明出处及本文链接地址学习如何使用Python制作电子书?看着一篇文章就够了!

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注