From c01d1d52e0835d500efa870e346afef3a276ef6d Mon Sep 17 00:00:00 2001 From: Ethanfel Date: Thu, 25 Jun 2026 18:50:08 +0200 Subject: [PATCH] Improve POV rear-entry wording --- krea_formatter.py | 40 +++++++++++++++++++++++++++++++++------- 1 file changed, 33 insertions(+), 7 deletions(-) diff --git a/krea_formatter.py b/krea_formatter.py index b8159e7..7cfe3a6 100644 --- a/krea_formatter.py +++ b/krea_formatter.py @@ -403,7 +403,7 @@ def _pov_contact_clause( "thrusts into her ass", ) ) - contact = "as his penis thrusts into her ass" if is_anal else "as his penis thrusts into her" + contact = "as his penis penetrates her ass" if is_anal else "as his penis penetrates her pussy" if _is_toy_assisted_double_text(action, role_graph, hard_item, _axis_values_text(axis_values)): contact = f"{contact} while a toy is positioned at the second penetration point" return contact @@ -435,6 +435,25 @@ def _pov_clean_detail(detail: Any, context: str, detail_density: str) -> str: detail, flags=re.IGNORECASE, ) + detail = re.sub( + r",?\s*\bthe viewer is behind her at hip level with (?:his|the viewer's) hands on her hips in the foreground as (?:his|the viewer's) penis (?:thrusts into her|penetrates her pussy)\b", + "", + detail, + flags=re.IGNORECASE, + ) + detail = re.sub( + r",?\s*\bthe woman is on all fours directly in front of the viewer with hips raised and back arched\b", + "", + detail, + flags=re.IGNORECASE, + ) + if any(token in context for token in ("ass raised", "on all fours", "doggy", "rear-entry", "bent-over", "face-down")): + detail = re.sub( + r",?\s*\b(?:one body pinned under another|bodies stacked close together|bodies tangled on the sheets)\b", + "", + detail, + flags=re.IGNORECASE, + ) if "toy is positioned at the second penetration point" in context: detail = re.sub( r",?\s*\b(?:toy aligned for a second penetration point|toy-assisted second contact aligned behind the body)\b", @@ -557,18 +576,18 @@ def _pov_hardcore_pose_sentence( ) if "face-down" in context or "face down" in context: return sentence( - "POV face-down rear-entry position: the woman lies face-down in front of the viewer with ass raised toward him; " - f"the viewer is behind her at hip level with foreground hands on her hips {contact}" + "The woman is seen from behind with her ass raised toward the POV viewer, lying face-down with hips lifted; " + f"the viewer looks down at her raised ass with foreground hands on her hips {contact}" ) if "bent-over" in context or "bent over" in context or "bent forward" in context: return sentence( - "POV bent-over rear-entry position: the woman bends forward at the waist in front of the viewer with hips raised and head turned back; " - f"the viewer stands behind her at hip level {contact}" + "The woman is seen from behind with her ass raised toward the POV viewer, bent forward at the waist with hips lifted and head turned back; " + f"the viewer looks down at her raised ass from behind with foreground hands near her hips {contact}" ) if "doggy" in context or "all fours" in context or "rear-entry" in context: return sentence( - "POV doggy position: the woman is on all fours directly in front of the viewer with hips raised and back arched; " - f"the viewer is behind her at hip level with his hands on her hips in the foreground {contact}" + "The woman is seen from behind with her ass raised toward the POV viewer, on all fours directly in front of him with hips high and back arched; " + f"the viewer looks down at her raised ass with his hands on her hips in the foreground {contact}" ) if "standing" in context: return sentence( @@ -2012,6 +2031,13 @@ def _composition_phrase( return ( f"{prefix} close first-person underview with the woman's thighs framing the camera and the oral contact centered" ) + if "pov viewer" in action_lower and any( + token in action_lower + for token in ("ass raised", "seen from behind", "on all fours", "bent forward", "face-down") + ): + return ( + f"{prefix} first-person rear-view frame looking down at the woman's raised ass, with foreground hands and rear-entry contact readable" + ) oral_pose_tokens = ( "kneeling oral", "side-lying oral",