广告位联系
返回顶部
分享到

使用Python将EPUB电子书网文主角换成自己

python 来源:互联网 作者:佚名 发布时间:2024-11-09 11:37:13 人浏览
摘要

使用Python将EPUB电子书网文主角换成自己 最近看网文小说,想到一个有意思的东西,为什么不把网文主角换成自己的名字,这样看起来不更有沉浸感,更加有代入感。于是便从epub文件下手。感

使用Python将EPUB电子书网文主角换成自己

最近看网文小说,想到一个有意思的东西,为什么不把网文主角换成自己的名字,这样看起来不更有沉浸感,更加有代入感。于是便从epub文件下手。感觉只是一个很简单的文字替换功能。结果发现自带的很多小说阅读器居然没有这个功能。于是想到只是个很简单的字符串替换,python这不一下搞定。chatGPT,启动。

EPUB电子书

EPUB电子书是一种广泛使用的电子书格式,其中的内容通常以HTML或XHTML文件的形式存储。其实如果你不嫌麻烦的话,直接用calibre打开, 编辑源文件,一个个查找替换(重复几千次就好了,笑)。
EPUB电子书本质上是个压缩文件,首先将它改成.zip格式,解压缩后,就可以看到文件夹里字体,图片,html的章节,也可以继续修改。然后压缩成zip,再改成epub格式即可。

准备工作

在开始之前,你需要确保以下几点:

  • Python环境:已经安装Python 3。我使用的是VScode编辑器,按理说,这么简单的功能,大部分编辑器都都可以
  • 必要库:需要用到zipfile和os库。基本上大部分python环境都有。
  • EPUB文件:准备好你想要修改的EPUB文件,不确定别的mobi,awz3格式兼是否兼容

操作步骤

1.解压EPUB文件
EPUB文件本质上是一个ZIP压缩包,其中包含了电子书的文本内容、图片和其他资源。我们需要先将其解压。

2.遍历并修改章节内容
遍历解压后的文件,找到所有包含文本内容的HTML或XHTML文件,进行字符串替换。

3.重新打包
将修改后的文件夹重新打包成EPUB格式,以供阅读器正常识别。

Python实现代码

以下是完整的Python代码示例:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

import zipfile

import os

# 设置EPUB文件路径和替换名字

epub_path = 'book.epub'

old_name = 'name1'

new_name = 'your_name'

output_epub_path = 'book.epub'

# 解压EPUB文件

with zipfile.ZipFile(epub_path, 'r') as epub_zip:

    epub_zip.extractall('extracted_epub')

# 遍历解压文件夹,修改章节内容

for root, dirs, files in os.walk('extracted_epub'):

    for file in files:

        if file.endswith('.html') or file.endswith('.xhtml'):

            file_path = os.path.join(root, file)

            with open(file_path, 'r', encoding='utf-8') as f:

                content = f.read()

            # 替换主角名字

            modified_content = content.replace(old_name, new_name)

            # 保存修改后的内容

            with open(file_path, 'w', encoding='utf-8') as f:

                f.write(modified_content)

# 压缩修改后的内容为新的EPUB文件

with zipfile.ZipFile(output_epub_path, 'w') as new_epub_zip:

    for root, dirs, files in os.walk('extracted_epub'):

        for file in files:

            file_path = os.path.join(root, file)

            arcname = os.path.relpath(file_path, 'extracted_epub')

            new_epub_zip.write(file_path, arcname)

# 清理解压目录

import shutil

shutil.rmtree('extracted_epub')

print(f'新的EPUB文件已生成:{output_epub_path}')

重点是下面几行

1

2

3

4

epub_path = 'book.epub'#源文件的名字,建议放在同一个文件夹,直接运行。不在一个文件夹要输入地址

old_name = 'name1'#原主角的名字

new_name = 'your_name'#你的名字

output_epub_path = 'book.epub'#新的电子书的名字

代码解析

  • 解压EPUB文件:使用zipfile库解压EPUB文件到指定目录。
  • 查找与替换:遍历目录中的.html和.xhtml文件,替换主角名字。
  • 重新打包:将修改后的内容压缩成新的EPUB文件。
  • 清理:使用shutil.rmtree()删除临时解压目录。

挺有意思的小玩具,但是实际使用,发现,如果用自己的名字,还是有点太尴尬,建议改成自己的网名,尴尬少很多。另外,对于外国名字更好,只有名,不会有别的变体。中文名字变体太多,问题太多。
果然还是实际上实践,更有意思呢,不然学了东西真没用。


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 :
相关文章
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计