示例#1
0
    for idx, team in enumerate(draftData[drafter]):
        earliestEvent = detroit

        for event in tba.team_events(team, year):
            if event['start_date'] < earliestEvent['start_date']:
                if event['event_type'] in [
                        eventTypes.DISTRICT, eventTypes.REGIONAL
                ]:
                    earliestEvent = event

        playPoints = sum(
            slffFunctions.getPlayPoints('frc' + str(team),
                                        earliestEvent['key'])[0:3])
        awardPoints = slffFunctions.getAwardPoints(team,
                                                   earliestEvent['key'])[0]

        teamPoints = playPoints + awardPoints

        drafterData['P' + str(idx + 1) + ' Team'] = team
        drafterData['P' + str(idx + 1) + ' Score'] = teamPoints
        drafterData['Total'] += teamPoints
    drafterScores.append(drafterData)

drafterScores = sorted(drafterScores, key=lambda k: k['Total'], reverse=True)
cols = [
    'Drafter', 'Total', 'P1 Team', 'P1 Score', 'P2 Team', 'P2 Score',
    'P3 Team', 'P3 Score'
]
gen.listOfDictToCSV(
    str(year) + ' World Wide Regional Scores', drafterScores, cols)
示例#2
0
            if team in blueTeams:
                slot = blueTeams.index(team) + 1
                color = 'blue'
            else:
                slot = redTeams.index(team) + 1
                color = 'red'

            climbs.append(
                habLevels.index(
                    match['score_breakdown'][color]['endgameRobot' +
                                                    str(slot)]))
            starts.append(
                habLevels.index(
                    match['score_breakdown'][color]['preMatchLevelRobot' +
                                                    str(slot)]))
            lineCross.append(match['score_breakdown'][color][
                'habLineRobot' + str(slot)] == 'CrossedHabLineInSandstorm')
        except:
            print('Match', match['key'], 'no work')
    outList.append({
        'Team': team,
        'Avg Climb': stat.mean(climbs),
        'Avg Start': stat.mean(starts),
        'Max Start': max(starts),
        'Line Cross': sum(lineCross) / matches
    })

gen.listOfDictToCSV(
    '2019chcmpData', outList,
    ['Team', 'Avg Climb', 'Avg Start', 'Max Start', 'Line Cross'])
import gen
import eventTypes

tba = gen.setup()

year = 2019

regionals = []
for event in tba.events(2019):
    if event['event_type'] == eventTypes.REGIONAL:
        if event['country'] != 'China':
            regionals.append({
                'Code': event['key'],
                'Week': event['week'],
                'Start Date': event['start_date']
            })

regionals = sorted(regionals, key=lambda k: k['Start Date'])
gen.listOfDictToCSV(
    str(year) + ' Regionals', regionals, ['Code', 'Week', 'Start Date'])
示例#4
0
import gen

tba = gen.setup()

eventList = tba.events(2018)

data = []
for event in eventList:
    if event['event_type'] in range(0, 10):
        data.append({
            'Name': event['name'],
            'State': event['state_prov'],
            'Country': event['country'],
            'Type': event['event_type_string']
        })

gen.listOfDictToCSV('2018 Event Base Data', data,
                    ['Name', 'State', 'Country', 'Type'])
示例#5
0
import eventTypes
import datetime
import gen

current_date = datetime.datetime.now().strftime('%Y-%m-%d')
tba = gen.setup()

offList = []
for event in tba.events(2019):
    if event.event_type == eventTypes.OFFSEASON:
        if event.start_date > current_date:
            offList.append({
                'name': event.name,
                'code': event.key,
                'start': event.start_date,
                'end': event.end_date
            })

offList = sorted(offList, key=lambda k: k['start'])

gen.listOfDictToCSV('2019 OFF Events', offList,
                    ['name', 'code', 'start', 'end'])
