mirror of
https://github.com/denizsafak/abogen.git
synced 2026-07-22 07:10:28 +02:00
refactor: extract extract_metadata_for_file() domain function, delete PyQt wrapper
domain/metadata_extraction.py gains extract_metadata_for_file() combining read_text_for_metadata + extract_metadata_from_text. PyQt _extract_metadata_dict deleted, calls replaced with domain function. Tests: 1253 passed
This commit is contained in:
@@ -195,6 +195,28 @@ def read_text_for_metadata(
|
||||
return ""
|
||||
|
||||
|
||||
def extract_metadata_for_file(
|
||||
file_path: str,
|
||||
is_direct_text: bool = False,
|
||||
) -> Dict[str, Optional[str]]:
|
||||
"""Extract metadata dict from a file or direct text.
|
||||
|
||||
Convenience function combining read_text_for_metadata + extract_metadata_from_text.
|
||||
Returns empty dict on any error.
|
||||
"""
|
||||
try:
|
||||
text = read_text_for_metadata(
|
||||
file_path=file_path,
|
||||
is_direct_text=is_direct_text,
|
||||
direct_text=file_path if is_direct_text else None,
|
||||
)
|
||||
if text:
|
||||
return extract_metadata_from_text(text) or {}
|
||||
except Exception:
|
||||
pass
|
||||
return {}
|
||||
|
||||
|
||||
def format_metadata_tags(
|
||||
metadata: Dict[str, Any],
|
||||
filename: str,
|
||||
|
||||
@@ -55,8 +55,7 @@ from abogen.domain.pronunciation import (
|
||||
)
|
||||
from abogen.domain.metadata_extraction import (
|
||||
extract_metadata_and_build_args,
|
||||
extract_metadata_from_text,
|
||||
read_text_for_metadata,
|
||||
extract_metadata_for_file,
|
||||
)
|
||||
from abogen.domain.text_chapters import parse_chapters_from_text
|
||||
from abogen.infrastructure.exporters import ExportService
|
||||
@@ -67,22 +66,6 @@ import subprocess
|
||||
|
||||
|
||||
|
||||
def _extract_metadata_dict(file_name: str, is_direct_text: bool) -> dict:
|
||||
"""Extract metadata dict from file for intro/outro text building."""
|
||||
try:
|
||||
from abogen.domain.metadata_extraction import read_text_for_metadata, extract_metadata_from_text
|
||||
text = read_text_for_metadata(
|
||||
file_path=file_name,
|
||||
is_direct_text=is_direct_text,
|
||||
direct_text=file_name if is_direct_text else None,
|
||||
)
|
||||
if text:
|
||||
return extract_metadata_from_text(text) or {}
|
||||
except Exception:
|
||||
pass
|
||||
return {}
|
||||
|
||||
|
||||
# Configuration constants
|
||||
_USER_RESPONSE_TIMEOUT = (
|
||||
0.1 # Timeout in seconds for checking user response/cancellation
|
||||
@@ -776,7 +759,7 @@ class ConversionThread(QThread):
|
||||
intro_emitted = False
|
||||
if merge_chapters_at_end:
|
||||
intro_spec = resolve_intro(
|
||||
_extract_metadata_dict(self.file_name, self.is_direct_text),
|
||||
extract_metadata_for_file(self.file_name, self.is_direct_text),
|
||||
os.path.basename(self.file_name) if self.file_name else "",
|
||||
getattr(self, "read_title_intro", False),
|
||||
self.voice, self.voice, list(self.voice_cache._cache.keys()),
|
||||
@@ -1101,7 +1084,7 @@ class ConversionThread(QThread):
|
||||
# --- Outro synthesis ---
|
||||
if merge_chapters_at_end:
|
||||
outro_spec = resolve_outro(
|
||||
_extract_metadata_dict(self.file_name, self.is_direct_text),
|
||||
extract_metadata_for_file(self.file_name, self.is_direct_text),
|
||||
os.path.basename(self.file_name) if self.file_name else "",
|
||||
getattr(self, "read_closing_outro", True),
|
||||
self.voice, self.voice, list(self.voice_cache._cache.keys()),
|
||||
|
||||
Reference in New Issue
Block a user