Avoid clothing cues for nude mode
This commit is contained in:
+18
-4
@@ -375,6 +375,15 @@ def _natural_clothing_state(text: Any) -> str:
|
||||
if not text:
|
||||
return ""
|
||||
text = re.sub(r"^Clothing state:\s*", "", text, flags=re.IGNORECASE)
|
||||
body_exposure = re.match(r"^Body exposure:\s*(.*?)\.?$", text, flags=re.IGNORECASE)
|
||||
if body_exposure:
|
||||
return _clean(body_exposure.group(1)).rstrip(".")
|
||||
if re.search(r"\bfully nude\b|\bbody is fully exposed\b|\bno clothing covering\b", text, flags=re.IGNORECASE):
|
||||
owner = "the woman"
|
||||
owner_match = re.match(r"^\s*((?:Woman|Man) [A-Z])\b", text)
|
||||
if owner_match:
|
||||
owner = _natural_label_text(owner_match.group(1), ["Woman A", "Man A"]) or owner
|
||||
return f"{owner.capitalize()}'s body is fully exposed, bare skin unobstructed"
|
||||
match = re.match(
|
||||
r"^(.*?)\b(?:softcore|teaser) outfit is (.*?)(?: for the (?:hardcore|sex) scene)?;\s*(?:softcore visual reference|teaser outfit detail):\s*(.*?)\.?$",
|
||||
text,
|
||||
@@ -384,10 +393,10 @@ def _natural_clothing_state(text: Any) -> str:
|
||||
owner = _natural_label_text(match.group(1).strip(" 's"), ["Woman A", "Man A"]).strip() or "the woman"
|
||||
state = _clean(match.group(2)).lower()
|
||||
outfit = _clean(match.group(3)).rstrip(".")
|
||||
if "fully nude" in state:
|
||||
return f"{owner.capitalize()} is fully nude, with the removed {outfit} visible nearby"
|
||||
if "fully nude" in state or "fully exposed" in state or "no clothing covering" in state:
|
||||
return f"{owner.capitalize()}'s body is fully exposed, bare skin unobstructed"
|
||||
if "nude-adjacent" in state:
|
||||
return f"{owner.capitalize()} is partly nude, with the {outfit} slipping off and no abstract clothing-reference wording"
|
||||
return f"{owner.capitalize()}'s body is partly exposed"
|
||||
if "partially removed" in state or "pushed aside" in state:
|
||||
return f"{owner.capitalize()}'s {outfit} is pushed aside and partly removed, exposing the sexual contact clearly"
|
||||
if "keeps" in state:
|
||||
@@ -1589,6 +1598,11 @@ def _insta_pair_to_krea(row: dict[str, Any], detail_level: str, style_mode: str)
|
||||
hard_expression_source,
|
||||
hard_labels,
|
||||
)
|
||||
soft_item = _clean(soft.get("item"))
|
||||
soft_item_label = _clean(soft.get("softcore_item_prompt_label"))
|
||||
soft_item_phrase = ""
|
||||
if soft_item:
|
||||
soft_item_phrase = f"body exposure: {soft_item}" if soft_item_label == "Body exposure" else f"wearing {soft_item}"
|
||||
|
||||
soft_parts = [
|
||||
soft_cast_prose,
|
||||
@@ -1596,7 +1610,7 @@ def _insta_pair_to_krea(row: dict[str, Any], detail_level: str, style_mode: str)
|
||||
partner_outfit_text,
|
||||
partner_pose,
|
||||
_pov_camera_phrase(pov_labels, softcore=True) if same_soft_cast else "",
|
||||
f"wearing {soft.get('item')}" if soft.get("item") else "",
|
||||
soft_item_phrase,
|
||||
f"{soft.get('pose')}" if soft.get("pose") else "",
|
||||
_expression_phrase(soft_expression),
|
||||
f"in {soft.get('scene_text')}" if soft.get("scene_text") else "",
|
||||
|
||||
Reference in New Issue
Block a user