mirror of
https://github.com/denizsafak/abogen.git
synced 2026-09-20 11:40:57 +02:00
feat: m4b finalizer in service (embed_m4b_metadata)
This commit is contained in:
@@ -79,7 +79,9 @@ def run_conversion(
|
|||||||
tts_context=tts_context,
|
tts_context=tts_context,
|
||||||
)
|
)
|
||||||
|
|
||||||
# Stage 4: Finalize
|
# Stage 4: Finalize (m4b metadata embedding)
|
||||||
|
_finalize(request, result, events)
|
||||||
|
|
||||||
events.log("Conversion complete")
|
events.log("Conversion complete")
|
||||||
return result
|
return result
|
||||||
|
|
||||||
@@ -88,6 +90,39 @@ def run_conversion(
|
|||||||
raise
|
raise
|
||||||
|
|
||||||
|
|
||||||
|
def _finalize(
|
||||||
|
request: ConversionRequest,
|
||||||
|
result: ConversionResult,
|
||||||
|
events: ConversionEvents,
|
||||||
|
) -> None:
|
||||||
|
"""Post-conversion finalization (m4b metadata embedding, etc.)."""
|
||||||
|
from abogen.domain.enums import OutputFormat
|
||||||
|
|
||||||
|
if (
|
||||||
|
result.audio_path
|
||||||
|
and request.output_format == OutputFormat.M4B
|
||||||
|
):
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
from abogen.infrastructure.exporters import ExportService
|
||||||
|
|
||||||
|
export_svc = ExportService()
|
||||||
|
cover_path = request.cover_image_path if request.cover_image_path and request.cover_image_path.exists() else None
|
||||||
|
|
||||||
|
try:
|
||||||
|
export_svc.embed_m4b_metadata(
|
||||||
|
audio_path=result.audio_path,
|
||||||
|
metadata=result.metadata or {},
|
||||||
|
chapters=result.chapter_markers or [],
|
||||||
|
cover_path=cover_path,
|
||||||
|
cover_mime=request.cover_image_mime,
|
||||||
|
log_callback=lambda msg, level="info": events.log(msg, level=level),
|
||||||
|
)
|
||||||
|
except Exception as exc:
|
||||||
|
events.log(f"Failed to embed m4b metadata: {exc}", level="error")
|
||||||
|
raise RuntimeError(f"Failed to embed m4b metadata: {exc}") from exc
|
||||||
|
|
||||||
|
|
||||||
def _prepare_tts_context(
|
def _prepare_tts_context(
|
||||||
request: ConversionRequest,
|
request: ConversionRequest,
|
||||||
events: ConversionEvents,
|
events: ConversionEvents,
|
||||||
|
|||||||
Reference in New Issue
Block a user