feat: Add original text preservation in chunking and export processes

This commit is contained in:
JB
2025-10-15 05:41:51 -07:00
parent 6ae8b827d2
commit 0a6d09445d
4 changed files with 22 additions and 2 deletions
+10 -2
View File
@@ -243,7 +243,7 @@ class EPUB3PackageBuilder:
voice = marker.get("voice")
else:
display_text = chunk_entry.get("display_text")
text = str(display_text or chunk_entry.get("text") or "")
text = str(chunk_entry.get("text") or "")
speaker_id = str(chunk_entry.get("speaker_id") or marker.get("speaker_id") or "narrator")
voice = chunk_entry.get("voice") or chunk_entry.get("resolved_voice") or marker.get("voice")
level = chunk_entry.get("level") or None
@@ -261,11 +261,15 @@ class EPUB3PackageBuilder:
group_id = _derive_group_id(raw_group_key, level)
normalized_group_id = _normalize_chunk_id(group_id) if group_id else None
original_text = None
if chunk_entry is not None:
original_text = chunk_entry.get("original_text") or chunk_entry.get("display_text")
overlays.append(
ChunkOverlay(
id=normalized_id,
text=text or self.extraction.chapters[chapter_index].text,
original_text=None,
original_text=str(original_text) if original_text is not None else None,
start=_safe_float(marker.get("start")),
end=_safe_float(marker.get("end")),
speaker_id=speaker_id,
@@ -747,6 +751,10 @@ def _restore_original_chunk_text(chapter_text: str, overlays: List[ChunkOverlay]
cursor = 0
for chunk in overlays:
if chunk.original_text is not None:
prepared = _prepare_display_text(chunk.original_text)
chunk.text = prepared
continue
candidate = chunk.text or ""
if not candidate:
continue