示例#6
0
                if elims['current_level_record']['wins'] > 0:
                    elimPoints += 4
        elif elims['level'] == 'sf':
            elimPoints = 10
            if elims['current_level_record']['wins'] > 0:
                elimPoints += 2
        elif elims['level'] == 'qf':
            elimPoints = 4
            if elims['current_level_record']['wins'] > 0:
                elimPoints += 1
        
        inMatch = 0
        for match in elimMatches:
            inMatch += team in match['alliances']['blue']['team_keys']
            inMatch += team in match['alliances']['red']['team_keys']
    
        rec = status['playoff']['record']
        backup = inMatch / (rec['wins'] + rec['losses'] + rec['ties']) + 0.5
        
        scales = [1.05, 1.0, 0.95, backup]
        position = status['alliance']['pick']
        
        scaleFactor = max([scales[position], .25])

    total = (elimPoints + qualPoints + rankPoints) * scaleFactor
    
    data.append({'team': team[3:], 'rank': rank, 'quals': qualPoints, 'rankP': rankPoints, 'elims': elimPoints, 'total': total, 'factor': scales[position]})

colOrder = ['team', 'rank', 'total', 'factor', 'rankP', 'quals', 'elims']    
gen.listOfDictToCSV(EVENT+'FFIT', data, colOrder)
示例#7
0
        result = {
            'Username': userName,
            'Forum Count': forumCount,
            'Forums': forums,
            'Post Count': postCount,
            'Team Number': teamNumber,
            'Rookie Year': rookieYear,
            'Last Activity': lastActive
        }

    return result


now = datetime.datetime.now()
timeStamp = now.strftime("%Y-%m-%d")

r = requests.get(modUrl)
soup = BeautifulSoup(r.content, "html.parser")

modTable = soup.find_all('table')[7].find_all('tr')

modData = []
for row in tqdm(modTable):
    result = processMod(row)
    if result is not None:
        modData.append(result)

gen.listOfDictToCSV('cdMods-' + timeStamp, modData, [
    'Username', 'Forum Count', 'Post Count', 'Team Number', 'Rookie Year',
    'Last Activity', 'Forums'
])
示例#8
0
import gen

tba = gen.setup()

dist = 'chs'
year = 2019

distKey = str(year) + dist
distEvents = tba.district_events(distKey, False, True)

oodPlays = []
for team in tba.district_teams(distKey, False, True):
    print("Processing team " + team)

    for event in tba.team_events(team, year, False):
        if event['key'] not in distEvents:
            teamModel = {
                'Team': team,
                'Event': event['event_code'],
                'Type': event['event_type']
            }
            oodPlays.append(teamModel)

gen.listOfDictToCSV(distKey + "_ood", oodPlays, ['Team', 'Event', 'Type'])
示例#9
0
                eventData['Quals Matches'] += 1
            else:
                eventData['Elims Matches'] += 1

            if match['alliances']['red']['score'] < totalPts or match[
                    'alliances']['blue']['score'] < totalPts:
                if match['comp_level'] == 'qm':
                    eventData['Quals Wins'] += 1
                else:
                    eventData['Elims Wins'] += 1
        eventData[
            'Total Wins'] = eventData['Quals Wins'] + eventData['Elims Wins']
        eventData['Quals Win %'] = round(
            eventData['Quals Wins'] / eventData['Quals Matches'], 3)
        eventData['Elims Win %'] = round(
            eventData['Elims Wins'] / eventData['Elims Matches'], 3)
        eventData['Total Win %'] = round(
            eventData['Total Wins'] / eventData['Total Matches'], 3)
        climbWins.append(eventData)

climbWins = sorted(climbWins,
                   key=lambda event: event['Total Win %'],
                   reverse=True)

outCols = ['Event']
for prefix in ['Quals', 'Elims', 'Total']:
    for suffix in [' Wins', ' Matches', ' Win %']:
        outCols.append(prefix + suffix)

gen.listOfDictToCSV(dist.upper() + ' Climbing Wins', climbWins, outCols)
示例#10
0
    wins = 0
    losses = 0
    ties = 0

    if matches is not None:
        for idx, match in matches.iterrows():
            result = gen.matchResult(team, match)

            wins += result == 'WIN'
            losses += result == 'LOSS'
            ties += result == 'TIE'

        total = wins + losses + ties
        if total != 0:
            if wins == 0:
                wins = 1
                total = total * 10
                rating = wins / total
                wins = 0
            else:
                rating = wins / total
            recordString = str(wins) + ' / ' + str(losses) + ' / ' + str(ties)
            records.append({
                'Team': team[3:],
                'Rating': rating,
                'Record': recordString
            })

