feat: Added support for Anime Style [WAN 2.2 I2V] #1
This commit is contained in:
@@ -222,6 +222,27 @@ async def _upload_asset_to_comfy(db: Session, asset_id: Optional[str]) -> Option
|
||||
)
|
||||
|
||||
|
||||
def _apply_model_preset(prompt: str, negative_prompt: str, model_preset: Optional[str]) -> tuple[str, str]:
|
||||
if model_preset != "wan22-a14b-anime-style":
|
||||
return prompt, negative_prompt
|
||||
|
||||
positive = prompt
|
||||
negative = negative_prompt
|
||||
|
||||
if "An1meStyl3" not in positive:
|
||||
positive = f"An1meStyl3, AnimeStyle, {positive}".strip(", ")
|
||||
elif "AnimeStyle" not in positive:
|
||||
positive = f"AnimeStyle, {positive}".strip(", ")
|
||||
|
||||
anime_negative = "(((realistic))), ((photograph))"
|
||||
if "realistic" not in negative.lower():
|
||||
negative = f"{negative}, {anime_negative}".strip(", ")
|
||||
elif "photograph" not in negative.lower():
|
||||
negative = f"{negative}, ((photograph))".strip(", ")
|
||||
|
||||
return positive, negative
|
||||
|
||||
|
||||
def _validate_job(job: Job) -> list[str]:
|
||||
errors = []
|
||||
if not job.prompt or not job.prompt.strip():
|
||||
@@ -265,18 +286,25 @@ async def run_job(job_id: str) -> None:
|
||||
ref_names.append(uploaded)
|
||||
|
||||
settings_dict = json.loads(job.settings_json) if job.settings_json else {}
|
||||
binder = WorkflowBinder(select_template_name(job.mode, job.submode))
|
||||
model_preset = settings_dict.get("model_preset")
|
||||
template_name = select_template_name(job.mode, job.submode, model_preset)
|
||||
binder = WorkflowBinder(template_name)
|
||||
if "PLACEHOLDER" in binder.status.upper():
|
||||
raise RuntimeError(
|
||||
f"Workflow template '{select_template_name(job.mode, job.submode)}' is still a placeholder. "
|
||||
f"Workflow template '{template_name}' is still a placeholder. "
|
||||
"Replace it with the production ComfyUI export before running real generations."
|
||||
)
|
||||
raw_seed = settings_dict.get("seed", 0)
|
||||
seed = raw_seed if isinstance(raw_seed, int) and raw_seed >= 0 else 0
|
||||
positive_prompt, negative_prompt = _apply_model_preset(
|
||||
job.prompt,
|
||||
job.negative_prompt or "",
|
||||
model_preset,
|
||||
)
|
||||
|
||||
params = {
|
||||
"positive_prompt": job.prompt,
|
||||
"negative_prompt": job.negative_prompt or "",
|
||||
"positive_prompt": positive_prompt,
|
||||
"negative_prompt": negative_prompt,
|
||||
"ground_truth": gt_name,
|
||||
"motion_video": motion_name,
|
||||
"audio": audio_name,
|
||||
@@ -288,7 +316,7 @@ async def run_job(job_id: str) -> None:
|
||||
}
|
||||
workflow = binder.bind(params)
|
||||
await _validate_runtime_models(workflow)
|
||||
job.workflow_template_name = select_template_name(job.mode, job.submode)
|
||||
job.workflow_template_name = template_name
|
||||
job.workflow_template_version = binder.version
|
||||
db.commit()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user