261 lines
9.6 KiB
Python
261 lines
9.6 KiB
Python
""" MMA specific functionality"""
|
|
|
|
import logging
|
|
|
|
from .models import TeamTrackerValues
|
|
from .utils import get_value
|
|
|
|
_LOGGER = logging.getLogger(__name__)
|
|
|
|
class SetMMAMixin:
|
|
_sensor_name: str
|
|
_values: TeamTrackerValues
|
|
|
|
def _set_mma_values(
|
|
self,
|
|
event, competition_index, team_index
|
|
) -> bool:
|
|
"""Set MMA specific values"""
|
|
|
|
_LOGGER.debug("%s: async_set_mma_values() 1: %s", self._sensor_name, self._sensor_name)
|
|
|
|
oppo_index = 1 - team_index
|
|
competition = get_value(event, "competitions", competition_index)
|
|
competitor = get_value(competition, "competitors", team_index)
|
|
opponent = get_value(competition, "competitors", oppo_index)
|
|
|
|
if competition is None or competitor is None or opponent is None:
|
|
# _LOGGER.debug("%s: async_set_mma_values() 1.1: %s", sensor_name, sensor_name)
|
|
return False
|
|
|
|
# _LOGGER.debug("%s: async_set_mma_values() 2: %s %s %s", sensor_name, competition_index, team_index, oppo_index)
|
|
|
|
self._values.event_name = get_value(event, "name")
|
|
|
|
t = 0
|
|
o = 0
|
|
for ls in range(
|
|
0,
|
|
len(
|
|
get_value(
|
|
competitor, "linescores", -1, "linescores", default=[]
|
|
)
|
|
),
|
|
):
|
|
# _LOGGER.debug("%s: async_set_mma_values() 2.1: %s", sensor_name, ls)
|
|
|
|
if get_value(
|
|
competitor, "linescores", -1, "linescores", ls, "value", default=0
|
|
) > get_value(
|
|
opponent, "linescores", -1, "linescores", ls, "value", default=0
|
|
):
|
|
t = t + 1
|
|
if get_value(
|
|
competitor, "linescores", -1, "linescores", ls, "value", default=0
|
|
) < get_value(
|
|
opponent, "linescores", -1, "linescores", ls, "value", default=0
|
|
):
|
|
o = o + 1
|
|
|
|
self._values.team_score = str(t)
|
|
self._values.opponent_score = str(o)
|
|
if t == o:
|
|
# _LOGGER.debug("%s: async_set_mma_values() 3: %s", sensor_name, sensor_name)
|
|
if get_value(competitor, "winner", default=False):
|
|
self._values.team_score = "W"
|
|
self._values.opponent_score = "L"
|
|
if get_value(opponent, "winner", default=False):
|
|
self._values.team_score = "L"
|
|
self._values.opponent_score = "W"
|
|
|
|
# _LOGGER.debug("%s: async_set_mma_values() 4: %s %s %s", sensor_name, competition_index, team_index, oppo_index)
|
|
self._values.last_play = self._get_prior_fights(event)
|
|
|
|
# _LOGGER.debug("%s: async_set_mma_values() 5: %s %s %s", sensor_name, competition_index, team_index, oppo_index)
|
|
|
|
return True
|
|
|
|
|
|
def _get_prior_fights(self, event) -> str:
|
|
"""Get the results of the prior fights"""
|
|
|
|
prior_fights = ""
|
|
|
|
# _LOGGER.debug("%s: async_get_prior_fights() 1: %s", sensor_name, sensor_name)
|
|
c = 1
|
|
for competition in get_value(event, "competitions", default=[]):
|
|
# _LOGGER.debug("%s: _get_prior_fights() 2: %s", sensor_name, sensor_name)
|
|
|
|
if (
|
|
str(
|
|
get_value(
|
|
competition, "status", "type", "state", default="NOT_FOUND"
|
|
)
|
|
).upper()
|
|
== "POST"
|
|
):
|
|
# _LOGGER.debug("%s: async_get_prior_fights() 2.1: %s", sensor_name, sensor_name)
|
|
|
|
prior_fights = prior_fights + str(c) + ". "
|
|
if get_value(
|
|
competition, "competitors", 0, "winner", default=False
|
|
):
|
|
prior_fights = (
|
|
prior_fights
|
|
+ "*"
|
|
+ str(
|
|
get_value(
|
|
competition,
|
|
"competitors",
|
|
0,
|
|
"athlete",
|
|
"shortName",
|
|
default="{shortName}",
|
|
)
|
|
).upper()
|
|
)
|
|
else:
|
|
prior_fights = prior_fights + str(
|
|
get_value(
|
|
competition,
|
|
"competitors",
|
|
0,
|
|
"athlete",
|
|
"shortName",
|
|
default="{shortName}",
|
|
)
|
|
)
|
|
prior_fights = prior_fights + " v. "
|
|
if get_value(
|
|
competition, "competitors", 1, "winner", default=False
|
|
):
|
|
prior_fights = (
|
|
prior_fights
|
|
+ str(
|
|
get_value(
|
|
competition,
|
|
"competitors",
|
|
1,
|
|
"athlete",
|
|
"shortName",
|
|
default="{shortName}",
|
|
)
|
|
).upper()
|
|
+ "*"
|
|
)
|
|
else:
|
|
prior_fights = prior_fights + str(
|
|
get_value(
|
|
competition,
|
|
"competitors",
|
|
1,
|
|
"athlete",
|
|
"shortName",
|
|
default="{shortName}",
|
|
)
|
|
)
|
|
f1 = 0
|
|
f2 = 0
|
|
t = 0
|
|
# _LOGGER.debug("%s: async_get_prior_fights() 2.2: %s", sensor_name, len(get_value(competition, "competitors", 0, "linescores", 0, "linescores", default=[])))
|
|
for ls in range(
|
|
0,
|
|
len(
|
|
get_value(
|
|
competition,
|
|
"competitors",
|
|
0,
|
|
"linescores",
|
|
0,
|
|
"linescores",
|
|
default=[],
|
|
)
|
|
),
|
|
):
|
|
# _LOGGER.debug("%s: async_get_prior_fights() 2.3: %s %s %s %s", sensor_name, ls, f1, f2, t)
|
|
if int(
|
|
get_value(
|
|
competition,
|
|
"competitors",
|
|
0,
|
|
"linescores",
|
|
0,
|
|
"linescores",
|
|
ls,
|
|
"value",
|
|
default=0,
|
|
)
|
|
) > int(
|
|
get_value(
|
|
competition,
|
|
"competitors",
|
|
1,
|
|
"linescores",
|
|
0,
|
|
"linescores",
|
|
ls,
|
|
"value",
|
|
default=0,
|
|
)
|
|
):
|
|
f1 = f1 + 1
|
|
elif int(
|
|
get_value(
|
|
competition,
|
|
"competitors",
|
|
0,
|
|
"linescores",
|
|
0,
|
|
"linescores",
|
|
ls,
|
|
"value",
|
|
default=0,
|
|
)
|
|
) < int(
|
|
get_value(
|
|
competition,
|
|
"competitors",
|
|
1,
|
|
"linescores",
|
|
0,
|
|
"linescores",
|
|
ls,
|
|
"value",
|
|
default=0,
|
|
)
|
|
):
|
|
f2 = f2 + 1
|
|
else:
|
|
t = t + 1
|
|
|
|
# _LOGGER.debug("%s: async_get_prior_fights() 3: %s %s %s %s %s", sensor_name, f1, f2, t, prior_fights)
|
|
|
|
if f1 == 0 and f2 == 0 and t == 0:
|
|
prior_fights = (
|
|
prior_fights
|
|
+ " (KO/TKO/Sub: R"
|
|
+ str(
|
|
get_value(
|
|
competition, "status", "period", default="{period}"
|
|
)
|
|
)
|
|
+ "@"
|
|
+ str(
|
|
get_value(
|
|
competition,
|
|
"status",
|
|
"displayClock",
|
|
default="{displayClock}",
|
|
)
|
|
)
|
|
)
|
|
else:
|
|
prior_fights = prior_fights + " (Dec: " + str(f1) + "-" + str(f2)
|
|
if t != 0:
|
|
prior_fights = prior_fights + "-" + str(t)
|
|
|
|
prior_fights = prior_fights + "); "
|
|
c = c + 1
|
|
# _LOGGER.debug("%s: async_get_prior_fights() 4: %s", sensor_name, prior_fights)
|
|
|
|
return prior_fights |