records = sorted(records, key=lambda k: k['Rating'])
gen.listOfDictToCSV('Worst Records', records, ['Team', 'Rating', 'Record'])
示例#11
0
            "type": "Event",
            "key": "",
            "zip": "",
            "state": prov,
            "country": "Canada",
            "district": isDist
        })

teams = []

for page in range(0, 20):
    gen.progressBar(page, 20)
    for team in tba.teams(page, YEAR):
        data.append({
            "type":
            "Team",
            "key":
            team['key'],
            "zip":
            handleZip(team),
            "state":
            team['state_prov'],
            "country":
            team['country'],
            "district": (team['country'] in inDistricts
                         or team['state_prov'] in inDistricts)
        })

colOrder = ["key", "type", "zip", "state", "country", "district"]
gen.listOfDictToCSV(str(YEAR) + "eventLocations", data, colOrder)
示例#12
0
import requests
import gen

cdThread = 'https://www.chiefdelphi.com/t/concerns-about-an-off-season-event/358211.json'

data = [{
    'Person':
    person['name'] if person['name'] != "" else person["username"],
    'Posts':
    person['post_count'],
    'Link':
    'http://www.chiefdelphi.com/u/' + person['username']
} for person in requests.get(cdThread).json()['details']['participants']]

gen.listOfDictToCSV('Girls Thread Posters', data, ['Person', 'Posts', 'Link'])
示例#13
0
            if len(matches) > 0:
                winPercent = wins / sum([wins, losses, ties]) * 100

        awardCount = 0
        awardString = ""
        awards = gen.readTeamCsv(team, 'awards', currentYear)
        if awards is not None:
            awardCount = len(awards)

            for idx, award in awards.iterrows():
                tail = " / "

                if idx + 1 == len(awards):
                    tail = ""
                awardString += award['Name'] + tail
        if winPercent > 0:
            rookies.append({
                'Team': team,
                '# of Awards': awardCount,
                'Avg OPR': avgOpr,
                'Avg Rank': avgRank,
                'Wins': wins,
                'Win %': winPercent,
                'Awards': awardString
            })

colOrder = [
    'Team', 'Avg OPR', 'Avg Rank', 'Wins', 'Win %', '# of Awards', 'Awards'
]
gen.listOfDictToCSV("rookieData" + str(rookieYear), rookies, colOrder)
示例#14
0
draftData = pd.read_excel('Waiver Lists.xlsx')

waiver2 = pd.read_csv('Waiver2Teams.csv')
waiver2.columns = cols

waiverTeams = []
for col in tqdm(draftData.columns):
    draftData[col] = draftData[col].fillna(-1).astype(int).astype(str)
    key = col
    baseTeams = []

    if "!" in key:
        pass
        #Skipping districts for now.
        #key = key.strip("!")
        #baseTeams = tba.district_teams(str(2019)+key.lower(), False, True)
    else:
        baseTeams = tba.event_teams(key, False, True)

    currentTeams = [team[3:] for team in baseTeams]
    for team in currentTeams:
        if not draftData[col].str.contains(team).any():
            if int(team) not in waiver1['Team'].values or int(
                    team) not in waiver2['Team'].values:
                waiverTeams.append({'Key': key, 'Team': team})

newTeams = len(waiverTeams)
print(newTeams, 'new teams found for waivers.')
if newTeams > 0:
    gen.listOfDictToCSV('Waiver3Teams', waiverTeams, cols)
示例#15
0
    cmpData.append(teamData)

finalData = []
for entry in cmpData:
    finalDataEntry = {
        'Team': entry['Team'],
        'Max OPR': entry['Max OPR'],
        'Avg OPR': entry['Avg OPR'],
        'Wins': entry['Wins'],
        'Losses': entry['Losses'],
        'Ties': entry['Ties'],
        'Win %': entry['Win %'],
        'Avg Total Pts': stat.mean(entry['total']),
        'Max Total Pts': max(entry['total']),
        'Avg Play Pts': stat.mean(entry['playPts']),
        'Max Play Pts': max(entry['playPts']),
        'Avg Rank': stat.mean(entry['ranks']),
        'Best Rank': min(entry['ranks']),
        'Avg Award Pts': stat.mean(entry['awardPts']),
        'Max Award Pts': max(entry['awardPts']),
        'Awards Won': ' / '.join(entry['awardStrings'])
    }
    finalData.append(finalDataEntry)

