NHL: Fix playoff series wins (#740)
These would show as 0 when a series was won. It now properly shows 4.
This commit is contained in:
parent
68d1158c9b
commit
6441081358
@ -125,7 +125,7 @@ class ScoresBackend(SettingsBase):
|
|||||||
except (TypeError, ValueError):
|
except (TypeError, ValueError):
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
def get_nested(self, data, expr, callback=None, default=None):
|
def get_nested(self, data, expr, callback=None, default=''):
|
||||||
if callback is None:
|
if callback is None:
|
||||||
def callback(x):
|
def callback(x):
|
||||||
return x
|
return x
|
||||||
|
@ -212,12 +212,10 @@ class MLB(ScoresBackend):
|
|||||||
|
|
||||||
away_abbrev = self.get_nested(
|
away_abbrev = self.get_nested(
|
||||||
game,
|
game,
|
||||||
'teams:away:team:abbreviation',
|
'teams:away:team:abbreviation').upper()
|
||||||
default='').upper()
|
|
||||||
home_abbrev = self.get_nested(
|
home_abbrev = self.get_nested(
|
||||||
game,
|
game,
|
||||||
'teams:home:team:abbreviation',
|
'teams:home:team:abbreviation').upper()
|
||||||
default='').upper()
|
|
||||||
if away_abbrev and home_abbrev:
|
if away_abbrev and home_abbrev:
|
||||||
try:
|
try:
|
||||||
for team in (home_abbrev, away_abbrev):
|
for team in (home_abbrev, away_abbrev):
|
||||||
@ -240,27 +238,24 @@ class MLB(ScoresBackend):
|
|||||||
|
|
||||||
ret['id'] = game['gamePk']
|
ret['id'] = game['gamePk']
|
||||||
ret['inning'] = self.get_nested(linescore, 'currentInning', default=0)
|
ret['inning'] = self.get_nested(linescore, 'currentInning', default=0)
|
||||||
ret['outs'] = self.get_nested(linescore, 'outs', default='')
|
ret['outs'] = self.get_nested(linescore, 'outs')
|
||||||
ret['live_url'] = self.live_url % ret['id']
|
ret['live_url'] = self.live_url % ret['id']
|
||||||
|
|
||||||
for team in ('away', 'home'):
|
for team in ('away', 'home'):
|
||||||
team_data = self.get_nested(game, 'teams:%s' % team, default={})
|
team_data = self.get_nested(game, 'teams:%s' % team, default={})
|
||||||
|
|
||||||
if team == 'home':
|
if team == 'home':
|
||||||
ret['venue'] = self.get_nested(team_data, 'venue:name', default='')
|
ret['venue'] = self.get_nested(team_data, 'venue:name')
|
||||||
|
|
||||||
ret['%s_city' % team] = self.get_nested(
|
ret['%s_city' % team] = self.get_nested(
|
||||||
team_data,
|
team_data,
|
||||||
'team:locationName',
|
'team:locationName')
|
||||||
default='')
|
|
||||||
ret['%s_name' % team] = self.get_nested(
|
ret['%s_name' % team] = self.get_nested(
|
||||||
team_data,
|
team_data,
|
||||||
'team:teamName',
|
'team:teamName')
|
||||||
default='')
|
|
||||||
ret['%s_abbrev' % team] = self.get_nested(
|
ret['%s_abbrev' % team] = self.get_nested(
|
||||||
team_data,
|
team_data,
|
||||||
'team:abbreviation',
|
'team:abbreviation')
|
||||||
default='')
|
|
||||||
|
|
||||||
ret['%s_wins' % team] = self.get_nested(
|
ret['%s_wins' % team] = self.get_nested(
|
||||||
team_data,
|
team_data,
|
||||||
@ -279,7 +274,7 @@ class MLB(ScoresBackend):
|
|||||||
for key in ('delay', 'postponed', 'suspended'):
|
for key in ('delay', 'postponed', 'suspended'):
|
||||||
ret[key] = ''
|
ret[key] = ''
|
||||||
|
|
||||||
ret['status'] = self.get_nested(game, 'status:detailedState', default='').replace(' ', '_').lower()
|
ret['status'] = self.get_nested(game, 'status:detailedState').replace(' ', '_').lower()
|
||||||
|
|
||||||
if ret['status'] == 'delayed_start':
|
if ret['status'] == 'delayed_start':
|
||||||
ret['status'] = 'pregame'
|
ret['status'] = 'pregame'
|
||||||
@ -303,14 +298,14 @@ class MLB(ScoresBackend):
|
|||||||
except ValueError:
|
except ValueError:
|
||||||
ret['extra_innings'] = ''
|
ret['extra_innings'] = ''
|
||||||
|
|
||||||
top_bottom = self.get_nested(linescore, 'inningHalf', default='').lower()
|
top_bottom = self.get_nested(linescore, 'inningHalf').lower()
|
||||||
ret['top_bottom'] = self.inning_top if top_bottom == 'top' \
|
ret['top_bottom'] = self.inning_top if top_bottom == 'top' \
|
||||||
else self.inning_bottom if top_bottom == 'bottom' \
|
else self.inning_bottom if top_bottom == 'bottom' \
|
||||||
else ''
|
else ''
|
||||||
|
|
||||||
try:
|
try:
|
||||||
game_time = datetime.strptime(
|
game_time = datetime.strptime(
|
||||||
self.get_nested(game, 'gameDate', default=''),
|
self.get_nested(game, 'gameDate'),
|
||||||
'%Y-%m-%dT%H:%M:%SZ')
|
'%Y-%m-%dT%H:%M:%SZ')
|
||||||
except ValueError as exc:
|
except ValueError as exc:
|
||||||
# Log when the date retrieved from the API return doesn't match the
|
# Log when the date retrieved from the API return doesn't match the
|
||||||
|
@ -242,73 +242,100 @@ class NHL(ScoresBackend):
|
|||||||
def process_game(self, game):
|
def process_game(self, game):
|
||||||
ret = {}
|
ret = {}
|
||||||
|
|
||||||
def _update(ret_key, game_key=None, callback=None, default='?'):
|
|
||||||
ret[ret_key] = self.get_nested(game,
|
|
||||||
game_key or ret_key,
|
|
||||||
callback=callback,
|
|
||||||
default=default)
|
|
||||||
|
|
||||||
self.logger.debug('Processing %s game data: %s',
|
self.logger.debug('Processing %s game data: %s',
|
||||||
self.__class__.__name__, game)
|
self.__class__.__name__, game)
|
||||||
|
|
||||||
_update('id', 'gamePk')
|
linescore = self.get_nested(game, 'linescore', default={})
|
||||||
|
|
||||||
|
ret['id'] = game['gamePk']
|
||||||
ret['live_url'] = self.live_url % ret['id']
|
ret['live_url'] = self.live_url % ret['id']
|
||||||
_update('period', 'linescore:currentPeriodOrdinal', default='')
|
ret['period'] = self.get_nested(
|
||||||
_update('time_remaining',
|
linescore,
|
||||||
'linescore:currentPeriodTimeRemaining',
|
'currentPeriodOrdinal')
|
||||||
lambda x: x.capitalize(),
|
ret['time_remaining'] = self.get_nested(
|
||||||
default='')
|
linescore,
|
||||||
_update('venue', 'venue:name')
|
'currentPeriodTimeRemaining',
|
||||||
|
callback=lambda x: x.capitalize())
|
||||||
|
ret['venue'] = self.get_nested(
|
||||||
|
game,
|
||||||
|
'venue:name')
|
||||||
|
|
||||||
pp_strength = self.get_nested(game,
|
pp_strength = self.get_nested(linescore, 'powerPlayStrength')
|
||||||
'linescore:powerPlayStrength',
|
|
||||||
default='')
|
|
||||||
for team in ('home', 'away'):
|
|
||||||
_update('%s_score' % team,
|
|
||||||
'teams:%s:score' % team,
|
|
||||||
callback=self.force_int,
|
|
||||||
default=0)
|
|
||||||
_update('%s_wins' % team,
|
|
||||||
'teams:%s:leagueRecord:wins' % team,
|
|
||||||
callback=self.force_int,
|
|
||||||
default=0)
|
|
||||||
_update('%s_losses' % team,
|
|
||||||
'teams:%s:leagueRecord:losses' % team,
|
|
||||||
callback=self.force_int,
|
|
||||||
default=0)
|
|
||||||
_update('%s_otl' % team,
|
|
||||||
'teams:%s:leagueRecord:ot' % team,
|
|
||||||
callback=self.force_int,
|
|
||||||
default=0)
|
|
||||||
|
|
||||||
_update('%s_city' % team, 'teams:%s:team:shortName' % team)
|
for team in ('away', 'home'):
|
||||||
_update('%s_name' % team, 'teams:%s:team:teamName' % team)
|
team_data = self.get_nested(game, 'teams:%s' % team, default={})
|
||||||
_update('%s_abbrev' % team, 'teams:%s:team:abbreviation' % team)
|
|
||||||
_update('%s_power_play' % team,
|
if team == 'home':
|
||||||
'linescore:teams:%s:powerPlay' % team,
|
ret['venue'] = self.get_nested(team_data, 'venue:name')
|
||||||
lambda x: pp_strength if x and pp_strength != 'Even' else '')
|
|
||||||
_update('%s_empty_net' % team,
|
ret['%s_score' % team] = self.get_nested(
|
||||||
'linescore:teams:%s:goaliePulled' % team,
|
team_data,
|
||||||
lambda x: self.empty_net if x else '')
|
'score',
|
||||||
|
callback=self.force_int,
|
||||||
|
default=0)
|
||||||
|
ret['%s_wins' % team] = self.get_nested(
|
||||||
|
team_data,
|
||||||
|
'leagueRecord:wins',
|
||||||
|
callback=self.force_int,
|
||||||
|
default=0)
|
||||||
|
ret['%s_losses' % team] = self.get_nested(
|
||||||
|
team_data,
|
||||||
|
'leagueRecord:losses',
|
||||||
|
callback=self.force_int,
|
||||||
|
default=0)
|
||||||
|
ret['%s_otl' % team] = self.get_nested(
|
||||||
|
team_data,
|
||||||
|
'leagueRecord:ot',
|
||||||
|
callback=self.force_int,
|
||||||
|
default=0)
|
||||||
|
|
||||||
|
ret['%s_city' % team] = self.get_nested(
|
||||||
|
team_data,
|
||||||
|
'team:shortName')
|
||||||
|
ret['%s_name' % team] = self.get_nested(
|
||||||
|
team_data,
|
||||||
|
'team:teamName')
|
||||||
|
ret['%s_abbrev' % team] = self.get_nested(
|
||||||
|
team_data,
|
||||||
|
'team:abbreviation')
|
||||||
|
ret['%s_power_play' % team] = self.get_nested(
|
||||||
|
linescore,
|
||||||
|
'teams:%s:powerPlay' % team,
|
||||||
|
callback=lambda x: pp_strength if x and pp_strength != 'Even' else '')
|
||||||
|
ret['%s_empty_net' % team] = self.get_nested(
|
||||||
|
linescore,
|
||||||
|
'teams:%s:goaliePulled' % team,
|
||||||
|
callback=lambda x: self.empty_net if x else '')
|
||||||
|
|
||||||
if game.get('gameType') == 'P':
|
if game.get('gameType') == 'P':
|
||||||
for team in ('home', 'away'):
|
for team in ('home', 'away'):
|
||||||
# Series wins are the remainder of dividing wins by 4
|
# Calculate wins in current series. The win value will be the
|
||||||
ret['_'.join((team, 'wins'))] %= 4
|
# total wins thus far in the playoffs, so a positive win count
|
||||||
|
# which is equally divisible by 4 indicates 4 wins (i.e. a
|
||||||
|
# series win). Otherwise, the series win will be the remainder
|
||||||
|
# when dividing total wins by 4.
|
||||||
|
key = '%s_wins' % team
|
||||||
|
if ret[key] and ret[key] % 4 == 0:
|
||||||
|
ret[key] = 4
|
||||||
|
else:
|
||||||
|
ret[key] %= 4
|
||||||
|
|
||||||
# Series losses are the other team's wins
|
# Series losses are the other team's wins
|
||||||
ret['home_losses'] = ret['away_wins']
|
ret['home_losses'] = ret['away_wins']
|
||||||
ret['away_losses'] = ret['home_wins']
|
ret['away_losses'] = ret['home_wins']
|
||||||
|
|
||||||
_update('status',
|
ret['status'] = self.get_nested(
|
||||||
'status:abstractGameState',
|
game,
|
||||||
lambda x: x.lower().replace(' ', '_'))
|
'status:abstractGameState',
|
||||||
|
callback=lambda x: x.lower().replace(' ', '_'))
|
||||||
|
|
||||||
if ret['status'] == 'live':
|
if ret['status'] == 'live':
|
||||||
ret['status'] = 'in_progress'
|
ret['status'] = 'in_progress'
|
||||||
elif ret['status'] == 'final':
|
elif ret['status'] == 'final':
|
||||||
_update('overtime',
|
ret['overtime'] = self.get_nested(
|
||||||
'linescore:currentPeriodOrdinal',
|
linescore,
|
||||||
lambda x: x if 'OT' in x or x == 'SO' else '')
|
'currentPeriodOrdinal',
|
||||||
|
callback=lambda x: x if 'OT' in x or x == 'SO' else '')
|
||||||
elif ret['status'] != 'in_progress':
|
elif ret['status'] != 'in_progress':
|
||||||
ret['status'] = 'pregame'
|
ret['status'] = 'pregame'
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user