Add profile load overrides
This commit is contained in:
@@ -3054,6 +3054,45 @@ def _empty_profile_result(status: str = "empty") -> dict[str, str]:
|
||||
}
|
||||
|
||||
|
||||
def _apply_character_profile_overrides(
|
||||
profile: dict[str, Any],
|
||||
override_subject_type: str = "",
|
||||
override_age: str = "",
|
||||
override_body: str = "",
|
||||
override_body_phrase: str = "",
|
||||
override_skin: str = "",
|
||||
override_hair: str = "",
|
||||
override_eyes: str = "",
|
||||
override_figure: str = "",
|
||||
override_descriptor_detail: str = "",
|
||||
) -> dict[str, Any]:
|
||||
updated = dict(profile)
|
||||
subject_type = str(override_subject_type or "").strip()
|
||||
if subject_type in ("woman", "man"):
|
||||
updated["subject_type"] = subject_type
|
||||
updated["subject"] = subject_type
|
||||
updated["subject_phrase"] = subject_type
|
||||
for key, value in (
|
||||
("age", override_age),
|
||||
("body", override_body),
|
||||
("body_phrase", override_body_phrase),
|
||||
("skin", override_skin),
|
||||
("hair", override_hair),
|
||||
("eyes", override_eyes),
|
||||
("figure", override_figure),
|
||||
):
|
||||
text = str(value or "").strip()
|
||||
if text:
|
||||
updated[key] = text
|
||||
descriptor_detail = str(override_descriptor_detail or "").strip()
|
||||
if descriptor_detail and descriptor_detail != "keep_profile":
|
||||
updated["descriptor_detail"] = _normalize_descriptor_detail(descriptor_detail)
|
||||
if not str(updated.get("body_phrase") or "").strip():
|
||||
updated["body_phrase"] = _body_phrase(updated.get("body"), updated.get("figure"))
|
||||
updated["descriptor"] = _character_profile_descriptor(updated)
|
||||
return updated
|
||||
|
||||
|
||||
def load_character_profile_json(
|
||||
profile_name: str = "",
|
||||
fallback_profile_json: str | dict[str, Any] | None = "",
|
||||
@@ -3061,6 +3100,15 @@ def load_character_profile_json(
|
||||
delete_now: bool = False,
|
||||
rename_now: bool = False,
|
||||
rename_to: str = "",
|
||||
override_subject_type: str = "",
|
||||
override_age: str = "",
|
||||
override_body: str = "",
|
||||
override_body_phrase: str = "",
|
||||
override_skin: str = "",
|
||||
override_hair: str = "",
|
||||
override_eyes: str = "",
|
||||
override_figure: str = "",
|
||||
override_descriptor_detail: str = "",
|
||||
) -> dict[str, str]:
|
||||
if not enabled:
|
||||
return _empty_profile_result("disabled")
|
||||
@@ -3103,6 +3151,18 @@ def load_character_profile_json(
|
||||
if not raw_profile:
|
||||
return _empty_profile_result("empty")
|
||||
profile = _normalize_character_profile(raw_profile, profile_name or raw_profile.get("profile_name", ""))
|
||||
profile = _apply_character_profile_overrides(
|
||||
profile,
|
||||
override_subject_type=override_subject_type,
|
||||
override_age=override_age,
|
||||
override_body=override_body,
|
||||
override_body_phrase=override_body_phrase,
|
||||
override_skin=override_skin,
|
||||
override_hair=override_hair,
|
||||
override_eyes=override_eyes,
|
||||
override_figure=override_figure,
|
||||
override_descriptor_detail=override_descriptor_detail,
|
||||
)
|
||||
return {
|
||||
"profile_json": json.dumps(profile, ensure_ascii=True, sort_keys=True),
|
||||
"profile_name": profile["profile_name"],
|
||||
|
||||
Reference in New Issue
Block a user