feat: add optional cover generation toggle
This commit is contained in:
@@ -194,6 +194,7 @@ def generate_batch(tasks, prompts, ai_cfg=None, on_progress=None, should_stop=No
|
||||
"retry",
|
||||
"jpg_quality",
|
||||
"resolution",
|
||||
"generate_cover",
|
||||
}
|
||||
}
|
||||
)
|
||||
@@ -206,6 +207,7 @@ def generate_batch(tasks, prompts, ai_cfg=None, on_progress=None, should_stop=No
|
||||
on_error = runtime.get("on_error")
|
||||
title_prompt = _prompt_value(prompts, "title")
|
||||
cover_prompt = _prompt_value(prompts, "cover")
|
||||
generate_cover = bool(generation_cfg.get("generate_cover", False))
|
||||
should_stop = should_stop or (lambda: False)
|
||||
eligible = [
|
||||
task for task in list(tasks)
|
||||
@@ -216,8 +218,11 @@ def generate_batch(tasks, prompts, ai_cfg=None, on_progress=None, should_stop=No
|
||||
"total": len(eligible),
|
||||
"title_done": 0,
|
||||
"cover_done": 0,
|
||||
"cover_total": len(eligible) if generate_cover else 0,
|
||||
"generated_done": 0,
|
||||
"failed": 0,
|
||||
"cancelled": False,
|
||||
"generate_cover": generate_cover,
|
||||
}
|
||||
_emit_generation_progress(on_progress, summary)
|
||||
title_results = {}
|
||||
@@ -281,10 +286,34 @@ def generate_batch(tasks, prompts, ai_cfg=None, on_progress=None, should_stop=No
|
||||
summary["cancelled"] = True
|
||||
_cancel_pending(futures)
|
||||
try:
|
||||
title_results[task.id] = future.result()
|
||||
new_title = future.result()
|
||||
title_results[task.id] = new_title
|
||||
summary["title_done"] += 1
|
||||
set_step(task, "title_done")
|
||||
_emit_generation_event(on_event, task, "title", "title_done", "success")
|
||||
if not generate_cover:
|
||||
set_step(task, "db_write")
|
||||
_emit_generation_event(on_event, task, "title", "db_write", "start")
|
||||
db.set_generated(task.id, new_title, None, path=db_path)
|
||||
summary["generated_done"] += 1
|
||||
if on_task_update is not None:
|
||||
on_task_update(
|
||||
task.id,
|
||||
{
|
||||
"stage": "generated",
|
||||
"status": "success",
|
||||
"new_title": new_title,
|
||||
"new_cover_path": None,
|
||||
},
|
||||
)
|
||||
_emit_generation_event(
|
||||
on_event,
|
||||
task,
|
||||
"title",
|
||||
"db_write",
|
||||
"success",
|
||||
detail="仅生成标题",
|
||||
)
|
||||
except CancelledError:
|
||||
summary["cancelled"] = True
|
||||
_emit_generation_event(on_event, task, "title", get_step(task, "title_request"), "cancelled", level="warning")
|
||||
@@ -297,6 +326,11 @@ def generate_batch(tasks, prompts, ai_cfg=None, on_progress=None, should_stop=No
|
||||
_emit_generation_error(on_error, task, "title", step, exc, error)
|
||||
_emit_generation_progress(on_progress, summary)
|
||||
|
||||
if not generate_cover:
|
||||
if summary["cancelled"]:
|
||||
summary["ok"] = False
|
||||
return summary
|
||||
|
||||
cover_tasks = [
|
||||
task for task in eligible
|
||||
if task.id in title_results
|
||||
@@ -353,6 +387,7 @@ def generate_batch(tasks, prompts, ai_cfg=None, on_progress=None, should_stop=No
|
||||
_emit_generation_event(on_event, task, "cover", "db_write", "start")
|
||||
db.set_generated(task.id, new_title, new_cover_path, path=db_path)
|
||||
summary["cover_done"] += 1
|
||||
summary["generated_done"] += 1
|
||||
if on_task_update is not None:
|
||||
on_task_update(
|
||||
task.id,
|
||||
@@ -413,6 +448,7 @@ def _runtime_config(runtime):
|
||||
"retry",
|
||||
"jpg_quality",
|
||||
"resolution",
|
||||
"generate_cover",
|
||||
"resolution_timeouts",
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user