使用Python將EPUB電子書網(wǎng)文主角換成自己
使用Python將EPUB電子書網(wǎng)文主角換成自己
最近看網(wǎng)文小說,想到一個有意思的東西,為什么不把網(wǎng)文主角換成自己的名字,這樣看起來不更有沉浸感,更加有代入感。于是便從epub文件下手。感覺只是一個很簡單的文字替換功能。結(jié)果發(fā)現(xiàn)自帶的很多小說閱讀器居然沒有這個功能。于是想到只是個很簡單的字符串替換,python這不一下搞定。chatGPT,啟動。
EPUB電子書
EPUB電子書是一種廣泛使用的電子書格式,其中的內(nèi)容通常以HTML或XHTML文件的形式存儲。其實如果你不嫌麻煩的話,直接用calibre打開, 編輯源文件,一個個查找替換(重復(fù)幾千次就好了,笑)。
EPUB電子書本質(zhì)上是個壓縮文件,首先將它改成.zip格式,解壓縮后,就可以看到文件夾里字體,圖片,html的章節(jié),也可以繼續(xù)修改。然后壓縮成zip,再改成epub格式即可。
準(zhǔn)備工作
在開始之前,你需要確保以下幾點:
- Python環(huán)境:已經(jīng)安裝Python 3。我使用的是VScode編輯器,按理說,這么簡單的功能,大部分編輯器都都可以
- 必要庫:需要用到
zipfile
和os
庫。基本上大部分python環(huán)境都有。 - EPUB文件:準(zhǔn)備好你想要修改的EPUB文件,不確定別的mobi,awz3格式兼是否兼容
操作步驟
1.解壓EPUB文件
EPUB文件本質(zhì)上是一個ZIP壓縮包,其中包含了電子書的文本內(nèi)容、圖片和其他資源。我們需要先將其解壓。
2.遍歷并修改章節(jié)內(nèi)容
遍歷解壓后的文件,找到所有包含文本內(nèi)容的HTML或XHTML文件,進行字符串替換。
3.重新打包
將修改后的文件夾重新打包成EPUB格式,以供閱讀器正常識別。
Python實現(xiàn)代碼
以下是完整的Python代碼示例:
import zipfile import os # 設(shè)置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') # 遍歷解壓文件夾,修改章節(jié)內(nèi)容 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) # 保存修改后的內(nèi)容 with open(file_path, 'w', encoding='utf-8') as f: f.write(modified_content) # 壓縮修改后的內(nèi)容為新的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}')
重點是下面幾行
epub_path = 'book.epub'#源文件的名字,建議放在同一個文件夾,直接運行。不在一個文件夾要輸入地址 old_name = 'name1'#原主角的名字 new_name = 'your_name'#你的名字 output_epub_path = 'book.epub'#新的電子書的名字
代碼解析
- 解壓EPUB文件:使用
zipfile
庫解壓EPUB文件到指定目錄。 - 查找與替換:遍歷目錄中的
.html
和.xhtml
文件,替換主角名字。 - 重新打包:將修改后的內(nèi)容壓縮成新的EPUB文件。
- 清理:使用
shutil.rmtree()
刪除臨時解壓目錄。
挺有意思的小玩具,但是實際使用,發(fā)現(xiàn),如果用自己的名字,還是有點太尷尬,建議改成自己的網(wǎng)名,尷尬少很多。另外,對于外國名字更好,只有名,不會有別的變體。中文名字變體太多,問題太多。
果然還是實際上實踐,更有意思呢,不然學(xué)了東西真沒用。
到此這篇關(guān)于使用Python將EPUB電子書網(wǎng)文主角換成自己的文章就介紹到這了,更多相關(guān)Python EPUB電子書內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
用Python?Tkinter庫GUI編程創(chuàng)建圖形用戶界面
這篇文章主要為大家介紹了用Python?Tkinter庫GUI編程創(chuàng)建圖形用戶界面,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-08-08Python使用PIL庫將PNG圖片轉(zhuǎn)換為ICO圖標(biāo)的示例代碼
在軟件開發(fā)和網(wǎng)站設(shè)計中,ICO圖標(biāo)是一種常用的圖像格式,特別適用于應(yīng)用程序圖標(biāo)、網(wǎng)頁收藏夾圖標(biāo)等場景,本文將介紹如何使用Python的PIL庫將PNG圖片轉(zhuǎn)換為ICO格式的圖標(biāo)文件,需要的朋友可以參考下2025-03-03使用Python的package機制如何簡化utils包設(shè)計詳解
這篇文章主要給大家介紹了關(guān)于使用Python的package機制如何簡化utils包設(shè)計的相關(guān)資料,文中通過示例代碼的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。2017-12-12快速了解Python開發(fā)中的cookie及簡單代碼示例
這篇文章主要介紹了快速了解Python開發(fā)中的cookie及簡單代碼示例,具有一定借鑒價值,需要的朋友可以參考下2018-01-01