Align outercourse action routing
This commit is contained in:
+69
-2
@@ -4,12 +4,14 @@ import re
|
||||
from typing import Any
|
||||
|
||||
try:
|
||||
from . import outercourse_action_policy as outercourse_policy
|
||||
from .krea_action_context import (
|
||||
is_close_foreplay_text,
|
||||
position_context_text,
|
||||
)
|
||||
from .krea_detail import detail_clauses, join_detail_clauses
|
||||
except ImportError: # Allows local smoke tests with `python -c`.
|
||||
import outercourse_action_policy as outercourse_policy
|
||||
from krea_action_context import (
|
||||
is_close_foreplay_text,
|
||||
position_context_text,
|
||||
@@ -253,11 +255,16 @@ def dedupe_outercourse_detail(detail: str, role_graph: str, hard_item: str = "",
|
||||
return ""
|
||||
context = position_context_text(role_graph, hard_item, "", axis_values)
|
||||
context_lower = context.lower()
|
||||
breast_sex = any(term in context_lower for term in ("boobjob", "titjob", "breast sex", "breast-sex"))
|
||||
position_text = ""
|
||||
if isinstance(axis_values, dict):
|
||||
position_text = _clean(axis_values.get("position", "")).lower()
|
||||
action_kind = outercourse_policy.infer_outercourse_action_kind(position_text)
|
||||
if action_kind == outercourse_policy.OUTERCOURSE_GENERIC:
|
||||
action_kind = outercourse_policy.infer_outercourse_action_kind(context_lower)
|
||||
clauses: list[str] = []
|
||||
for clause in detail_clauses(detail):
|
||||
lower = clause.lower()
|
||||
if breast_sex:
|
||||
if action_kind == outercourse_policy.OUTERCOURSE_BOOBJOB:
|
||||
if lower in ("penis", "breasts", "mouth clearly visible"):
|
||||
continue
|
||||
if any(
|
||||
@@ -283,6 +290,66 @@ def dedupe_outercourse_detail(detail: str, role_graph: str, hard_item: str = "",
|
||||
)
|
||||
):
|
||||
continue
|
||||
elif action_kind == outercourse_policy.OUTERCOURSE_TESTICLE:
|
||||
if any(
|
||||
term in lower
|
||||
for term in (
|
||||
"testicle",
|
||||
"balls licking",
|
||||
"balls-licking",
|
||||
"balls held",
|
||||
"balls close",
|
||||
"balls and mouth",
|
||||
"mouth and tongue",
|
||||
"mouth visible",
|
||||
"mouth contact",
|
||||
)
|
||||
):
|
||||
continue
|
||||
elif action_kind == outercourse_policy.OUTERCOURSE_PENIS_LICKING:
|
||||
if any(
|
||||
term in lower
|
||||
for term in (
|
||||
"penis licking",
|
||||
"penis-licking",
|
||||
"tongue along",
|
||||
"tongue licking",
|
||||
"underside of the penis",
|
||||
"tongue contact on the penis",
|
||||
"one hand steadies the base",
|
||||
)
|
||||
):
|
||||
continue
|
||||
elif action_kind == outercourse_policy.OUTERCOURSE_HANDJOB:
|
||||
if any(
|
||||
term in lower
|
||||
for term in (
|
||||
"handjob",
|
||||
"hand job",
|
||||
"hand wrapped",
|
||||
"one hand wrapped",
|
||||
"two-handed",
|
||||
"both hands stroking",
|
||||
"hand and penis centered",
|
||||
"fingers and palm visibly stroking",
|
||||
)
|
||||
):
|
||||
continue
|
||||
elif action_kind == outercourse_policy.OUTERCOURSE_FOOTJOB:
|
||||
if any(
|
||||
term in lower
|
||||
for term in (
|
||||
"footjob",
|
||||
"foot job",
|
||||
"both soles",
|
||||
"soles pressing",
|
||||
"soles wrap",
|
||||
"toes curled",
|
||||
"feet and penis",
|
||||
"soles and penis",
|
||||
)
|
||||
):
|
||||
continue
|
||||
clauses.append(clause)
|
||||
return join_detail_clauses(clauses)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user