Untitled
unknown
python
2 years ago
14 kB
13
Indexable
# Team Insights
flavors = {
# Example: The Los Angeles Clippers are 4-0 (100%) vs. the Detroit Pistons since the start of 2020/2021
"overall": None, # NHL, MLB, NBA, NFL
# Example: The Detroit Pistons are 0-5 (0%) as an underdog in their last five games in 2022/2023
"asUnderdog": "as an underdog", # NHL, NBA, NFL
# Example: The Los Angeles Clippers are 5-0 (100%) at home as a favorite in their last five games in 2022/2023
"asFavorite": "as a favorite", # NHL, NBA, NFL
}
statuses = {
# Example: The Los Angeles Clippers are 4-0 (100%) vs. the Detroit Pistons since the start of 2020/2021
"all": None, # NHL, MLB, NBA, NFL
# Example: The over hit in 0 of the Los Angeles Clippers last 5 games at home off a loss in 2022/2023
"offLoss": "off a loss", # NHL, MLB, NBA, NFL
# Example: The New Orleans Pelicans are 0-5 (0%) against the spread on the road off two or more days rest over their last 6 games
"offTwoPlusDaysRest": "off two or more days rest", # NHL, NBA
# Example: The Charlotte Hornets are 1-5 (16.7%) against the spread off a win over their last 6 games
"offWin": "off a win", # NHL, MLB, NBA, NFL
# The over hit in 7 of the Utah Jazz last 23 games at home off one day rest since the start of 2021/2022
"offOneDayRest": "off one day rest", # NHL, NBA
# Example: The over hit in 8 of the Memphis Grizzlies last 9 games at home off two days rest across the regular season and playoffs since the start of 2020/2021
"offTwoDaysRest": "off two days rest", # NHL, NBA
# The over hit in 4 of the Toronto Raptors last 5 games vs. the Cleveland Cavaliers off a back to back since the start of 2014/2015
"onBackToBack": "off a back to back" # NBA
}
settings = {
# Example: The Los Angeles Clippers are 4-0 (100%) vs. the Detroit Pistons since the start of 2020/2021
None: None, # NHL, MLB, NBA, NFL
# Example: The Detroit Pistons are 0-5 (0%) at home in their last five games in 2022/2023
"atHome": "at home", # NHL, MLB, NBA, NFL
# Example: The over hit in 5 of the Los Angeles Clippers last 5 games on the road in 2022/2023
"onRoad": "on the road", # NHL, MLB, NBA, NFL
}
data_timeframes = {
# The Tampa Bay Buccaneers are 0-6-1 (.000) against the spread off a loss over their last 7 games
"regular season": None, # NHL, MLB, NBA, NFL
# Example: The over hit in 4 of the Arizona Cardinals last 15 games on the road off a loss across the regular season and playoffs since the start of 2020
"regular season and playoffs": "across the regular season and playoffs", # NHL, MLB, NBA, NFL
# Example: The Philadelphia Phillies are 1-1 (.500) vs. the Houston Astros at home in 2022
"playoffs": None, # NHL, MLB, NBA, NFL
}
percent_winning_time_frames = [
# Example: The Nashville Predators are 0-5-1 (0%) on the road off two or more days rest over their last 6 games
"twentyPercentWinning", # NHL, NFL
# Example: The Anaheim Ducks are 1-9-2 (8.3%) on the road off two or more days rest over their last 12 games
"twentyFivePercentWinning", # NHL, NFL
# Example: The Chicago Blackhawks are 3-12-1 (18.8%) off two or more days rest over their last 16 games
"thirtyPercentWinning", # NHL, NFL
# Example: The Anaheim Ducks are 4-17 (19%) off two or more days rest over their last 21 games
"thirtyFivePercentWinning", # NHL, NFL
# Example: The Anaheim Ducks are 15-4-1 (75%) vs. the Calgary Flames at home over their last 20 games
"sixtyFivePercentWinning", # NHL, MLB, NFL
# Example: The Colorado Avalanche are 18-1 (94.7%) off two or more days rest over their last 19 games
"seventyPercentWinning", # NHL, MLB, NFL
# Example: The Colorado Avalanche are 13-1 (92.9%) off two or more days rest over their last 14 games
"seventyFivePercentWinning", # NHL, MLB, NFL
# Example: The Washington Capitals are 7-0 (100%) vs. the Winnipeg Jets at home over their last 7 games
"eightyPercentWinning", # NHL, MLB, NFL
]
percent_covers_time_frames = [
# Example: The New Orleans Pelicans are 0-5 (0%) against the spread on the road off two or more days rest over their last 6 games
"twentyPercentCovers", # NBA, NFL
# Example: The San Antonio Spurs are 1-11 (7.7%) against the spread off a loss over their last 13 games
"twentyFivePercentCovers", # NBA, NFL
# Example: The Houston Rockets are 4-13 (23.5%) against the spread off two or more days rest over their last 17 games
"thirtyPercentCovers", # NBA, NFL
# Example: The Chicago Bulls are 5-14 (25%) against the spread at home over their last 20 games
"thirtyFivePercentCovers", # NBA, NFL
# Example: The Cincinnati Bengals are 44-22 (66.7%) against the spread on the road over their last 66 games
"sixtyFivePercentCovers", # NFL
# Example: The Cleveland Cavaliers are 14-5 (73.7%) against the spread at home over their last 19 games
"seventyPercentCovers", # NBA, NFL
# Example: The Philadelphia 76ers are 12-2 (85.7%) against the spread at home off a win over their last 14 games
"seventyFivePercentCovers", # NBA, NFL
# Example: The Portland Trail Blazers are 6-1 (85.7%) against the spread vs. the Charlotte Hornets at home over their last 7 games
"eightyPercentCovers", # NBA, NFL
]
percent_overs_time_frames = [
# Example: The over hit in 0 of the Los Angeles Clippers last 5 games at home off a loss in 2022/2023
"twentyPercentOvers", # NBA, NFL
# Example: The over hit in 2 of the Los Angeles Clippers last 13 games at home in 2022/2023
"twentyFivePercentOvers", # NBA, NFL
# Example: The over hit in 5 of the Cleveland Cavaliers last 19 games at home off two or more days rest since the start of 2019/2020
"thirtyPercentOvers", # NBA, NFL
# Example: The over hit in 6 of the Charlotte Hornets last 21 games at home since the start of 2021/2022
"thirtyFivePercentOvers", # NBA, NFL
# Example: The over hit in 14 of the Phoenix Suns last 21 games vs. the Denver Nuggets off a loss across the regular season and playoffs since the start of 2012/2013
"sixtyFivePercentOvers", # NBA, NFL
# Example: The over hit in 14 of the Charlotte Hornets last 19 games on the road since the start of 2021/2022
"seventyPercentOvers", # NBA, NFL
# Example: The over hit in 11 of the Charlotte Hornets last 14 games off two or more days rest since the start of 2021/2022
"seventyFivePercentOvers", # NBA, NFL
# Example: The over hit in 8 of the Los Angeles Clippers last 9 games on the road in 2022/2023
"eightyPercentOvers", # NBA, NFL
]
three_plus_time_frames = [
# Example: The Colorado Avalanche have won their last 14 games at home off two or more days rest
"threePlusWins", # NHL, MLB, NFL
# Example: The Anaheim Ducks have lost their last 7 games on the road off two or more days rest
"threePlusLosses", # NHL, NFL
# Example: The Cleveland Cavaliers have covered in their last 6 games off a loss
"threePlusCovers", # NBA, NFL
# Example: The Miami Heat have not covered in their last 3 games at home off a loss
"threePlusNonCovers", # NBA, NFL
# Example: The over has hit in the Detroit Pistons last 5 games at home off a loss
"threePlusOvers", # NBA, NFL
# Example: The under has hit in the Los Angeles Clippers last 5 games at home off a loss
"threePlusUnders", # NBA, NFL
]
last_n_time_frames = [
# Example: The Detroit Pistons are 0-5 (0%) in their last five games in 2022/2023
"lastFiveGames", # NHL, NBA, NFL
# Example: The Utah Jazz are 5-0 (100%) at home as an underdog in 2022/2023
"currentSeason", # NHL, MLB, NBA, NFL
# Example: The Los Angeles Clippers are 4-0 (100%) vs. the Detroit Pistons since the start of 2020/2021
"lastTwoSeasons", # NHL, NBA, NFL
# Example: The Calgary Flames are 4-0 (100%) vs. the Anaheim Ducks on the road over the last three seasons
"lastThreeSeasons", # NHL, MLB, NFL
]
def build_team_insight_description(dto: SRTeamBettingTrendDto, cur_season: str) -> Optional[str]:
if (dto.event.type.time_frame in percent_winning_time_frames or
(dto.event.market == 'moneyLine' and dto.event.type.time_frame in last_n_time_frames)):
record = str(dto.event.record.overall.wins)
record += f'-{dto.event.record.overall.losses}'
if _sum_ml_pushes(dto.event.record.overall):
record += f'-{_sum_ml_pushes(dto.event.record.overall)}'
insight_text = f'The {dto.event.team.name} are {record} ({str(dto.event.record.overall.wins_percent).replace(".0", "")}%)'
elif (dto.event.type.time_frame in percent_covers_time_frames or
(dto.event.market == 'spread' and dto.event.type.time_frame in last_n_time_frames)):
record = str(dto.event.record.spread.covered)
record += f'-{dto.event.record.spread.not_covered}'
if dto.event.record.spread.pushed:
record += f'-{dto.event.record.spread.pushed}'
insight_text = f'The {dto.event.team.name} are {record} ({str(dto.event.record.spread.covered_percent).replace(".0", "")}%) against the spread'
elif (dto.event.type.time_frame in percent_overs_time_frames or
(dto.event.market == 'overUnder' and dto.event.type.time_frame in last_n_time_frames)):
if dto.event.record.over_under.over == 1 and dto.event.record.overall.total == 1:
insight_text = f'The over hit in the {dto.event.team.name} only game'
else:
if dto.event.record.over_under.over > dto.event.record.over_under.under:
insight_text = f'The over hit in {dto.event.record.over_under.over} of the {dto.event.team.name} last {dto.event.record.overall.total} games ({str(dto.event.record.over_under.over_percent).replace(".0", "")}%)'
else:
insight_text = f'The under hit in {dto.event.record.over_under.under} of the {dto.event.team.name} last {dto.event.record.overall.total} games ({str(dto.event.record.over_under.under_percent).replace(".0", "")}%)'
elif dto.event.type.time_frame in three_plus_time_frames:
if dto.event.type.time_frame.endswith("PlusWins"):
insight_text = f'The {dto.event.team.name} have won their last {dto.event.record.overall.wins} games'
elif dto.event.type.time_frame.endswith("PlusLosses"):
insight_text = f'The {dto.event.team.name} have lost their last {dto.event.record.overall.losses} games'
elif dto.event.type.time_frame.endswith("PlusCovers"):
insight_text = f'The {dto.event.team.name} have covered in their last {dto.event.record.spread.covered} games'
elif dto.event.type.time_frame.endswith("PlusNonCovers"):
insight_text = f'The {dto.event.team.name} have not covered in their last {dto.event.record.spread.not_covered} games'
elif dto.event.type.time_frame.endswith("PlusOvers"):
insight_text = f'The over has hit in the {dto.event.team.name} last {dto.event.record.over_under.over} games'
elif dto.event.type.time_frame.endswith("PlusUnders"):
insight_text = f'The under has hit in the {dto.event.team.name} last {dto.event.record.over_under.under} games'
else:
logger.error(f'Unable to map Insight time_frame {dto.event.type.time_frame} in three_plus_time_frames to description for insight {dto.content}')
return None
else:
logger.error(f'Unable to map Insight time_frame {dto.event.type.time_frame} to description for insight {dto.content}')
return None
if dto.event.type.vs_opponent and dto.event.opponent:
insight_text += f' vs. the {dto.event.opponent.name}'
if dto.event.type.setting not in settings:
logger.error(f'Unable to map Insight setting {dto.event.type.setting} to description for insight {dto.content}')
return None
setting = settings[dto.event.type.setting]
if setting:
insight_text += f' {setting}'
if dto.event.type.status not in statuses:
logger.error(f'Unable to map Insight status {dto.event.type.status} to description for insight {dto.content}')
return None
status = statuses[dto.event.type.status]
if status:
insight_text += f' {status}'
if dto.event.type.flavor not in flavors:
logger.error(f'Unable to map Insight flavor {dto.event.type.flavor} to description for insight {dto.content}')
return None
flavor = flavors[dto.event.type.flavor]
if flavor:
insight_text += f' {flavor}'
if dto.event.type.time_frame == 'lastFiveGames' and dto.event.market in ['moneyLine', 'spread']:
insight_text += f' in their last five games'
if dto.event.type.time_frame == 'lastThreeSeasons':
insight_text += f' over the last three seasons'
elif (dto.event.type.time_frame in percent_winning_time_frames or
dto.event.type.time_frame in percent_covers_time_frames):
insight_text += f' over their last {dto.event.record.overall.total} games'
elif dto.event.type.time_frame not in three_plus_time_frames:
if dto.event.data_timeframe not in data_timeframes:
logger.error(f'Unable to map Insight data_timeframe {dto.event.data_timeframe} to description for insight {dto.content}')
return None
data_timeframe = data_timeframes[dto.event.data_timeframe]
if data_timeframe and dto.event.type.time_frame != 'currentSeason':
insight_text += f' {data_timeframe}'
season = dto.event.season.season_since if dto.event.season.season_since else dto.event.season.season
if season.startswith(str(cur_season)):
insight_text += f' in {season}'
else:
insight_text += f' since the start of {season}'
return insight_textEditor is loading...
Leave a Comment