|
2 | 2 | import time |
3 | 3 |
|
4 | 4 | """ OLED SETUP """ |
5 | | -from hardware.esp32_oled_2_8_inch import display, red, black, white, drk_grn |
6 | | -from hardware.esp32_oled_2_8_inch import score_font, date_font, sm_font, draw_outline_box, clear_fill |
| 5 | +from hardware.screen_runner import display, red, black, white, drk_grn |
| 6 | +from hardware.screen_runner import score_font, date_font, sm_font, draw_outline_box, clear_fill |
7 | 7 | from hardware.config import case |
8 | 8 | if case == "upright": |
9 | 9 | date_font=sm_font |
|
18 | 18 | from hardware.ntp_setup import utc_to_local |
19 | 19 | url='https://en.wikipedia.org/wiki/2023_Major_League_Baseball_season' |
20 | 20 | ua='Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36' |
21 | | - |
22 | | -""" Helper Credits |
23 | | -https://forum.micropython.org/viewtopic.php?t=4179 |
24 | | -https://stackoverflow.com/questions/3418050/how-to-map-month-name-to-month-number-and-vice-versa/33736132#33736132 |
25 | | -""" |
26 | 21 |
|
27 | 22 | """ Version """ |
28 | 23 | from .version import version |
29 | | - |
30 | | -def month_string_to_number(dstring): |
31 | | - m = { |
32 | | - 'jan': 1, |
33 | | - 'feb': 2, |
34 | | - 'mar': 3, |
35 | | - 'apr':4, |
36 | | - 'may':5, |
37 | | - 'jun':6, |
38 | | - 'jul':7, |
39 | | - 'aug':8, |
40 | | - 'sep':9, |
41 | | - 'oct':10, |
42 | | - 'nov':11, |
43 | | - 'dec':12 |
44 | | - } |
45 | | - s = dstring.strip()[:3].lower() |
46 | | - |
47 | | - try: |
48 | | - out = m[s] |
49 | | - return out |
50 | | - except: |
51 | | - raise ValueError('Not a month') |
52 | | - |
53 | | - |
| 24 | + |
54 | 25 | def get_start_date(url, ua): |
55 | 26 | import re |
56 | 27 | import mrequests |
57 | 28 | t=mrequests.get(url, headers={"User-Agent" : ua}) |
58 | 29 | _mtch= re.search("scheduled to begin on\s+([A-Z][a-z]+\s+[0-9]+)",t.text) |
| 30 | + print(f"m1 {_mtch}") |
59 | 31 | if _mtch: |
60 | 32 | try: |
61 | 33 | start_date = _mtch.group(1) |
62 | 34 | except IndexError as e: |
63 | 35 | start_date = "??" |
64 | 36 | finally: |
65 | | - print(f"start_date {start_date}") |
66 | | - mstart, dstart = start_date.split() |
67 | | - return (mstart, int(dstart)) |
68 | | - |
| 37 | + print(start_date) |
| 38 | + return start_date |
| 39 | + |
69 | 40 | def say_fetching(): |
70 | 41 | clear_fill() |
71 | 42 | draw_outline_box() |
72 | 43 | display.draw_text(5, 5,'Fetching Data',date_font, white, drk_grn) |
73 | 44 |
|
74 | | -def days_between(d1, d2): |
75 | | - import utime |
76 | | - d1 += (1, 0, 0, 0, 0) # ensure a time past midnight |
77 | | - d2 += (1, 0, 0, 0, 0) |
78 | | - return (utime.mktime(d1)// (24*3600)) - (utime.mktime(d2) // (24*3600)) |
79 | | - |
80 | | - |
81 | | -def days_till_open(): |
| 45 | +def days_til_open(): |
82 | 46 | say_fetching() |
83 | | - mstartn, dstarti = get_start_date(url, ua) |
84 | | - mstarti = month_string_to_number(mstartn) |
85 | | - if mstarti < mti: |
86 | | - ystarti = yri + 1 |
87 | | - else: |
88 | | - ystarti = yri |
89 | | - days_until = days_between( (ystarti, mstarti, dstarti) , (yri, mti, dyi) ) |
| 47 | + start_date=get_start_date(url, ua) |
90 | 48 | clear_fill() |
91 | 49 | draw_outline_box() |
92 | | - display.draw_text(5, start + (0 * delta) ,f"{mt}-{dy}-{short_yr}" , date_font, white ,drk_grn) |
93 | | - display.draw_text(5, start + (1 * delta) + 5 ,f"Opening Day is" , date_font, white ,drk_grn) |
94 | | - display.draw_text(5, start + (2 * delta) + 5 ,f"{mstartn} {dstarti}, {ystarti}" , date_font, white ,drk_grn) |
95 | | - display.draw_text(5, start + (3 * delta) + 5 ,f"{days_until} days away!" , score_font, white ,drk_grn) |
96 | | - |
| 50 | + display.draw_text(5, start + (0 * delta) ,f"{mt}-{dy}-{short_yr}", date_font, white , drk_grn) |
| 51 | + display.draw_text(5, start + (1 * delta) + 5 ,f"Opening" , score_font, white , drk_grn) |
| 52 | + display.draw_text(5, start + (2 * delta) + 5 ,f"Day is" , score_font, white , drk_grn) |
| 53 | + display.draw_text(5, start + (3 * delta) + 5 ,f"{start_date}" , score_font, white , drk_grn) |
| 54 | + |
97 | 55 | def get_x_p(pname): |
98 | 56 | """ Given 'John Smith (Jr.)' """ |
99 | 57 | """ return 'J.Smith' """ |
@@ -221,45 +179,49 @@ def get_score(): |
221 | 179 |
|
222 | 180 | while True: |
223 | 181 |
|
| 182 | + factory_test = "True" |
224 | 183 | import gc |
225 | 184 | gc.collect() |
226 | | - print(f"Version: {version}") |
227 | 185 |
|
228 | | - #Strings |
| 186 | + print(f"Version: {version}") |
229 | 187 | yr, mt, dy, hr, mn, s1, s2, s3 = [ f"{x:02d}" for x in time.localtime() ] |
230 | | - #Integers |
231 | | - yri, mti, dyi, hri, mni, s1i, s2i, s3i = [ int(x) for x in time.localtime() ] |
232 | | - |
233 | 188 | short_yr = f"{int( str(yr)[2:]):02d}" |
234 | | - short_yri = int(str(yri)[2:]) |
235 | | - |
236 | 189 | gm_dt = f"{mt}/{dy}/{yr}" |
237 | | - |
238 | 190 | print("Date: ",gm_dt) |
239 | 191 | params = {'teamId': team_id, 'startDate': gm_dt, 'endDate': gm_dt, 'sportId': '1', 'hydrate': 'decisions,linescore'} |
240 | 192 | print("Month is",mt) |
241 | 193 |
|
242 | | - if mti in [11,12,01,02,03]: |
| 194 | + if int(mt) not in [09,10,11,12,01,02,03]: |
243 | 195 |
|
244 | | - days_till_open() |
| 196 | + days_til_open() |
245 | 197 | time.sleep(60 * 60 * 24 ) # check back Tommorow |
246 | 198 |
|
247 | 199 | else: |
248 | 200 |
|
249 | | - try: |
250 | | - games = my_mlb_api.schedule(start_date=gm_dt, end_date=gm_dt, team=team_id, params=params) |
251 | | - except OSError as e: |
252 | | - #Catch this known weird, unrecoverable issue and reboot |
253 | | - #https://github.com/espressif/esp-idf/issues/2907 |
254 | | - if 'MBEDTLS_ERR_SSL_CONN_EOF' in str(e): |
255 | | - import machine |
256 | | - machine.reset() |
257 | | - else: |
258 | | - if not games: |
259 | | - no_gm() |
260 | | - time.sleep(60 * 60 * 4) # check back 4 hours from now |
| 201 | + if factory_test == "True": |
| 202 | + from .games import games |
| 203 | + |
| 204 | + for x in games: |
| 205 | + |
| 206 | + try: |
| 207 | + #from .games import games |
| 208 | + #games = my_mlb_api.schedule(start_date=gm_dt, end_date=gm_dt, team=team_id, params=params) |
| 209 | + games = [x] |
| 210 | + except OSError as e: |
| 211 | + #Catch this known weird, unrecoverable issue and reboot |
| 212 | + #https://github.com/espressif/esp-idf/issues/2907 |
| 213 | + if 'MBEDTLS_ERR_SSL_CONN_EOF' in str(e): |
| 214 | + import machine |
| 215 | + machine.reset() |
261 | 216 | else: |
262 | | - print(games[0]) |
263 | | - what_sleep=get_score() |
264 | | - print(f"Sleeping {what_sleep} seconds") |
265 | | - time.sleep(what_sleep) |
| 217 | + if not games: |
| 218 | + no_gm() |
| 219 | + time.sleep(60 * 60 * 4) # check back 4 hours from now |
| 220 | + else: |
| 221 | + print(games[0]) |
| 222 | + what_sleep=get_score() |
| 223 | + print(f"Sleeping {what_sleep} seconds") |
| 224 | + time.sleep(what_sleep) |
| 225 | + |
| 226 | + |
| 227 | + |
0 commit comments