Fix exact Krea2 POV oral routing

This commit is contained in:
2026-06-30 20:35:00 +02:00
parent 5f4dd7d77f
commit 3832044256
8 changed files with 182 additions and 12 deletions
+27
View File
@@ -8,6 +8,9 @@ except ImportError: # Allows local smoke tests with top-level imports.
import item_axis_policy
SITTING_ORAL_VARIANT = "pov_blowjob_sitting_upright_oral"
def _context_text(item_text: str, item_axis_values: dict[str, Any] | None) -> str:
return item_axis_policy.context_text(item_text, axis_values=item_axis_values)
@@ -46,6 +49,20 @@ def _oral_direction(text: str) -> tuple[bool, bool]:
return woman_gives, man_gives
def _list_values(value: Any) -> list[str]:
if isinstance(value, list):
return [str(item) for item in value if str(item).strip()]
if isinstance(value, str) and value.strip():
return [part.strip().strip("[]'\" ") for part in value.split(",") if part.strip().strip("[]'\" ")]
return []
def _has_krea2_variant(axis_values: dict[str, Any] | None, key: str) -> bool:
if not isinstance(axis_values, dict):
return False
return key in _list_values(axis_values.get("krea2_variant_keys"))
def build_oral_role_graph(
woman: str,
man: str,
@@ -58,6 +75,16 @@ def build_oral_role_graph(
man_is_pov = man in set(pov_labels or [])
woman_gives, man_gives = _oral_direction(text)
if _has_krea2_variant(item_axis_values, SITTING_ORAL_VARIANT):
if man_is_pov:
return (
f"The viewer reclines with open thighs in an upright sitting oral frame while {woman} sits low between his thighs; "
f"{woman}'s face lowers close to the centered shaft tip, her mouth on the viewer's penis, with both hands low at the base."
)
return (
f"{man} reclines with open thighs in an upright sitting oral frame while {woman} sits low between his thighs; "
f"{woman}'s face lowers close to the centered shaft tip, her mouth on his penis, with both hands low at the base."
)
if "sixty-nine" in position_text or ("sixty-nine" in text and not position_text):
if man_is_pov:
return (