Skip to content

Commit 8e11fbd

Browse files
committed
add handling for TBD opponents
1 parent f449334 commit 8e11fbd

File tree

1 file changed

+52
-4
lines changed

1 file changed

+52
-4
lines changed

apps/flythel/flythel.star

Lines changed: 52 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,7 @@ DEFAULT_GAME_DATA = """
130130
}
131131
"""
132132
MLB_SCHED_ENDPOINT = "/api/v1/schedule/games/"
133+
MLB_TEAMS_ENDPOINT = "/api/v1/teams/{0}"
133134
MLB_BASE_URL = "https://statsapi.mlb.com{0}"
134135

135136
def main(config):
@@ -319,13 +320,16 @@ def render_preview(game, timezone, status, relative_or_absolute):
319320
else:
320321
footer = render_pitcher_preview(game, game_time.Message)
321322

323+
away_logo = TBD_LOGO if TEAM_INFO.get(away_id) == None else TEAM_INFO[away_id].Logo
324+
home_logo = TBD_LOGO if TEAM_INFO.get(home_id) == None else TEAM_INFO[home_id].Logo
325+
322326
return render.Column(
323327
cross_align = "center",
324328
children = [
325329
render.Row(
326330
children = [
327331
render.Image(
328-
src = TEAM_INFO[away_id].Logo,
332+
src = away_logo,
329333
width = 26,
330334
),
331335
render.Text(
@@ -334,7 +338,7 @@ def render_preview(game, timezone, status, relative_or_absolute):
334338
color = INNING_COLOR,
335339
),
336340
render.Image(
337-
src = TEAM_INFO[home_id].Logo,
341+
src = home_logo,
338342
width = 26,
339343
),
340344
],
@@ -353,12 +357,34 @@ def render_preview_msg(msg, flashy):
353357
) if not flashy else render_rainbow_word(msg, FIVE_WIDE_FONT),
354358
)
355359

360+
def get_tbd_team_info(team_id):
361+
query_params = {
362+
"fields": "teams,franchiseName",
363+
}
364+
url = MLB_BASE_URL.format(MLB_TEAMS_ENDPOINT.format(team_id))
365+
response = http.get(url, params = query_params, ttl_seconds = 86400)
366+
367+
if response.status_code != OK:
368+
# if the http request failed, return some basic info in format the consumer is expecting
369+
return json.decode("""{"teams": [{"franchiseName": "OPPONENT TBD"}]}""")
370+
return response.json()
371+
356372
def render_pitcher_preview(game, time_to_game):
357373
away = get_away_team_id(game)
358374
away_pitcher = get_away_probable_pitcher(game)
359375
home = get_home_team_id(game)
360376
home_pitcher = get_home_probable_pitcher(game)
361377

378+
away_tbd = False
379+
home_tbd = False
380+
info = ""
381+
if TEAM_INFO.get(away) == None:
382+
info = get_tbd_team_info(away)
383+
away_tbd = True
384+
elif TEAM_INFO.get(home) == None:
385+
info = get_tbd_team_info(home)
386+
home_tbd = True
387+
362388
return animation.Transformation(
363389
duration = 200,
364390
height = 24,
@@ -380,13 +406,13 @@ def render_pitcher_preview(game, time_to_game):
380406
content = time_to_game,
381407
),
382408
),
383-
render_player(away, away_pitcher),
409+
render_tbd(info) if away_tbd else render_player(away, away_pitcher),
384410
render.Box(
385411
height = 6,
386412
width = 64,
387413
child = render_american_word("versus", FIVE_WIDE_FONT),
388414
),
389-
render_player(home, home_pitcher),
415+
render_tbd(info) if home_tbd else render_player(home, home_pitcher),
390416
],
391417
),
392418
)
@@ -398,6 +424,23 @@ def build_keyframe(offset, pct):
398424
curve = "ease_in_out",
399425
)
400426

427+
def render_tbd(team):
428+
bg = "#808080"
429+
fg = "#D3D3D3"
430+
431+
sanitized = team.get("teams")[0].get("franchiseName")
432+
433+
return render.Box(
434+
height = 6,
435+
width = 64,
436+
color = bg,
437+
child = render.Text(
438+
font = FIVE_WIDE_FONT if len(sanitized) < 14 else SMALL_FONT,
439+
color = fg,
440+
content = sanitized,
441+
),
442+
)
443+
401444
def render_player(team, player):
402445
team = int(team)
403446
bg = TEAM_INFO[team].BackgroundColor
@@ -1150,6 +1193,11 @@ MIA_TEAM_ID = 146 #Miami Marlins
11501193
NYY_TEAM_ID = 147 #New York Yankees
11511194
MIL_TEAM_ID = 158 #Milwaukee Brewers
11521195

1196+
1197+
TBD_LOGO = base64.decode("""
1198+
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAIKADAAQAAAABAAAAIAAAAACshmLzAAAAiUlEQVRYCe2UQQrAMAgE29If+iE/5BtbKAgeRGpymIu5GFjaLMPgqarPAZ4LfPt7egrgBO7KARGp4jIzszL3ECcwBXACpYR/RXKh4swEzv6HE5gCOIFSwiiV3zO5PFuZOIEpgBNoS5htsxX5/BucwBTACbQlzDbhjpg4gSmAE2hLuCOcb784cQIvcaMS2ZZcHkMAAAAASUVORK5CYII=
1199+
""")
1200+
11531201
MLB_LEAGUE_IMAGE = base64.decode("""
11541202
iVBORw0KGgoAAAANSUhEUgAAAEAAAAAgCAYAAACinX6EAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAQKADAAQAAAABAAAAIAAAAADfYzX9AAACDElEQVRoBeVXvUoEMRDenHsrWIj4BxanNnY2FjYKp6iVpeDbWAvWtj6AjfoAKqgP4AtcJYKIHgda2FisZnWO7GTiJrlNNrcuHNl8O0nm+2YyybF4fiuNAn4+H64l727GNyTMFmjYDvQ1rrmwLS21+X4rYbZA8AJwYgdHJxI/Fo9ImA3AqtgCVFqD81TE+TdqTBlbwXsGUESAPBClbChh2q+X4lCrd68CUMRUXlO2WITGaKIaro17FUDbq19DSoTW6n5umkELojcBKDI5Jpqd55eeZNlImhKmC3gTQNchbPd0f4ahCG+FdvdKstEFghdgZmqC5IJFWD49JO2KQOcC3J0fk0dYkWM63+dW9vpm07vr/XeTl9jE2NS2rH2vWrfbe4vSNI0YY5kJL4imdwOnAuA0tREEz4HFSBZ3Bsow51sAO+yiL4pkeizWQgAuKs8EeEwKorf/AjbpD4T+aiH61Pw69cCbAECCchS+uWiLRKjNFrAVr/YC8KKYzE4q9XF6DIqr+k59ce3o55qQg6DjJQMqJf/NdK1zAXyl1nkRrJo8ZoyLojIDuOPww5MMcx9flEgBcNRwX1cA23G685dhRwpQxsQhzyFmgTMBQo/+2FIrixEpAFwvIYq4D/gwtx+dx8x95T2gjqSpgJEZQBnWCROPwn8ngEieB9X5RQgyx2dRxCTBB6r1lgGh1pQvQzmLGvG9jN0AAAAASUVORK5CYII=
11551203
""")

0 commit comments

Comments
 (0)