星期四, 11月 27, 2025

NOVEL-smart-merge:EPUB 智慧合併腳本

下載連結


此腳本負責將「舊完整 EPUB」與「差分 EPUB」智慧合併,產生結構乾淨、內容統一、CSS 樣式一致的新 EPUB。特別適用於小說長期更新、反覆合併。

設計上特別針對AozoraEpub3 下載後(AozoraEpub3 能夠選擇只下載指定的最新幾個章節),交由 AiNiee 翻譯,並且採用中日對照模式的EPUB檔案。

這個腳本處理上述檔案時作了以下幾件事:

1.將檔案排版做調整,刪除多餘空行,並且加入讓日文變淡的CSS格式,但這些效果只對AiNiee 翻譯的檔案有效。

2.讀取兩個EPUB檔案後合併成一個,目錄也重新製作。

3.如果偵測到AozoraEpub3抓取檔案時會加入的扉頁,也就是小說簡介,會自動刪除重複的檔案,(因為後續產生的差分新連載EPUB每一次都會有這部分,不刪除重複非常煩人),原則上預設保留差分檔案裡的,以確保EPUB裡面小說簡介是作者的最新內容。

4.如果偵測到AozoraEpub3抓取檔案時自動加入的紀錄頁,同樣會刪除舊的,只保留最新那個。



一、環境需求

請先安裝以下 Python 套件:

pip install ebooklib beautifulsoup4 lxml

不需要其他額外套件(例如 chardet,不需要)。

Python 版本建議:3.8 以上。


二、檔案準備方式

將以下檔案放到同一個資料夾(INPUT_DIR 指向的位置):

  1. 舊完整 EPUB
    檔名結尾必須為:

    _old.epub
  2. 差分 EPUB(通常是最新更新章節)
    檔名結尾必須為:

    _translated.epub

例如:

MyNovel_old.epub MyNovel_translated.epub

完成後,腳本會在同資料夾輸出:

MyNovel_merged.epub

三、設定參數(可在腳本前段自行修改)

腳本前方的「配置區」可調整資料夾與行為:

INPUT_DIR = r"G:\WORK\NOVEL" OUTPUT_DIR = r"G:\WORK\NOVEL" OLD_FULL_SUFFIX = "_old.epub" TRANSLATED_DIFF_SUFFIX = "_translated.epub" OUTPUT_SUFFIX = "_merged.epub"

其他常用設定:

  • AUTO_DETECT_FRONT_MATTER = True
    自動偵測扉頁。若有需要用固定檔名判斷,可設 False。

  • REMOVE_EMPTY_LINES = True
    自動清理 <p><br/></p> 空行。

  • LANG_ORDER = 'AUTO'
    雙語內容自動判斷中日順序。

  • TOC_TITLE_MODE = 'JA_ONLY'
    目錄標題預設採用日文。


四、使用流程

  1. 確認 INPUT_DIR、OUTPUT_DIR 設定正確

  2. 確認舊檔與差分檔命名符合規則

  3. 執行腳本:

    python epub-merge.PY
  4. 程式會自動:

    • 載入舊 EPUB、差分 EPUB

    • 分析章節與 TOC

    • 建立統一 CSS

    • 修正圖片路徑並重新命名圖片

    • 清理空行、處理雙語段落

    • 建立新的 spine 與 toc

    • 生成新的 EPUB

  5. 完成後可於 OUTPUT_DIR 找到:

    XXX_merged.epub

五、輸出特性

生成的 EPUB 具備以下特點:

  1. 統一 CSS(清爽、可控、支援滿版圖片)

  2. 章節重新命名與排序

    • front_xx.xhtml

    • chapter_xxxx.xhtml

    • record.xhtml(若存在)

  3. 圖片全部重新整理
    存放於 image/img_0001.jpg 等新路徑

  4. TOC 清理與去重
    保證結構不會越合併越亂

  5. 自動偵測扉頁(可關閉)

  6. 日中對照合併顯示
    依配置放置於 <span lang="zh"><span lang="ja">


六、常見問題

1. 找不到差分檔案

