diff --git a/espnff/league.py b/espnff/league.py index 3cbe808..5521825 100644 --- a/espnff/league.py +++ b/espnff/league.py @@ -19,6 +19,7 @@ def __init__(self, league_id, year, espn_s2=None, swid=None): self.teams = [] self.espn_s2 = espn_s2 self.swid = swid + self.cookies = {} self._fetch_league() def __repr__(self): @@ -30,14 +31,14 @@ def _fetch_league(self): 'seasonId': self.year } - cookies = None + self.cookies = None if self.espn_s2 and self.swid: - cookies = { + self.cookies = { 'espn_s2': self.espn_s2, 'SWID': self.swid } - r = requests.get('%sleagueSettings' % (self.ENDPOINT, ), params=params, cookies=cookies) + r = requests.get('%sleagueSettings' % (self.ENDPOINT, ), params=params, cookies=self.cookies) self.status = r.status_code data = r.json() @@ -58,7 +59,7 @@ def _fetch_teams(self, data): teams = data['leaguesettings']['teams'] for team in teams: - self.teams.append(Team(teams[team])) + self.teams.append(Team(teams[team],self.league_id, self.year, self.cookies)) # replace opponentIds in schedule with team instances for team in self.teams: diff --git a/espnff/team.py b/espnff/team.py index 9c37691..34226b3 100644 --- a/espnff/team.py +++ b/espnff/team.py @@ -1,6 +1,7 @@ +import requests class Team(object): '''Teams are part of the league''' - def __init__(self, data): + def __init__(self, data, league_id, year, cookies): self.team_id = data['teamId'] self.team_abbrev = data['teamAbbrev'] self.team_name = "%s %s" % (data['teamLocation'], data['teamNickname']) @@ -15,6 +16,10 @@ def __init__(self, data): self.schedule = [] self.scores = [] self.mov = [] + self.league_id = league_id + self.cookies = cookies + self.year = year + self.ENDPOINT = "http://games.espn.com/ffl/api/v2/" self._fetch_schedule(data) def __repr__(self): @@ -39,7 +44,44 @@ def _fetch_schedule(self, data): self.scores.append(score) self.schedule.append(opponentId) - def get_roster(self, week): - '''Get roster for a given week''' - roster = None + def get_roster(self,week=None): + params = { + 'leagueId': self.league_id, + 'seasonId': self.year, + 'teamIds': self.team_id + } + roster_slots = {0:'QB',2:'RB',4:'WR',6:'TE',23:'FLEX',16:'D/ST',17:'K',20:'Bench'} + if week is not None: + params['scoringPeriodId'] = week + r = requests.get('%srosterInfo' % (self.ENDPOINT, ), params=params, cookies=self.cookies) + data = r.json() + + players = data['leagueRosters']['teams'][0]['slots'] + roster = [] + for p in players: + if 'player' in p: + player_name = ('%s %s' %(p['player']['firstName'],p['player']['lastName'])) + position = roster_slots[p['slotCategoryId']] + player_id = p['player']['playerId'] + params = { + 'leagueId' : self.league_id, + 'seasonId' : self.year, + 'teamIds' : self.team_id, + 'playerId' : player_id, + 'useCurrentPeriodRealStats' : 'true', + 'useCurrentPeriodProjectedStats' : 'true' + } + if week is not None: + params['scoringPeriodId'] = week + r = requests.get('%splayerInfo' % (self.ENDPOINT, ), params=params, cookies=self.cookies) + data = r.json() + if 'appliedStatTotal' in data['playerInfo']['players'][0]['currentPeriodRealStats']: + player_score = data['playerInfo']['players'][0]['currentPeriodRealStats']['appliedStatTotal'] + else: + player_score = 0 + if 'appliedStatTotal' in data['playerInfo']['players'][0]['currentPeriodProjectedStats']: + projected_score = data['playerInfo']['players'][0]['currentPeriodProjectedStats']['appliedStatTotal'] + else: + projected_score = 0 + roster.append({'name':player_name,'position':position,'player_id':player_id,'actual_score':player_score, 'projected_score':projected_score}) return roster