cols = [
    'Team', 'Win %', 'Wins', 'Losses', 'Ties', 'Max OPR', 'Avg OPR',
    'Max Total Pts', 'Avg Total Pts', 'Avg Rank', 'Best Rank', 'Awards Won',
    'Max Play Pts', 'Avg Play Pts', 'Max Award Pts', 'Avg Award Pts'
]
gen.listOfDictToCSV(str(year) + div.upper() + ' Data', finalData, cols, True)
示例#16
0
import gen

tba = gen.setup()

dist = 'ont'
startYear = 2014
currYear = 2018

distTeams = tba.district_teams(str(currYear) + dist, False, True)

records = []
for team in distTeams:
    wins = 0
    for year in range(startYear, currYear + 1):
        awards = gen.readTeamCsv(team, 'awards', year)

        if awards is not None:
            for idx, award in awards.iterrows():
                if award['Type'] == 1:
                    wins += 1
    records.append({'Team': team[3:], 'Wins': wins})

records = sorted(records, key=lambda k: k['Wins'], reverse=True)
gen.listOfDictToCSV(
    dist.upper() + " " + str(startYear) + " to " + str(currYear) + " Wins",
    records, ['Team', 'Wins'])
示例#17
0
        entCount = 0
        gotAward = False

        for award in teamAwards:
            if award['year'] == year:
                awardString = award['event_key'] + " / "

                if award['award_type'] in CA:
                    gotAward = True
                    caCount += 1
                    teamRecord[
                        'wins'] = "CA at " + awardString + teamRecord['wins']
                elif award['award_type'] in EI:
                    gotAward = True
                    eiCount += 1
                    teamRecord[
                        'wins'] = "EI at " + awardString + teamRecord['wins']
                elif award['award_type'] in ENT:
                    gotAward = True
                    entCount += 1
                    teamRecord[
                        'wins'] = "ENT at " + awardString + teamRecord['wins']
        if gotAward:
            print("Award in " + str(year))
            teamRecord['rating'] += (caCount * CA_WEIGHT +
                                     eiCount * EI_WEIGHT +
                                     entCount * ENT_WEIGHT) / (YEAR - year + 1)
    winners.append(teamRecord)

gen.listOfDictToCSV(DISTRICT.upper() + "caRatings", winners)
示例#18
0
        'longStart': 0,
        'longEnd': 0
    }

    for year in tba.team_years(team['key']):
        eventWinner = False
        for award in tba.team_awards(team['key'], year):
            if award['award_type'] == awardTypes.WINNER:
                eventWinner = True
        if eventWinner:
            if teamData['current'] == 0:
                teamData['currStart'] = year

            teamData['current'] += 1
            teamData['currEnd'] = year

            if teamData['current'] > teamData['longest']:
                teamData['longest'] = teamData['current']
                teamData['longStart'] = teamData['currStart']
                teamData['longEnd'] = teamData['currEnd']
        else:
            teamData['current'] = 0
            teamData['currStart'] = year
            teamData['currEnd'] = year
    teamStreaks.append(teamData)

gen.listOfDictToCSV(distKey.upper() + ' Streaks', teamStreaks, [
    'team', 'currStart', 'currEnd', 'current', 'longStart', 'longEnd',
    'longest'
])
示例#19
0
    baseList = []
    finalList = []
    for article in articles:
        link = article.find('a')
        name = link.get('title')
        url = link.get('href')

        if name not in baseList:
            baseList.append(name)

            cleanedName = name.replace('Team ',
                                       '').replace(' ' + str(year), '')
            finalList.append({'Team': cleanedName, 'Link': url})

    return finalList


teams2018 = fetchYearTeams(2018)
teams2017 = fetchYearTeams(2017)

names2017 = [team['Team'] for team in teams2017]
for team in teams2018:
    in2017 = team['Team'] in names2017

    team['In 2017'] = ''
    if in2017:
        team['In 2017'] = 'Yes'

teams2018 = sorted(teams2018, key=lambda k: k['Team'])
gen.listOfDictToCSV('FGC 2018 Teams', teams2018, ['Team', 'Link', 'In 2017'])
示例#20
0
import gen

