mirror of
https://github.com/JefferyHcool/BiliNote.git
synced 2026-06-07 16:50:06 +08:00
🐞 fix: 增加错误之后对已解析段落的缓存功能,再次重试时不再重头开始
解析长视频时,当附件大小过大时不再调用后进行报错,而是将附件进行分批次发送 在每篇笔记开头默认增加地址来源链接,对模糊处可溯源
This commit is contained in:
@@ -15,6 +15,7 @@ from app.enmus.exception import NoteErrorEnum
|
||||
from app.enmus.note_enums import DownloadQuality
|
||||
from app.exceptions.note import NoteError
|
||||
from app.services.note import NoteGenerator, logger
|
||||
from app.services.task_serial_executor import task_serial_executor
|
||||
from app.utils.response import ResponseWrapper as R
|
||||
from app.utils.url_parser import extract_video_id
|
||||
from app.validators.video_url_validator import is_supported_video_url
|
||||
@@ -82,22 +83,26 @@ def run_note_task(task_id: str, video_url: str, platform: str, quality: Download
|
||||
if not model_name or not provider_id:
|
||||
raise HTTPException(status_code=400, detail="请选择模型和提供者")
|
||||
|
||||
note = NoteGenerator().generate(
|
||||
video_url=video_url,
|
||||
platform=platform,
|
||||
quality=quality,
|
||||
task_id=task_id,
|
||||
model_name=model_name,
|
||||
provider_id=provider_id,
|
||||
link=link,
|
||||
_format=_format,
|
||||
style=style,
|
||||
extras=extras,
|
||||
screenshot=screenshot
|
||||
, video_understanding=video_understanding,
|
||||
video_interval=video_interval,
|
||||
grid_size=grid_size
|
||||
)
|
||||
def _execute_note_task():
|
||||
return NoteGenerator().generate(
|
||||
video_url=video_url,
|
||||
platform=platform,
|
||||
quality=quality,
|
||||
task_id=task_id,
|
||||
model_name=model_name,
|
||||
provider_id=provider_id,
|
||||
link=link,
|
||||
_format=_format,
|
||||
style=style,
|
||||
extras=extras,
|
||||
screenshot=screenshot,
|
||||
video_understanding=video_understanding,
|
||||
video_interval=video_interval,
|
||||
grid_size=grid_size,
|
||||
)
|
||||
|
||||
logger.info(f"任务进入串行队列,等待执行 (task_id={task_id})")
|
||||
note = task_serial_executor.run(_execute_note_task)
|
||||
logger.info(f"Note generated: {task_id}")
|
||||
if not note or not note.markdown:
|
||||
logger.warning(f"任务 {task_id} 执行失败,跳过保存")
|
||||
@@ -144,13 +149,14 @@ def generate_note(data: VideoRequest, background_tasks: BackgroundTasks):
|
||||
if data.task_id:
|
||||
# 如果传了task_id,说明是重试!
|
||||
task_id = data.task_id
|
||||
# 更新之前的状态
|
||||
NoteGenerator()._update_status(task_id, TaskStatus.PENDING)
|
||||
logger.info(f"重试模式,复用已有 task_id={task_id}")
|
||||
else:
|
||||
# 正常新建任务
|
||||
task_id = str(uuid.uuid4())
|
||||
|
||||
# 统一先写入 PENDING,表示已进入队列等待串行执行
|
||||
NoteGenerator()._update_status(task_id, TaskStatus.PENDING)
|
||||
|
||||
background_tasks.add_task(run_note_task, task_id, data.video_url, data.platform, data.quality, data.link,
|
||||
data.screenshot, data.model_name, data.provider_id, data.format, data.style,
|
||||
data.extras, data.video_understanding, data.video_interval, data.grid_size)
|
||||
|
||||
Reference in New Issue
Block a user