From 16b3f7d8a8b4e03e5cca10d6a7a9cb8c644e7dd9 Mon Sep 17 00:00:00 2001 From: Artem Akymenko Date: Tue, 21 Jul 2026 12:00:33 +0000 Subject: [PATCH] fix: clean direct_text in planner + remove redundant if/else - _extract_source_text now applies clean_text() to direct_text (was skipped) - _parse_chapters simplified: identical branches collapsed to single call --- abogen/application/conversion_planner.py | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/abogen/application/conversion_planner.py b/abogen/application/conversion_planner.py index 06b64a4..102b7a4 100644 --- a/abogen/application/conversion_planner.py +++ b/abogen/application/conversion_planner.py @@ -80,11 +80,11 @@ def build_conversion_plan(request: ConversionRequest) -> ConversionPlan: def _extract_source_text(request: ConversionRequest) -> Optional[str]: """Extract text from request source.""" - if request.direct_text: - return request.direct_text - if request.source_path and request.source_path.exists(): - from abogen.subtitle_utils import clean_text + from abogen.subtitle_utils import clean_text + if request.direct_text: + return clean_text(request.direct_text) + if request.source_path and request.source_path.exists(): encoding = "utf-8" try: with open(request.source_path, "r", encoding=encoding, errors="replace") as f: @@ -123,11 +123,8 @@ def _parse_chapters( """ from abogen.domain.text_chapters import parse_chapters_from_text - # For direct text, use the text as-is - if request.direct_text: - chapters = parse_chapters_from_text(source_text, default_title="text", clean=False) - else: - chapters = parse_chapters_from_text(source_text, default_title="text", clean=False) + # Text is already cleaned in _extract_source_text, so clean=False here + chapters = parse_chapters_from_text(source_text, default_title="text", clean=False) # Default voice from request default_voice = request.voice or "M1"