INNER CODE UNIT · Python
_get_extractor
liyupi/free-video-downloader · backend/api_summarize.py:57
def _get_extractor():
"""延迟初始化 SubtitleExtractor"""
from summarizer import SubtitleExtractor
if not hasattr(_get_extractor, "_instance"):
_get_extractor._instance = SubtitleExtractor()
return _get_extractor._instance
@router.post("/summarize", response_class=EventSourceResponse)
async def summarize_video(req: SummarizeRequest, user: dict | None = Depends(get_optional_user)) -> AsyncIterable[ServerSentEvent]:
"""
AI 视频总结(SSE 流式)
事件类型: subtitle / summary / mindmap / done / error / quota
"""
allowed, remaining, message = _check_summary_permission(user)
if not allowed:
yield ServerSentEvent(
raw_data=json.dumps({"message": message, "need_login": user is None, "need_vip": user is not None}, ensure_ascii=False),