From 63aad302f43bc0d36943c4e2066d64b8dacc789f Mon Sep 17 00:00:00 2001 From: Ethanfel Date: Wed, 24 Jun 2026 22:37:09 +0200 Subject: [PATCH] Remove toy-assisted double prompts from mixed couples --- categories/sexual_poses.json | 15 --------------- prompt_builder.py | 32 +++++++++++++++++++++++++++----- 2 files changed, 27 insertions(+), 20 deletions(-) diff --git a/categories/sexual_poses.json b/categories/sexual_poses.json index 1ed8bc1..d035594 100644 --- a/categories/sexual_poses.json +++ b/categories/sexual_poses.json @@ -461,11 +461,6 @@ "min_people": 2, "max_people": 2 }, - { - "text": "toy-assisted second contact aligned behind the body", - "min_people": 2, - "max_people": 2 - }, { "text": "stacked bodies in close contact", "min_people": 3 @@ -518,16 +513,6 @@ "cast": "women_only", "min_people": 2 }, - { - "text": "penis and toy double penetration", - "cast": "mixed", - "min_people": 2 - }, - { - "text": "toy-assisted vaginal and anal penetration at the same time", - "cast": "mixed", - "min_people": 2 - }, { "text": "double anal penetration between men", "cast": "men_only", diff --git a/prompt_builder.py b/prompt_builder.py index c37239e..1f21cd8 100644 --- a/prompt_builder.py +++ b/prompt_builder.py @@ -575,11 +575,33 @@ def _cast_requirement_matches(requirement: str, women_count: int, men_count: int return True +def _is_toy_assisted_double_couple_text(text: str) -> bool: + text = text.lower() + if "toy" not in text: + return False + return any( + token in text + for token in ( + "double penetration", + "double-penetration", + "vaginal and anal penetration", + "second penetration point", + "second point of contact", + "second contact", + ) + ) + + def _heuristic_cast_compatible(text: str, women_count: int, men_count: int) -> bool: text = text.lower() if not text: return True total = women_count + men_count + if total == 2 and women_count == 1 and men_count == 1: + if "{double_act}" in text: + return False + if _is_toy_assisted_double_couple_text(text): + return False if total == 1: solo_blocked_terms = ( "partner", @@ -3791,15 +3813,15 @@ def _role_graph( graph = f"{man} thrusts his penis into {woman} while {third} adds a second penetration point from the front." else: if "bent-over" in item_text or "bent over" in item_text: - graph = f"{woman} is bent forward with hips raised while {man} is positioned behind her; {man}'s penis thrusts into {woman} while a toy is positioned at the second penetration point." + graph = f"{woman} is bent forward with hips raised while {man} is positioned behind her and thrusts his penis into her ass." elif "face-down" in item_text: - graph = f"{woman} lies face-down with hips raised while {man} is positioned behind her; {man}'s penis thrusts into {woman} while a toy is positioned at the second penetration point." + graph = f"{woman} lies face-down with hips raised while {man} is positioned behind her and thrusts his penis into her ass." elif "standing" in item_text: - graph = f"{woman} stands braced with hips raised while {man} is positioned behind her; {man}'s penis thrusts into {woman} while a toy is positioned at the second penetration point." + graph = f"{woman} stands braced with hips raised while {man} is positioned behind her and thrusts his penis into her ass." elif "kneeling" in item_text: - graph = f"{woman} kneels forward with hips raised while {man} is positioned behind her; {man}'s penis thrusts into {woman} while a toy is positioned at the second penetration point." + graph = f"{woman} kneels forward with hips raised while {man} is positioned behind her and thrusts his penis into her ass." else: - graph = f"{woman} is on all fours with hips raised while {man} is positioned behind her; {man}'s penis thrusts into {woman} while a toy is positioned at the second penetration point." + graph = f"{woman} is on all fours with hips raised while {man} is positioned behind her and thrusts his penis into her ass." elif people_count >= 3: graph = f"{man} thrusts his penis into {woman} while {third} gives oral contact from the front." else: