NarratoAI/app/services/script_service.py

35 lines
1.4 KiB
Python

from typing import Any, Callable
from app.services.documentary.frame_analysis_service import DocumentaryFrameAnalysisService
class ScriptGenerator:
def __init__(self, documentary_service: DocumentaryFrameAnalysisService | None = None):
self.documentary_service = documentary_service or DocumentaryFrameAnalysisService()
async def generate_script(
self,
video_path: str,
video_theme: str = "",
custom_prompt: str = "",
frame_interval_input: int = 5,
skip_seconds: int = 0,
threshold: int = 30,
vision_batch_size: int = 5,
vision_llm_provider: str = "gemini",
progress_callback: Callable[[float, str], None] | None = None,
) -> list[dict[Any, Any]]:
callback = progress_callback or (lambda _p, _m: None)
return await self.documentary_service.generate_documentary_script(
video_path=video_path,
video_theme=video_theme,
custom_prompt=custom_prompt,
frame_interval_input=frame_interval_input,
vision_batch_size=vision_batch_size,
vision_llm_provider=vision_llm_provider,
progress_callback=callback,
# 历史参数保留在签名中以兼容调用方;共享逐帧分析当前不使用这两个参数。
# skip_seconds=skip_seconds,
# threshold=threshold,
)