tba = gen.setup()

year = 2019

nameMap = []
for event in tba.events(year):
    if event['event_type'] == 0:
        nameMap.append({
            'Name': event['name'],
            'Code': str(2019) + event['event_code']
        })

gen.listOfDictToCSV(str(year) + ' Event Name Map', nameMap, ['Name', 'Code'])
示例#21
0
import gen

tba = gen.setup()

distTeams = tba.district_teams('2018chs')

teamList = []

for team in distTeams:
    if team['state_prov'] == 'Virginia':
        teamList.append({'Team': team['key'][3:], 'Sponsors': team['name'].replace(',', ''), 'Location': team['city'] + ' ' + team['state_prov'] + ' ' + str(team['postal_code']) })
        
gen.listOfDictToCSV('Virginia Team Locations', teamList, ['Team', 'Location', 'Sponsors'])
示例#22
0
    "245", "1732", "302", "1718", "2337", "51", "4130", "1504", "503", "6538",
    "1", "3322", "4395", "240", "4390", "1528", "5708"
]

team_data = []
for team in teams:
    vals = []

    if team[-1] == 'B':
        team_val = 'frc' + team[:-1]
    else:
        team_val = 'frc' + team

    for event in tba.team_events(team_val, 2019):
        if event.event_type in eventTypes.NORMAL:
            try:
                vals.append(tba.event_oprs(event.key)['dprs'][team_val])
            except KeyError:
                pass

    team_data.append({
        'team': team,
        'min dpr': min(vals),
        'max dpr': max(vals),
        'avg dpr': stat.mean(vals),
        'med dpr': stat.median(vals)
    })

gen.listOfDictToCSV('qd_2019marc_data', team_data,
                    ['team', 'min dpr', 'max dpr', 'avg dpr', 'med dpr'])
示例#23
0
            for team in award['recipient_list']:
                teamVal = int(team['team_key'][3:])
                if teamVal not in preQual:
                    preQual.append(teamVal)

for event in divisions:
    awards = tba.event_awards(event)

    for award in awards:
        typ = award['award_type']
        if typ == 9:
            for team in award['recipient_list']:
                teamVal = int(team['team_key'][3:])
                if teamVal not in preQual:
                    preQual.append(teamVal)

champsData = []
for team in preQual:
    info = tba.team(team)
    champsData.append({
        'Team': team,
        'Champs': info['home_championship']['2018']
    })

detCount = 0
for team in champsData:
    detCount += team['Champs'] == 'Detroit'

print(detCount, "/", len(champsData), "Detroit teams")
gen.listOfDictToCSV('Prequalified Champs Data', champsData, ['Team', 'Champs'])
示例#24
0
import gen
import awardTypes
from tqdm import tqdm

tba = gen.setup()

year = 2019
dist = 'chs'

distKey = str(year) + dist 

awards = []

for team in tqdm(tba.district_teams(distKey, False, True)):
    for award in tba.team_awards(team):
        if award['award_type'] is awardTypes.WINNER: 
            awards.append({'Team': team[3:],
                           'Year': award['event_key'][:4],
                           'Event': award['event_key'][4:],
                           'Name': award['name']})

gen.listOfDictToCSV(distKey + " Event Wins", awards, ['Team', 'Year', 'Event', 'Name'])
示例#25
0
        d['prevTeams'] = d['currentTeams']
        d['currentTeams'] = []

#MAR validation checking
marTeams = tba.district_teams('2018mar')
for team in marTeams:
    if team['team_number'] in outOfMar:
        print(team['team_number'], "is actually in MAR")

#Prep table and then save it out
districtTable = []
for d in districtStats:
    dist = districtStats[d]['years']

    for year in dist:
        isDist = dist[year]['dist']
        teams = dist[year]['teams']
        added = dist[year]['added']
        lost = dist[year]['lost']
        districtTable.append({
            'dist': d,
            'year': year,
            'isDist': isDist,
            'teams': teams,
            'added': added,
            'lost': lost
        })

gen.writeJsonFile('districtGrowth', districtStats)
gen.listOfDictToCSV('districtGrowth', districtTable)
示例#26
0
import gen

tba = gen.setup()

