def test_all(): year = '20142015' report_type = 'PL' game_type = '02' for x in range (750,1150): game_num = Operations.pad_game_num(x) game_info = GameHeader.harvest(year, game_num, report_type, game_type) game_personnel = Roster.harvest(year, game_num) game_summary = GameSummary.harvest(year, game_num, game_info, game_personnel) yield check_refs, game_personnel, game_summary
def harvest(year, game_num): """ Extract roster information from a html file on the local machine and create database entries """ game_info = GameHeader.harvest(year, game_num, "RO", "02") tree = Operations.germinate_report_seed(year, game_num, "RO", "02") tables = tree.xpath("//table//table//table//table") away_roster = chop_ind_roster_branch(tables, "away", game_info, year) home_roster = chop_ind_roster_branch(tables, "home", game_info, year) away_coach, home_coach = chop_coach_branch(tables) away_coach.team = game_info.away_team home_coach.team = game_info.home_team referees, linesmen = chop_officials_branch(tables) return GamePersonnel(away_roster, home_roster, away_coach, home_coach, referees, linesmen)
def harvest(year, game_num): game_info = GameHeader.harvest (year, game_num, 'RO', '02') away_full_name = Operations.team_acronym_to_uppercase( game_info.away_team) home_full_name = Operations.team_acronym_to_uppercase( game_info.home_team) tree = Operations.germinate_report_seed (year, game_num, "ES", '02') tables = tree.xpath('//table[@class="tablewidth" and @align="center"]/tr/td/table[@width="100%"]') rows = tables[3].xpath('./tr') roster = [] team_acronym = game_info.away_team for item in rows: if item.xpath('./td/text()')[0] == home_full_name: away_roster = roster roster = [] team_acronym = game_info.home_team elif item.get('class') == 'evenColor' or\ item.get('class') == 'oddColor': fields = item.xpath('./td/text()') for index, field in enumerate(fields): if field == u'\xa0': field = '0' if index == 0: number = field elif index == 1: position = field elif index == 2: name_raw = field.split(', ') first_name = name_raw[1] last_name = name_raw[0] elif index == 3: goals = field elif index == 4: assists = field elif index == 5: points = field elif index == 6: plus_minus = field elif index == 7: num_penalties = field elif index == 8: pim = field elif index == 9: total_minutes = field elif index == 10: num_shifts = field elif index == 11: avg_shift_length = field elif index == 12: powerplay_minutes = field elif index == 13: shorthanded_minutes = field elif index == 14: evenstrength_minutes = field elif index == 15: shots = field elif index == 16: attempts_blocked = field elif index == 17: missed_shots = field elif index == 18: hits = field elif index == 19: give_aways = field elif index == 20: take_aways = field elif index == 21: blocked_shots = field elif index == 22: faceoff_wins = field elif index == 23: faceoff_losses = field elif index == 24: faceoff_percentage = field playerid = Operations.get_playerid(first_name, last_name, team_acronym, year, position) roster.append (ES_Player(team_acronym, number, position, first_name, last_name, goals, assists, points, plus_minus, num_penalties, pim, total_minutes, num_shifts, avg_shift_length, powerplay_minutes, shorthanded_minutes, evenstrength_minutes, shots, attempts_blocked, missed_shots, hits, give_aways, take_aways, blocked_shots, faceoff_wins, faceoff_losses, faceoff_percentage, playerid)) home_roster = roster return away_roster, home_roster
game_personnel.home_roster) pruned_events = [] for index, event in enumerate(raw_events): pruned_event = prune_event(index, raw_events, game_personnel) pruned_events.append(pruned_event) #if pruned_event.event_type == 'HIT': # print pruned_event return PlayByPlay(raw_events, pruned_events) if __name__ == '__main__': year = '20142015' report_type = 'PL' game_type = '02' for game_num_raw in range (7,8): game_num = Operations.pad_game_num (game_num_raw) game_info = GameHeader.harvest(year, game_num, report_type, game_type) game_personnel = Roster.harvest (year, game_num) temp_pbp = harvest(year, game_num, report_type, game_type, game_info, game_personnel) print game_info for item in temp_pbp.pruned_events: if item.event_type == 'PENL': print item