【Python】利用Python批量修改Epub格式电子书的标题和其他信息
Zap的小工坊
2022年07月03日 11:25

最近整了个电纸书,寻思着搞一些轻小说看,然后发现有些小说的特典只有word/txt格式,虽然可以比较方便的转换为Epub格式进行阅读,但是没有标题等Metadata,导致在导入Calibre进行管理和合并(毕竟需要导入电纸书,文件太多会很乱)时需要一个一个的修改,就很烦,于是找到了Python的Ebooklib库,来批量修改标题,写程序的时候遇上了点小问题,网上找了一圈貌似也没有分享过类似的情况,所以记录一下


Ebooklib是一个可以创建、编辑和管理epub2/epub3/kindle格式电子书的库(目前kindle相关的尚在开发中),可以通过pip进行安装

代码块
Python
自动换行
复制代码
pip install ebooklib
复制成功

安装后导入并打开需要修改的电子书

代码块
Python
自动换行
复制代码
from ebooklib import epub #只导入epub模块即可
book = epub.read_epub(fileName) #fileName处填入电子书的路径和名称,如'D:\\book.epub'
# 注意需要是epub格式,不是的需要先用其他软件转换
复制成功

虽然库中有可以直接修改标题的方法book.set_title(title),但是实际使用中发现Calibre读不出来,于是去官方的文档中找到了set_unique_metadata方法进行修改,用法如下

代码块
Python
自动换行
复制代码
book.set_unique_metadata(namespace: Any, name: Any, value: Any, others: Any | None = None) 
复制成功

其中,name为需要修改的元数据,我需要改的是标题所以是title;value处填元数据的值,即想要修改成的标题;namespace处没有明确说明,在ebooklib.epub的源代码中发现不少调用修改元数据的地方都是填的'DC&#​39;(注意需要带引号,这是个字符串),于是照猫画虎的填上,修改完以后使用Calibre确认了一下没有问题,如果有知道epub元数据含义的dalao希望能分享一下到底是为啥(