tieData = []

YEARS = [2010, 2011, 2012, 2013, 2014, 2016, 2017, 2018]

for year in YEARS:
    print("Processing " + str(year))

    matchCount = 0
    tieCount = 0

    for event in tba.events(year, True, False):
        if event['event_type'] in range(0, 10):
            print("Fetching matches for " + event['key'])
            for match in tba.event_matches(event['key'], True):
                tieCount += match['winning_alliance'] not in ['red', 'blue']
                matchCount += 1
    tieData.append({'year': year, 'matches': matchCount, 'ties': tieCount})

gen.listOfDictToCSV("tieData", tieData)
示例#27
0
                    draftPoints = 9 - alliance['number']
        except:
            pass

        #Find points for playing in elims
        for match in teamMatches:
            if match['comp_level'] != "qm":
                if gen.matchResult(team, match) == 'win':
                    elimPoints += 5

    return [teamRank, draftPoints, rankPoints, elimPoints]


teamData = []

for idx, team in enumerate(teams):
    gen.progressBar(idx, teamCount)
    rank, draft, rankP, elim = calcPoints(team, EVENT)
    total = draft + rankP + elim
    teamData.append({
        'team': team[3:],
        'rank': rank,
        'total': total,
        'rankP': rankP,
        'draft': draft,
        'elim': elim
    })

colOrder = ['team', 'rank', 'total', 'rankP', 'draft', 'elim']
gen.listOfDictToCSV('iriPoints', teamData, colOrder)
示例#28
0
import gen

YEAR = 2018

tba = gen.setup()

teams = gen.readTeamListCsv(2018).Teams


def fetchNames(robotList):
    print('memes')


robotNames = []
for team in teams:
    robots = tba.team_robots(team)
    for robot in robots:
        if robot.year == 2018:
            robotNames.append({
                'name': robot.robot_name,
                'length': len(robot.robot_name)
            })
print(len(robotNames))
robotNames = sorted(robotNames, key=lambda k: k['Length'])
gen.listOfDictToCSV('robotNames', robotNames, ['Length', 'Name'])
示例#29
0
maxPages = 20

finalistTeams = []
for i in range(0, maxPages):

    gen.progressBar(i, maxPages)

    teams = tba.teams(i, None, False, True)

    if teams == []:
        break

    for team in teams:

        finalist = 0

        for award in tba.team_awards(team):
            if award['award_type'] == 2:
                finalist += 1
            elif award['award_type'] == 1:
                break
        finalistTeams.append({'Team': team[3:], 'Finalist Count': finalist})

finalistTeams = sorted(finalistTeams,
                       key=lambda k: k['Finalist Count'],
                       reverse=True)

colOrder = ['Team', 'Finalist Count']
gen.listOfDictToCSV("finalistTeams", finalistTeams, colOrder)
    # Mid Atlantic Robotics Bylaws Article 1 Section 2 define the PA part of MAR as 'the counties of Pennsylvania including Harrisburg, eastward'
    # Harrisburg's longitude is listed as -76.884 , I used -77 as it's a round number and gives a ~7 mile margin.
    HARRISBURG_WEST_LON = -77

    return event['lng'] > HARRISBURG_WEST_LON


data = []
years = range(2011, 2019)
for idx, year in enumerate(years):
    gen.progressBar(idx, len(years))
    yearData = {'WOW': 0, 'CHS': 0, 'NE': 0, 'MAR': 0, 'ON': 0, 'NY': 0}
    yearEvents = tba.events(year)

    for event in yearEvents:
        if event['event_type'] == 0:
            if event['state_prov'] in areas:
                yearData['WOW'] += int(event['state_prov'] in WOW)
                yearData['CHS'] += int(event['state_prov'] in CHS)
                yearData['NE'] += int(event['state_prov'] in NE)
                yearData['MAR'] += int(event['state_prov'] in MAR)
                yearData['ON'] += int(event['state_prov'] == 'ON')
                yearData['NY'] += int(event['state_prov'] == 'NY')

                if event['state_prov'] == 'PA':
                    yearData['MAR'] += int(inMAR(event))
                    yearData['WOW'] += int(not inMAR(event))
    data.append(yearData)

gen.listOfDictToCSV("neRegionals", data)