Source code for nhlscrapi.scrapr.eventparser

from nhlscrapi.games.events import EventType as ET, EventFactory as EF
from nhlscrapi.scrapr import descparser as dp


def __shot_type(**kwargs):
  skater_ct = kwargs['skater_ct'] if 'skater_ct' in kwargs else 12
  period = kwargs['period'] if 'period' in kwargs else 1
  
  if period < 5:
    return ET.Shot
#  elif period < 5:
#    return ET.PenaltyShot
  else:
    return ET.ShootOutAtt

def __goal_type(**kwargs):
  skater_ct = kwargs['skater_ct'] if 'skater_ct' in kwargs else 12
  period = kwargs['period'] if 'period' in kwargs else 1
  
  if skater_ct <= 2 and period > 4:
    return ET.ShootOutGoal
  else:
    return ET.Goal

def event_type_mapper(event_str, **kwargs):
  event_type_map =  {
[docs] "SHOT": __shot_type, "SHOT (!)": __shot_type, "SHOT (*)": __shot_type, "BLOCK": lambda **kwargs: ET.Block, "BLOCKED SHOT": lambda **kwargs: ET.Block, "MISS": lambda **kwargs: ET.Miss, "MISSED SHOT": lambda **kwargs: ET.Miss, "GOAL": __goal_type, "HIT": lambda **kwargs: ET.Hit, "HIT (!)": lambda **kwargs: ET.Hit, "HIT (*)": lambda **kwargs: ET.Hit, "FAC": lambda **kwargs: ET.FaceOff, "FACE-OFF": lambda **kwargs: ET.FaceOff, "GIVE": lambda **kwargs: ET.Giveaway, "GIVEAWAY": lambda **kwargs: ET.Giveaway, "TAKE": lambda **kwargs: ET.Takeaway, "TAKEAWAY": lambda **kwargs: ET.Takeaway, "PENL": lambda **kwargs: ET.Penalty, "PENALTY": lambda **kwargs: ET.Penalty, "STOP": lambda **kwargs: ET.Stoppage, "STOPPAGE": lambda **kwargs: ET.Stoppage, "PEND": lambda **kwargs: ET.PeriodEnd, "GEND": lambda **kwargs: ET.GameEnd, "SOC": lambda **kwargs: ET.ShootOutEnd } e_type = event_type_map[event_str](**kwargs) if event_str in event_type_map else ET.Event return EF.Create(e_type) def parse_event_desc(event, season = 2008):
[docs] if event.event_type == ET.Shot and season >= 2008: dp.parse_shot_desc_08(event) # elif event.event_type == ET.PenaltyShot: # dp.parse_penalty_shot_desc_08(event) elif event.event_type == ET.Goal and season >= 2008: dp.parse_goal_desc_08(event) elif event.event_type == ET.Miss and season >= 2008: dp.parse_miss_08(event) elif event.event_type == ET.FaceOff and season >= 2008: dp.parse_faceoff_08(event) elif event.event_type == ET.Hit and season >= 2008: dp.parse_hit_08(event) elif event.event_type == ET.Block and season >= 2008: dp.parse_block_08(event) elif event.event_type == ET.Takeaway and season >= 2008: dp.parse_takeaway_08(event) elif event.event_type == ET.Giveaway and season >= 2008: dp.parse_giveaway_08(event) elif event.event_type == ET.ShootOutGoal: dp.parse_shootout(event) else: dp.default_desc_parser(event)