;

林师傅的贼窝 每天都被折磨的想死

Kavita识别漫画epub

前言

上期我们在飞牛系统上部署了 kavita 漫画服务器, 这是链接,但是作为漫画服务器, 总要有资源啊, 平时我们接触到的漫画很多都是图片形式的, 这种不能定义目录,(或许可以?来个懂哥教一下~),那今天我们就来自己部署创建 epub 格式的漫画资源

准备工作

首先我们要有一个创建 epub 格式的软件,我这里使用的是 sigil,这是下载链接,下载完成后我们直接通过 sigil 创建 epub3 文件

简单处理一下

首先删掉图中没用的文件, 并创建自己需要的文件

sigil操作步骤
Styles文件夹下新建一个style.css 样式文件,并添加样式

.single-page {
  height: 100%;
  width: 100%;
}
ol {
  list-style-type: none;
}

然后修改content.opf文件的<spine>标签,把<itemref idref="nav.xhtml" linear="no"/>删掉,并修改metadata标签为如下形式

<metadata xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:opf="http://www.idpf.org/2007/opf">
    <dc:language>zh</dc:language> <!-- 语言 -->
    <dc:creator>九井凉子</dc:creator> <!-- 作者 -->
    <dc:title>迷宫饭-卷01</dc:title> <!-- 书名 -->
    <meta property="belongs-to-collection" id="id-1">迷宫饭</meta> <!-- 丛书系列的名称 -->
    <meta refines="#id-1" property="group-position">1</meta> <!-- 在该系列丛书的出版顺序 -->
    <dc:publisher>555</dc:publisher> <!-- 出版社 -->
    <dc:description>6666</dc:description> <!-- 内容简介 -->
    <dc:date>1995-01-02</dc:date> <!-- 出版日期 -->
    <dc:subject>奇幻</dc:subject> <!-- 分类 -->
    <dc:subject>冒险</dc:subject> <!-- 分类 -->
    <meta name="Sigil version" content="2.4.2"/>
    <meta property="dcterms:modified">2025-03-01T00:07:01Z</meta>
</metadata>

创建内容

首先准备好漫画图片,并按照阅读顺序按照1.jpg, 2.jpg的格式命名, 由于 epub 实际上是 html 文件的合集, 因此需要生成对应的 html 文件, 这里我使用 python 生成, 代码如下

import os

# 设置图片所在的目录
image_dir = r'E:/BaiduNetdiskDownload/迷宫饭epub/迷宫饭 vol01/image'  # 替换为你的图片文件夹路径
output_dir = r'E:/BaiduNetdiskDownload/迷宫饭epub/迷宫饭 vol01/html' # 替换为你想要保存HTML文件的路径

# 确保输出目录存在
if not os.path.exists(output_dir):
    os.makedirs(output_dir)
# 遍历目录中的所有文件
for filename in os.listdir(image_dir):
    if filename.lower().endswith(('.png', '.jpg', '.jpeg', '.gif', '.bmp')):  # 检查文件扩展名
        # 构建完整的文件路径
        image_path = os.path.join(image_dir, filename)
        # 创建HTML文件的内容
        html_content = f'''<!DOCTYPE html SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>第 {filename.split(".")[0]} 页</title>
        <link rel="stylesheet" type="text/css" href="../Styles/style.css"/>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    </head>
    <body>
        <img src="../image/{filename}" alt="Comic Book Images" class="single-page" />
    </body>
</html>
        '''

        # 构建HTML文件的输出路径
        output_html_path = os.path.join(output_dir, f'page-{os.path.splitext(filename)[0]}.html')

        # 写入HTML文件
        with open(output_html_path, 'w', encoding='utf-8') as html_file:
            html_file.write(html_content)


print('HTML files have been created successfully.')

运行完成后就会出现对应的 html 文件了, 然后我们在 sigil 中添加这些文件, 添加完成后之后到content.opf文件查看<spine>标签, 确保是按照阅读顺序排列的, 如果按照我说的按数字命名图片一般这步没有问题

sigil添加文件

创建目录

找到一开始的nav.xhtml文件,按如下格式添加目录

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html>

<html
  xmlns="http://www.w3.org/1999/xhtml"
  xmlns:epub="http://www.idpf.org/2007/ops"
  lang="en"
  xml:lang="en"
>
  <head>
    <title>ePub NAV</title>
    <meta charset="utf-8" />
    <link href="../Styles/style.css" rel="stylesheet" type="text/css" />
  </head>
  <body epub:type="frontmatter">
    <nav epub:type="toc" id="toc" role="doc-toc">
      <!-- 此处的ol标签是一级目录 -->
      <ol>
        <li>
          <!-- 此处的a标签则是一级目录链接 -->
          <a href="page-1.html">1</a>
          <!-- 这里嵌套的ol标签则是二级目录 -->
          <ol>
            <li>
              <a href="page-2.html">2</a>
            </li>
          </ol>
        </li>
        <!-- 此处新的li标签则代表是一个新的一级目录 -->
        <li>
          <a href="page-0003.html">3</a>
        </li>
      </ol>
    </nav>
  </body>
</html>

其实这里用 sigil 的目录功能打开看就很清晰明了了

Kavita Epub

Kavita漫画服务器