import gen

tba = gen.setup()

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)
Beispiel #2
0
#Structures to hold commonly used data
eventData = {}
teamsList = []

#Fetch district teams and events
distTeams = tba.district_teams(str(YEAR) + DISTRICT, False)
distEvents = tba.district_events(str(YEAR) + DISTRICT)

#Store data on common district events first
for event in distEvents:
    eventData[event['key']] = tba.event_oprs(event['key'])

teamCount = 0
for team in distTeams:
    teamCount += 1
    gen.progressBar(teamCount, len(distTeams))
    oprs = []

    events = tba.team_events(team['key'], YEAR)

    for event in events:

        #Only run on official events, ignores preseason, offseason, and unlabled
        #Try / Except to handle borked events
        #Tries to load data from eventData first, only hits TBA if needed
        #Stores team OPR data for later use.
        if event['event_type'] in range(0, 10):
            try:
                if event['key'] in eventData.keys():
                    oprs.append(eventData[event['key']]['oprs'][team['key']])
                else:
        'currentTeams': [],
        'prevTeams': [],
        'years': {}
    }

    for year in yearRange:
        districtStats[district]['years'][str(year)] = {
            'dist': False,
            'teams': 0,
            'added': 0,
            'lost': 0,
            'teamList': []
        }

for count, y in enumerate(yearRange):
    gen.progressBar(count, len(yearRange))

    currentDistricts = tba.districts(y)
    year = str(y)

    for district in currentDistricts:
        if district['abbreviation'] != 'tx':
            districtStats[
                district['abbreviation']]['years'][year]['dist'] = True

    teams = []
    for page in range(0, 20):
        try:
            newTeams = tba.teams(page, y)

            if newTeams == []:
Beispiel #4
0
                    #IRI, second draft round is reversed
                    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)
                                  teamOrEvent['country'])
            zipCode = geocoder.osm((tmpLoc.lat, tmpLoc.lng),
                                   method="reverse").postal
        else:
            zipCode = teamOrEvent['postal_code']

        if teamOrEvent['country'] == "Canada":
            zipCode = zipCode[:3]
    except:
        zipCode = ""
    return zipCode


