Improve POV outercourse body cues
This commit is contained in:
@@ -434,6 +434,11 @@
|
|||||||
"hips held steady at contact height",
|
"hips held steady at contact height",
|
||||||
"knees braced close to the body",
|
"knees braced close to the body",
|
||||||
"torso leaning forward into the contact",
|
"torso leaning forward into the contact",
|
||||||
|
"torso folded forward over the pelvis",
|
||||||
|
"shoulders positioned between the open thighs",
|
||||||
|
"head tucked low near the base of the penis",
|
||||||
|
"head low under the penis",
|
||||||
|
"face directly under the penis",
|
||||||
"legs spread enough to keep the contact point visible",
|
"legs spread enough to keep the contact point visible",
|
||||||
"body angle keeps the penis and face readable",
|
"body angle keeps the penis and face readable",
|
||||||
"shoulders relaxed while the contact stays centered",
|
"shoulders relaxed while the contact stays centered",
|
||||||
@@ -467,6 +472,7 @@
|
|||||||
"fingers digging into soft breast flesh",
|
"fingers digging into soft breast flesh",
|
||||||
"one hand guiding the penis",
|
"one hand guiding the penis",
|
||||||
"both hands bracing the thighs",
|
"both hands bracing the thighs",
|
||||||
|
"hands braced on the inner thighs",
|
||||||
"hands holding the ankles in place",
|
"hands holding the ankles in place",
|
||||||
"one hand holding the base of the penis",
|
"one hand holding the base of the penis",
|
||||||
"hands cupping balls close to the mouth",
|
"hands cupping balls close to the mouth",
|
||||||
@@ -492,8 +498,8 @@
|
|||||||
"kneeling boobjob position",
|
"kneeling boobjob position",
|
||||||
"seated titjob position",
|
"seated titjob position",
|
||||||
"tight close-up breast-sex position",
|
"tight close-up breast-sex position",
|
||||||
"kneeling testicle-sucking position",
|
"bent-over testicle-sucking position",
|
||||||
"low-angle balls-licking position",
|
"bent-over balls-licking position",
|
||||||
"kneeling penis-licking position",
|
"kneeling penis-licking position",
|
||||||
"side-profile penis-licking position",
|
"side-profile penis-licking position",
|
||||||
"kneeling handjob position",
|
"kneeling handjob position",
|
||||||
|
|||||||
+19
-10
@@ -474,28 +474,28 @@ def _pov_hardcore_pose_sentence(
|
|||||||
if _is_outercourse_text(context, action_lower):
|
if _is_outercourse_text(context, action_lower):
|
||||||
if any(term in context for term in ("boobjob", "titjob", "breast sex", "breast-sex")):
|
if any(term in context for term in ("boobjob", "titjob", "breast sex", "breast-sex")):
|
||||||
return outercourse_sentence(
|
return outercourse_sentence(
|
||||||
"The woman kneels low between the viewer's thighs, chest directly over his pelvis; "
|
"The woman kneels between the viewer's open thighs with her torso bent forward over his pelvis and shoulders low; "
|
||||||
"both hands press her breasts tightly around the viewer's penis, with the penis shaft vertical in the lower foreground and the glans just below her lips"
|
"both hands lift and press her breasts tightly around the viewer's penis shaft in the lower foreground, with the glans just below her lips"
|
||||||
)
|
)
|
||||||
if any(term in context for term in ("testicle", "balls licking", "balls-licking", "balls and mouth")):
|
if any(term in context for term in ("testicle", "balls licking", "balls-licking", "balls and mouth")):
|
||||||
return outercourse_sentence(
|
return outercourse_sentence(
|
||||||
"The woman kneels very low between the viewer's thighs, face below the penis shaft at testicle height; "
|
"The woman kneels very low between the viewer's open thighs with her torso bent forward and shoulders between his knees; "
|
||||||
"her mouth and tongue contact the viewer's balls while his penis points upward above her forehead in the lower foreground"
|
"her head is tucked under the penis shaft at the base of the penis, mouth and tongue licking the viewer's balls while his penis points upward above her face in the lower foreground"
|
||||||
)
|
)
|
||||||
if any(term in context for term in ("penis licking", "penis-licking", "tongue along", "tongue licking")):
|
if any(term in context for term in ("penis licking", "penis-licking", "tongue along", "tongue licking")):
|
||||||
return outercourse_sentence(
|
return outercourse_sentence(
|
||||||
"The woman kneels close at the viewer's pelvis, face just above his hips; "
|
"The woman bends forward between the viewer's open thighs, head low under the viewer's penis with her face directly under the penis; "
|
||||||
"her tongue runs along the underside of the penis from the penis shaft to the glans while one hand steadies the base of the penis in the lower foreground"
|
"her tongue runs along the underside from the penis shaft to the glans while one hand steadies the base of the penis in the lower foreground"
|
||||||
)
|
)
|
||||||
if any(term in context for term in ("handjob", "hand job", "hand wrapped", "hand stroking", "manual stimulation")):
|
if any(term in context for term in ("handjob", "hand job", "hand wrapped", "hand stroking", "manual stimulation")):
|
||||||
return outercourse_sentence(
|
return outercourse_sentence(
|
||||||
"The woman kneels close at the viewer's pelvis with her face behind the penis shaft; "
|
"The woman kneels between the viewer's open thighs with her torso leaning forward and face visible behind the penis shaft; "
|
||||||
"one hand wraps around the penis shaft and the other steadies the base of the penis as she strokes toward the glans in the lower foreground"
|
"one hand wraps around the penis shaft in the lower foreground while the other hand steadies the base of the penis as she strokes toward the glans"
|
||||||
)
|
)
|
||||||
if any(term in context for term in ("footjob", "soles", "toes curled", "feet stroking")):
|
if any(term in context for term in ("footjob", "soles", "toes curled", "feet stroking")):
|
||||||
return outercourse_sentence(
|
return outercourse_sentence(
|
||||||
"The woman faces the viewer with both legs raised toward the camera; "
|
"The woman faces the viewer with her hips back, torso visible behind her raised legs, and both knees bent open toward the camera; "
|
||||||
"her soles wrap around the penis in the lower foreground, toes curled around the penis shaft with her face visible beyond the contact"
|
"her soles wrap around the penis shaft in the lower foreground, toes curled around the penis shaft with her face visible beyond her feet"
|
||||||
)
|
)
|
||||||
return outercourse_sentence(
|
return outercourse_sentence(
|
||||||
"The woman stays close to the viewer's pelvis, keeping the non-penetrative contact centered in the lower foreground with her face visible behind the contact"
|
"The woman stays close to the viewer's pelvis, keeping the non-penetrative contact centered in the lower foreground with her face visible behind the contact"
|
||||||
@@ -794,17 +794,24 @@ def _is_outercourse_text(*parts: Any) -> bool:
|
|||||||
"breast sex",
|
"breast sex",
|
||||||
"breast-sex",
|
"breast-sex",
|
||||||
"testicle",
|
"testicle",
|
||||||
|
"balls",
|
||||||
"balls licking",
|
"balls licking",
|
||||||
"balls-licking",
|
"balls-licking",
|
||||||
|
"breasts tightly around",
|
||||||
|
"breasts around",
|
||||||
"penis licking",
|
"penis licking",
|
||||||
"penis-licking",
|
"penis-licking",
|
||||||
"tongue along",
|
"tongue along",
|
||||||
|
"tongue runs along",
|
||||||
|
"tongue running along",
|
||||||
"handjob",
|
"handjob",
|
||||||
"hand job",
|
"hand job",
|
||||||
"hand wrapped",
|
"hand wrapped",
|
||||||
"hand stroking",
|
"hand stroking",
|
||||||
|
"hand wraps around",
|
||||||
"manual stimulation",
|
"manual stimulation",
|
||||||
"footjob",
|
"footjob",
|
||||||
|
"soles wrap around",
|
||||||
"soles",
|
"soles",
|
||||||
"toes curled",
|
"toes curled",
|
||||||
"feet stroking",
|
"feet stroking",
|
||||||
@@ -1773,6 +1780,8 @@ def _composition_phrase(
|
|||||||
if composition_oral_tokens and not any(token in action_lower for token in composition_oral_tokens):
|
if composition_oral_tokens and not any(token in action_lower for token in composition_oral_tokens):
|
||||||
match = re.search(r"\bwith\s+(.+)$", composition, flags=re.IGNORECASE)
|
match = re.search(r"\bwith\s+(.+)$", composition, flags=re.IGNORECASE)
|
||||||
return f"framed with {match.group(1)}" if match else ""
|
return f"framed with {match.group(1)}" if match else ""
|
||||||
|
if _is_outercourse_text(action_lower):
|
||||||
|
return f"{prefix} {composition}"
|
||||||
position = _action_position_phrase(action)
|
position = _action_position_phrase(action)
|
||||||
close_or_aftermath = any(
|
close_or_aftermath = any(
|
||||||
token in composition_lower
|
token in composition_lower
|
||||||
|
|||||||
+22
-22
@@ -1062,7 +1062,7 @@ def _outercourse_axis_values_for_position(values: list[Any], position: str, axis
|
|||||||
"hand_detail": ("balls", "base", "thigh"),
|
"hand_detail": ("balls", "base", "thigh"),
|
||||||
"texture_detail": ("wet", "saliva", "skin"),
|
"texture_detail": ("wet", "saliva", "skin"),
|
||||||
"visibility": ("balls", "mouth"),
|
"visibility": ("balls", "mouth"),
|
||||||
"body_contact": ("hips", "knees", "thigh", "lower body"),
|
"body_contact": ("torso", "shoulders", "head tucked", "base of the penis", "knees", "thigh"),
|
||||||
}
|
}
|
||||||
return filtered(by_axis.get(axis_name, ("balls", "mouth", "tongue")))
|
return filtered(by_axis.get(axis_name, ("balls", "mouth", "tongue")))
|
||||||
if "penis-licking" in position_text or "penis licking" in position_text:
|
if "penis-licking" in position_text or "penis licking" in position_text:
|
||||||
@@ -1071,7 +1071,7 @@ def _outercourse_axis_values_for_position(values: list[Any], position: str, axis
|
|||||||
"hand_detail": ("base", "penis", "thigh"),
|
"hand_detail": ("base", "penis", "thigh"),
|
||||||
"texture_detail": ("wet", "saliva", "skin"),
|
"texture_detail": ("wet", "saliva", "skin"),
|
||||||
"visibility": ("tongue", "penis"),
|
"visibility": ("tongue", "penis"),
|
||||||
"body_contact": ("hips", "body angled", "lower body"),
|
"body_contact": ("head low", "face directly", "torso", "pelvis", "base of the penis", "hips", "body angled"),
|
||||||
}
|
}
|
||||||
return filtered(by_axis.get(axis_name, ("tongue", "glans", "shaft")))
|
return filtered(by_axis.get(axis_name, ("tongue", "glans", "shaft")))
|
||||||
if "handjob" in position_text or "hand job" in position_text:
|
if "handjob" in position_text or "hand job" in position_text:
|
||||||
@@ -5113,52 +5113,52 @@ def _role_graph(
|
|||||||
if any(term in text for term in ("boobjob", "titjob", "breast-sex", "breast sex")):
|
if any(term in text for term in ("boobjob", "titjob", "breast-sex", "breast sex")):
|
||||||
if man_is_pov:
|
if man_is_pov:
|
||||||
return (
|
return (
|
||||||
f"{woman} kneels low between the POV viewer's thighs, chest directly over his pelvis, "
|
f"{woman} kneels between the POV viewer's open thighs with her torso bent forward over his pelvis and shoulders low, "
|
||||||
"both hands pressing her breasts tightly around the POV viewer's penis while the glans sits just below her lips."
|
"both hands lifting and pressing her breasts tightly around the POV viewer's penis shaft while the glans sits just below her lips."
|
||||||
)
|
)
|
||||||
return (
|
return (
|
||||||
f"{man} sits with legs apart while {woman} kneels low between his thighs, chest over his pelvis, "
|
f"{man} sits with legs apart while {woman} kneels between his open thighs with her torso bent forward over his pelvis and shoulders low, "
|
||||||
f"both hands pressing her breasts tightly around {man}'s penis while the glans sits just below her lips."
|
f"both hands lifting and pressing her breasts tightly around {man}'s penis shaft while the glans sits just below her lips."
|
||||||
)
|
)
|
||||||
if any(term in text for term in ("testicle", "balls-licking", "balls licking", "balls and mouth", "balls held")):
|
if any(term in text for term in ("testicle", "balls-licking", "balls licking", "balls and mouth", "balls held")):
|
||||||
if man_is_pov:
|
if man_is_pov:
|
||||||
return (
|
return (
|
||||||
f"{woman} kneels very low between the POV viewer's thighs, face below the penis shaft at testicle height, "
|
f"{woman} kneels very low between the POV viewer's open thighs with her torso bent forward and shoulders between his knees, "
|
||||||
"mouth and tongue on the POV viewer's balls while his penis points upward above her forehead."
|
"head tucked under the penis shaft at the base of the penis, mouth and tongue on the POV viewer's balls while his penis points upward above her face."
|
||||||
)
|
)
|
||||||
return (
|
return (
|
||||||
f"{man} sits with legs apart while {woman} kneels very low between his thighs, face below the penis shaft at testicle height, "
|
f"{man} sits with legs apart while {woman} kneels very low between his open thighs with her torso bent forward and shoulders between his knees, "
|
||||||
f"mouth and tongue on his balls while {man}'s penis points upward above her forehead."
|
f"head tucked under the penis shaft at the base of his penis, mouth and tongue on his balls while {man}'s penis points upward above her face."
|
||||||
)
|
)
|
||||||
if "penis-licking" in position_text or "penis licking" in text or "tongue along" in text or "tongue licking" in text:
|
if "penis-licking" in position_text or "penis licking" in text or "tongue along" in text or "tongue licking" in text:
|
||||||
if man_is_pov:
|
if man_is_pov:
|
||||||
return (
|
return (
|
||||||
f"{woman} kneels close at the POV viewer's pelvis, face just above his hips, "
|
f"{woman} bends forward between the POV viewer's open thighs, head low under the POV viewer's penis with her face directly under the penis, "
|
||||||
"tongue running along the underside of the POV viewer's penis from the penis shaft to the glans while one hand steadies the base of the penis."
|
"tongue running along the underside from the penis shaft to the glans while one hand steadies the base of the penis."
|
||||||
)
|
)
|
||||||
return (
|
return (
|
||||||
f"{woman} kneels close at {man}'s pelvis, face just above his hips, "
|
f"{woman} bends forward between {man}'s open thighs, head low under {man}'s penis with her face directly under the penis, "
|
||||||
f"tongue running along the underside of {man}'s penis from the penis shaft to the glans while one hand steadies the base of the penis."
|
f"tongue running along the underside from the penis shaft to the glans while one hand steadies the base of the penis."
|
||||||
)
|
)
|
||||||
if "handjob" in position_text or "handjob" in text or "hand job" in text or "hand wrapped" in text:
|
if "handjob" in position_text or "handjob" in text or "hand job" in text or "hand wrapped" in text:
|
||||||
if man_is_pov:
|
if man_is_pov:
|
||||||
return (
|
return (
|
||||||
f"{woman} kneels close at the POV viewer's pelvis with her face behind the penis shaft, "
|
f"{woman} kneels between the POV viewer's open thighs with her torso leaning forward and face visible behind the penis shaft, "
|
||||||
"one hand wrapped around the POV viewer's penis shaft and the other hand steadying the base of the penis as she strokes toward the glans."
|
"one hand wrapped around the POV viewer's penis shaft while the other hand steadies the base of the penis as she strokes toward the glans."
|
||||||
)
|
)
|
||||||
return (
|
return (
|
||||||
f"{woman} kneels close at {man}'s pelvis with her face behind the penis shaft, "
|
f"{woman} kneels between {man}'s open thighs with her torso leaning forward and face visible behind the penis shaft, "
|
||||||
f"one hand wrapped around {man}'s penis shaft and the other hand steadying the base of the penis as she strokes toward the glans."
|
f"one hand wrapped around {man}'s penis shaft while the other hand steadies the base of the penis as she strokes toward the glans."
|
||||||
)
|
)
|
||||||
if "footjob" in text or "soles" in text or "toes curled" in text or "feet stroking" in text:
|
if "footjob" in text or "soles" in text or "toes curled" in text or "feet stroking" in text:
|
||||||
if man_is_pov:
|
if man_is_pov:
|
||||||
return (
|
return (
|
||||||
f"{woman} faces the POV viewer with legs raised toward the camera, both soles wrapped around the POV viewer's penis "
|
f"{woman} faces the POV viewer with her hips back, torso visible behind her raised legs, and both knees bent open toward the camera, "
|
||||||
"in the lower foreground and toes curled around the penis shaft."
|
"both soles wrapped around the POV viewer's penis shaft in the lower foreground."
|
||||||
)
|
)
|
||||||
return (
|
return (
|
||||||
f"{man} reclines with hips forward while {woman} faces him and wraps both soles around {man}'s penis, "
|
f"{man} reclines with hips forward while {woman} faces him with her hips back and both knees bent open, "
|
||||||
"stroking the penis shaft with her feet while the contact stays centered."
|
f"wrapping both soles around {man}'s penis shaft while the contact stays centered."
|
||||||
)
|
)
|
||||||
if man_is_pov:
|
if man_is_pov:
|
||||||
return (
|
return (
|
||||||
|
|||||||
Reference in New Issue
Block a user