Tighten hardcore Krea action wording

This commit is contained in:
2026-06-24 16:00:01 +02:00
parent 81d9b20db7
commit 8589035a07
4 changed files with 215 additions and 70 deletions
+24 -24
View File
@@ -551,7 +551,7 @@ def _heuristic_cast_compatible(text: str, women_count: int, men_count: int) -> b
"double penetration" in text
or "two partners penetrating" in text
or "front-and-back penetration" in text
or "one cock in pussy and one cock in ass" in text
or "one penis in pussy and one penis in ass" in text
or "pussy and ass filled" in text
or "vaginal and anal penetration at the same time" in text
or "front-and-back double penetration" in text
@@ -582,9 +582,9 @@ def _heuristic_cast_compatible(text: str, women_count: int, men_count: int) -> b
if any(term in text for term in penetration_terms) and not any(term in text for term in toy_terms):
return False
male_terms = (
" cock",
"cock ",
"cocks",
" penis",
"penis ",
"penises",
"cum",
"creampie",
"facial",
@@ -596,7 +596,7 @@ def _heuristic_cast_compatible(text: str, women_count: int, men_count: int) -> b
)
if any(term in text for term in male_terms) and not any(term in text for term in toy_terms):
return False
elif men_count < 2 and "cocks" in text:
elif men_count < 2 and "penises" in text:
return False
if women_count == 0:
if "penetrative sex" in text and not any(term in text for term in ("anal", "ass", "male/male", "men")):
@@ -2484,7 +2484,7 @@ def _role_graph(
return f"{solo} is shown in a solo explicit climax pose with thighs open, one hand on her body, and visible arousal on skin and sheets."
return f"{solo} is shown in a solo explicit adult pose with self-touch, open body framing, and direct camera awareness."
if "cumshot" in slug or "climax" in slug:
return f"{solo} is shown in a solo explicit climax pose with one hand on his cock, body angled toward the camera, and visible ejaculation detail."
return f"{solo} is shown in a solo explicit climax pose with one hand on his penis, body angled toward the camera, and visible ejaculation detail."
return f"{solo} is shown in a solo explicit adult pose with direct camera awareness and clear body framing."
if women_count > 0 and men_count == 0:
@@ -2510,7 +2510,7 @@ def _role_graph(
c = any_man({a, b}) if len(men) >= 3 else ""
used = {a, b}
if "oral" in slug:
graph = f"{a} kneels and takes {b}'s cock in his mouth while holding his hips."
graph = f"{a} kneels and takes {b}'s penis in his mouth while holding his hips."
elif "anal" in slug or "double" in slug or "penetrative" in slug:
graph = f"{a} penetrates {b} anally while {b}'s hips are held open."
elif "threesome" in slug or "group" in slug or "orgy" in slug:
@@ -2518,9 +2518,9 @@ def _role_graph(
graph = f"{a} penetrates {b} anally while {helper} gives oral contact from the front."
used.add(helper)
elif "cumshot" in slug or "climax" in slug:
graph = f"{a} climaxes over {b}'s body while {b} keeps eye contact and one hand on his cock."
graph = f"{a} climaxes over {b}'s body while {b} keeps eye contact and one hand on his penis."
else:
graph = f"{a} and {b} keep explicit cock and anal contact visible."
graph = f"{a} and {b} keep explicit penis and anal contact visible."
return graph + support_sentence(used)
# Mixed cast.
@@ -2529,29 +2529,29 @@ def _role_graph(
third = any_person({woman, man}) if people_count >= 3 else ""
if "oral" in slug:
if "sixty-nine" in item_text or ("blowjob" in item_text and ("cunnilingus" in item_text or "pussy" in item_text)):
graph = f"{woman} and {man} are in mutual oral contact with mouth-to-genital contact visible."
graph = f"{woman} has {man}'s penis in her mouth while {man} uses his mouth on {woman}'s pussy, with both mouths pressed to genitals."
elif any(term in item_text for term in ("cunnilingus", "pussy licking", "tongue on pussy", "mouth on pussy")):
graph = f"{man} gives oral to {woman} while {woman}'s thighs are held open for the camera."
graph = f"{man} gives oral to {woman}, mouth on her pussy while {woman}'s thighs are held open for the camera."
else:
graph = f"{woman} gives oral to {man} while {man} holds her hair and hips."
graph = f"{woman} takes {man}'s penis in her mouth while {man} holds her hair and hips."
elif "anal" in slug or "double" in slug:
if "double" in item_text or "toy" in item_text:
if people_count >= 3:
graph = f"{man} penetrates {woman} while {third} adds a second point of contact from the front."
graph = f"{man} thrusts his penis into {woman} while {third} adds a second penetration point from the front."
else:
graph = f"{man} penetrates {woman} while a toy adds a second point of contact."
graph = f"{man} thrusts his penis into {woman} while a toy adds a second penetration point."
elif people_count >= 3:
graph = f"{man} penetrates {woman} while {third} gives oral contact from the front."
graph = f"{man} thrusts his penis into {woman} while {third} gives oral contact from the front."
else:
graph = f"{man} penetrates {woman} anally while keeping her hips held open."
graph = f"{man} thrusts his penis into {woman}'s ass while keeping her hips held open."
elif "threesome" in slug:
graph = f"{man} penetrates {woman} while {third or any_person({woman, man})} uses mouth or hands on the exposed body."
graph = f"{man} thrusts his penis into {woman} while {third or any_person({woman, man})} uses mouth or hands on the exposed body."
elif "group" in slug or "orgy" in slug:
graph = f"{man} penetrates {woman} while surrounding partners give oral contact and keep hands on hips, breasts, and thighs."
graph = f"{man} thrusts his penis into {woman} while surrounding partners give oral contact and keep hands on hips, breasts, and thighs."
elif "cumshot" in slug or "climax" in slug:
graph = f"{man} climaxes on {woman}'s body while {woman} stays posed with thighs open and direct eye contact."
else:
graph = f"{man} and {woman} keep penetration and body contact visible."
graph = f"{man}'s penis thrusts into {woman} with penetration and body contact visible."
return graph + support_sentence({woman, man, third} if third else {woman, man})
@@ -3251,10 +3251,10 @@ INSTA_OF_PLATFORM_STYLES = {
INSTA_OF_HARDCORE_CLOTHING_CONTINUITY = {
"none": "",
"same_outfit": "Woman A keeps the softcore outfit in the hardcore scene",
"partially_removed": "Woman A's softcore outfit is partially removed or pushed aside for the hardcore scene",
"implied_nude": "Woman A is nude-adjacent in the hardcore scene, with the softcore outfit slipping off or covering only part of the body",
"explicit_nude": "Woman A is fully nude in the hardcore scene, with the removed softcore outfit visible nearby",
"same_outfit": "Woman A keeps her teaser outfit on, with sexual contact still clearly visible",
"partially_removed": "Woman A's teaser outfit is pushed aside and partly removed, exposing the sexual contact clearly",
"implied_nude": "Woman A is partly nude, with the teaser outfit slipping off or covering only part of the body",
"explicit_nude": "Woman A is fully nude, with the removed teaser outfit visible nearby",
}
INSTA_OF_NEGATIVE = (
@@ -3609,7 +3609,7 @@ def _insta_of_hardcore_clothing_state(mode: str, softcore_outfit: str) -> str:
if mode == "none" or not outfit:
return ""
base = INSTA_OF_HARDCORE_CLOTHING_CONTINUITY[mode]
return f"Clothing state: {base}; softcore visual reference: {outfit}."
return f"Clothing state: {base}; teaser outfit detail: {outfit}."
def _insta_of_partner_styling(