Esempio n. 1
0
def prune_roster_parts(tree, scratch, team, years, roster_objects):
    """
	Given xml tree of a part of a roster (either scratched or nonscratched 
	list as tree), construct and add R_Player objects to roster_objects list
	"""
    iter_roster = iter(tree)
    next(iter_roster)

    for item in iter_roster:

        captaincy = None
        num = item.xpath("./td/text()")[0]
        position = item.xpath("./td/text()")[1]

        temp_starting = item.xpath("./td/@class")[0]
        starting = 0
        if "bold" in temp_starting:
            starting = 1

        temp_name_raw = item.xpath("./td/text()")[2]
        temp_name_raw_split = temp_name_raw.split()
        first_name = temp_name_raw_split[0]

        if "(A)" in temp_name_raw_split:
            captaincy = "A"
            temp_name_raw_split.pop(-1)
        elif "(C)" in temp_name_raw_split:
            captaincy = "C"
            temp_name_raw_split.pop(-1)

        last_name = " ".join(temp_name_raw_split[1:])

        playerid = Operations.get_playerid(first_name, last_name, team, years, position)

        roster_objects.append(
            R_Player(team, num, position, first_name, last_name, captaincy, starting, scratch, playerid)
        )
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