seasonEvents = tba.events(2018)
for (idx, event) in enumerate(seasonEvents):
    gen.progressBar(idx, len(seasonEvents))
    district = False

    if event['district'] != None:
        district = True

    if event['state_prov'] == "TX" or event['state_prov'] == 'PA':
        district = True

    if event['event_type'] in range(0, 6):
        data.append({
            "type": "Event",
            "key": event['key'],
            "zip": handleZip(event),
            "state": event['state_prov'],
            "country": event['country'],
Beispiel #6
0
import gen

tba = gen.setup()

EVENT = "2018txri"

teams = tba.event_teams(EVENT, False, True)

elimMatches = []
for match in tba.event_matches(EVENT, True):
    if match['comp_level'] != 'qm':
        elimMatches.append(match)

data = []
for idx, team in enumerate(teams):
    gen.progressBar(idx, len(teams))
    status = tba.team_status(team, EVENT)
    
    record = status['qual']['ranking']['record']
    qualPoints = record['wins'] * 3 + record['ties']
    
    rank = status['qual']['ranking']['rank']
    
    if rank == 1:
        rankPoints = 12
    elif rank < 4:
        rankPoints = 8
    elif rank < 9:
        rankPoints = 5
    elif rank < 13:
        rankPoints = 3
tba = gen.setup()


def inMAR(event):
    # 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))
Beispiel #8
0
import gen

YEAR = 2018

tba = gen.setup()

hasDeclines = []

for year in range(2010, YEAR + 1):
    print("\nProcessing", year)

    events = tba.events(YEAR, True, True)
    maxSize = len(events)
    currentSize = 0
    for event in events:
        currentSize += 1
        gen.progressBar(currentSize, maxSize)
        try:
            for alliance in tba.event_alliances(event):
                if alliance['declines'] != []:
                    print(event, "had declines")
                    hasDeclines.append(event)
        except:
            pass
print("There have been declines at", len(hasDeclines),
      "events according to TBA.")
Beispiel #9
0
YEAR = 2018
DISTRICT = 'chs'
DCMP_EVENTS = [2, 5]

pointsData = []

districtTeams = tba.district_teams(str(YEAR) + DISTRICT, False, False)
teamCount = len(districtTeams)

print("Processing", teamCount, "district teams.")

teamIter = 0
for team in districtTeams:
    teamIter += 1
    gen.progressBar(teamIter, teamCount)

    distPoints = 0
    teamEvents = tba.team_events(team['key'], YEAR, True, False)

    teamEvents = sorted(teamEvents, key=lambda k: k['start_date'])

    try:
        for i in range(0, 3):
            eventPoints = tba.event_district_points(teamEvents[i]['key'])
            distPoints += eventPoints['points'][team['key']]['total']
    except:
        pass
    pointsData.append({'team': team['team_number'], 'points': distPoints})

gen.listOfDictToCSV(DISTRICT + str(YEAR) + "points", pointsData)
Beispiel #10
0
def main():
    global teams
    pool = Pool()
    teamData = {}
    teamList = gen.readTeamListCsv(currentYear, ['Teams'])['Teams']

    for team in teamList:
        teams[team] = {'playValues': [], 'awardValues': [], 'totalValues': []}
        for year in years:
            teams[team][str(year)] = {'playPoints': 0, 'awardPoints': 0}

    for idx, year in enumerate(years):
        gen.progressBar(idx, len(years))
        teamData[str(year)] = []
        teamData[str(year)] = pool.map(partial(getData, year), teamList)

    for year in teamData:
        for t in teamData[year]:
            teams[t['team']][year]['playPoints'] = t['playPoints']
            teams[t['team']][year]['awardPoints'] = t['awardPoints']

    outData = []
    for team in teams:
        playValues = [teams[team][str(year)]['playPoints'] for year in years]
        awardValues = [teams[team][str(year)]['awardPoints'] for year in years]
        totalValues = [
            teams[team][str(year)]['playPoints'] +
            teams[team][str(year)]['awardPoints'] for year in years
        ]

        avgPlay = stat.mean(playValues)
        avgAward = stat.mean(awardValues)
        avgTotal = stat.mean(totalValues)

        maxPlay = max(playValues)
        maxAward = max(awardValues)
        maxTotal = max(totalValues)

        teamObj = {
            'Team': team[3:],
            'Average Play': avgPlay,
            'Average Award': avgAward,
            'Average Total': avgTotal,
            'Max Play': maxPlay,
            'Max Award': maxAward,
            'Max Total': maxTotal
        }

        for idx, year in enumerate(years):
            teamObj[str(year) + ' Play'] = playValues[idx]
            teamObj[str(year) + ' Award'] = awardValues[idx]
            teamObj[str(year) + ' Total'] = totalValues[idx]

        outData.append(teamObj)

    colOrder = [
        'Team', 'Average Play', 'Average Award', 'Average Total', 'Max Play',
        'Max Award', 'Max Total'
    ]
    for year in range(currentYear - yearRange + 1, currentYear + 1):
        colOrder.append(str(year) + ' Play')
        colOrder.append(str(year) + ' Award')
        colOrder.append(str(year) + ' Total')

    gen.listOfDictToCSV("Worldwide Regional", outData, colOrder)
    "frc225", "frc234", "frc245", "frc302", "frc319", "frc340", "frc359",
    "frc384", "frc469", "frc494", "frc624", "frc694", "frc708", "frc829",
    "frc865", "frc868", "frc1024", "frc1102", "frc1218", "frc1533", "frc1619",
    "frc1640", "frc1706", "frc1710", "frc1720", "frc1731", "frc1741",
    "frc1746", "frc1747", "frc1806", "frc2013", "frc2056", "frc2168",
    "frc2337", "frc2363", "frc2451", "frc2468", "frc2481", "frc2590",
    "frc2614", "frc2655", "frc2771", "frc2791", "frc2826", "frc2834",
    "frc3357", "frc3452", "frc3478", "frc3538", "frc3641", "frc3707",
    "frc3847", "frc3940", "frc4028", "frc4265", "frc4499", "frc4587",
    "frc4944", "frc4967", "frc5254", "frc5406", "frc6800"
]

teamList = iriTeams

for index, tm in enumerate(teamList):
    gen.progressBar(index, len(teamList))
    team = tba.team(tm)

    distTeams.append({
        'team': team['team_number'],
        'name': team['nickname'],
        'website': team['website'],
        'facebook': "",
        'github': "",
        'twitter': "",
        'instagram': "",
        'youtube': ""
    })

    for site in tba.team_profiles(team['team_number']):
        siteType = site['type'][:-8]