Initial Home Assistant commit
This commit is contained in:
@@ -0,0 +1,85 @@
|
||||
""" Soccer specific functionality"""
|
||||
|
||||
import logging
|
||||
|
||||
from .models import TeamTrackerValues
|
||||
from .utils import get_value
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
||||
class SetSoccerMixin:
|
||||
_sensor_name: str
|
||||
_values: TeamTrackerValues
|
||||
|
||||
|
||||
def _set_soccer_values(
|
||||
self,
|
||||
event, competition_index, team_index
|
||||
) -> bool:
|
||||
"""Set soccer specific values"""
|
||||
|
||||
teamPP = None
|
||||
oppoPP = None
|
||||
|
||||
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_soccer_values() 0: %s", self._sensor_name, self._sensor_name)
|
||||
return False
|
||||
|
||||
# _LOGGER.debug("%s: async_set_soccer_values() 1: %s", self._sensor_name, self._sensor_name)
|
||||
|
||||
self._values.team_shots_on_target = 0
|
||||
self._values.team_total_shots = 0
|
||||
for statistic in get_value(competitor, "statistics", default=[]):
|
||||
stat_name = get_value(statistic, "name", default="")
|
||||
if "shotsOnTarget" in stat_name:
|
||||
self._values.team_shots_on_target = get_value(statistic, "displayValue")
|
||||
if "totalShots" in stat_name:
|
||||
self._values.team_total_shots = get_value(statistic, "displayValue")
|
||||
if "possessionPct" in stat_name:
|
||||
teamPP = get_value(statistic, "displayValue")
|
||||
|
||||
# _LOGGER.debug("%s: async_set_soccer_values() 2: %s", self._sensor_name, self._sensor_name)
|
||||
|
||||
self._values.opponent_shots_on_target = 0
|
||||
self._values.opponent_total_shots = 0
|
||||
for statistic in get_value(opponent, "statistics", default=[]):
|
||||
stat_name = get_value(statistic, "name", default="")
|
||||
if "shotsOnTarget" in stat_name:
|
||||
self._values.opponent_shots_on_target = get_value(statistic, "displayValue")
|
||||
if "totalShots" in stat_name:
|
||||
self._values.opponent_total_shots = get_value(statistic, "displayValue")
|
||||
if "possessionPct" in stat_name:
|
||||
oppoPP = get_value(statistic, "displayValue")
|
||||
|
||||
# _LOGGER.debug("%s: async_set_soccer_values() 3: %s", self._sensor_name, self._sensor_name)
|
||||
|
||||
last_play = ""
|
||||
if teamPP and oppoPP:
|
||||
last_play = (
|
||||
f"{self._values.team_abbr} {teamPP}%, {self._values.opponent_abbr} {oppoPP}%; "
|
||||
)
|
||||
|
||||
for detail in get_value(event, "competitions", 0, "details", default=[]):
|
||||
try:
|
||||
mls_team_id = get_value(detail, "team", "id", default=0)
|
||||
clock = get_value(detail, "clock", "displayValue", default="{clock}")
|
||||
event_type = get_value(detail, "type", "text", default="{type}")
|
||||
athlete = get_value(detail, "athletesInvolved", 0, "displayName", default="{displayName}")
|
||||
|
||||
last_play += f" {clock} {event_type}: {athlete}"
|
||||
|
||||
if mls_team_id == self._values.team_id:
|
||||
last_play += f" ({self._values.team_abbr})"
|
||||
else:
|
||||
last_play += f" ({self._values.opponent_abbr}) "
|
||||
except:
|
||||
last_play += " {last_play} "
|
||||
|
||||
self._values.last_play = last_play
|
||||
|
||||
return True
|
||||
Reference in New Issue
Block a user