INNER CODE UNIT · Python
chat_with_video
liyupi/free-video-downloader · backend/api_summarize.py:128
async def chat_with_video(req: ChatRequest, user: dict | None = Depends(get_optional_user)) -> AsyncIterable[ServerSentEvent]:
"""AI 视频问答(SSE 流式)"""
try:
if not req.subtitle_text.strip():
loop = asyncio.get_event_loop()
extractor = _get_extractor()
subtitle_data = await loop.run_in_executor(
None, extractor.extract, req.url
)
if not subtitle_data["has_subtitle"]:
yield ServerSentEvent(
raw_data=json.dumps({"message": "该视频没有可用的字幕,无法回答问题"}, ensure_ascii=False),
event="error",
)
return
subtitle_text = subtitle_data["full_text"]
else:
subtitle_text = req.subtitle_text