mirror of
https://github.com/linyqh/NarratoAI.git
synced 2026-05-01 14:18:19 +00:00
35 lines
1.4 KiB
Python
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,
|
|
)
|