請確認差分 EPUB 名稱符合:

[主檔名]_translated.epub

2. EPUBCheck 錯誤是否會產生?

本工具會:

  • 移除危險或不規範的標記

  • 清理空行

  • 統一 HTML 結構

一般情況下可通過 EPUBCheck。

七、完整自動批次

腳本預設支援批次處理,只要同資料夾內有多組:

A_old.epub / A_translated.epub B_old.epub / B_translated.epub C_old.epub / C_translated.epub

一次執行就會全部合併。


 

星期日, 11月 16, 2025

EPUB 批次簡體中文轉繁體中文 + 結構及封面修復工具

https://drive.google.com/file/d/1wCpXbbwenkdc6Mq7miO51eW7jnU3xtHb/

最近叫AI寫的  基本上就是AI的本事

功能:

1.修復大部分常見,而且適合用腳本自動修復的EPUB 錯誤。

2.修復封面 - 處理如果原始檔案的封面頁寫得很雜,結果電子書閱讀器的書架沒辦法抓到封面,明明檔案裡有封面但書架就是空白的情況。

3.簡體轉繁體,使用OPENCC套件,預設是S2TWP (轉換台灣用語)模式 可以自己去改


以下使用說明


epub_convfix.py 是一個用來批次修復 EPUB 結構、路徑、封面、語法、錯誤引用,並可選擇執行簡繁轉換的工具。
把 EPUB 丟進輸入資料夾後,腳本會自動處理並輸出修正版。


1. 系統需求

你需要安裝下列 Python 套件:

lxml opencc-python-reimplemented

快速安裝方式:

pip install lxml opencc-python-reimplemented

腳本本身不需要 chardet。


2. 檔案放置結構

腳本執行前,必須確認下列路徑設定:

INPUT_FOLDER = r"G:\WORK\EPUBWAIT" OUTPUT_FOLDER = r"G:\WORK\EPUB"

請將所有要修復的 EPUB 放到 INPUT_FOLDER
修復後的 EPUB 會輸出到 OUTPUT_FOLDER


3. 三大功能開關(最重要)

腳本最主要的三個設定是:

ENABLE_CONVERSION = True # 簡繁轉換 AUTO_FIX_COVER = True # 自動修復封面 metadata REPAIR_MODE = 'standard' # 修復模式

你通常只需要調整這三項。

ENABLE_CONVERSION

是否將內容簡繁互轉。
True 表示啟用,False 不轉換。

AUTO_FIX_COVER

是否自動找出封面圖片並建立 metadata。

REPAIR_MODE(主要修復強度)

可用模式:

模式說明
minimal只修致命錯誤,不動內容
safe修路徑和連結,不改 HTML
standard(預設)綜合模式,修語法但不破版
strict為通過檢查而強制改 HTML(可能破版)
custom完全依照你底下的細部設定

一般建議用 standard


4. 執行步驟

Step 1

將要處理的 EPUB 放入 INPUT_FOLDER

Step 2

依需求調整腳本「最上方的 USER CONFIG」。

Step 3

執行:

python epub_convfix.py

Step 4

處理完成後,你會在 OUTPUT_FOLDER 找到修復後的檔案。

輸出的檔名會加上後綴:

OUTPUT_SUFFIX = "_tw_fixed"

例如:

MyBook.epub → MyBook_tw_fixed.epub

5. 常見情境建議設定

若你只想修結構、路徑、封面,不碰內容:

ENABLE_CONVERSION = False REPAIR_MODE = 'safe'

若你要大量 EPUB 清理與修正(推薦):

ENABLE_CONVERSION = True REPAIR_MODE = 'standard'

若你一定要讓 EPUBCHECK 過關:

REPAIR_MODE = 'strict'

6. 執行結果檢視

腳本最後會顯示一份摘要,包括:

  • 修復了哪些項目

  • 哪些文件跳過(如 DRM)

  • 有無轉換錯誤

  • resource mapping、死連結、invalid id、缺失圖片等修復的次數

你不需要解讀技術細節,只要看最後顯示是否發生嚴重錯誤。