jashdoshi77 commited on
Commit
10cc4da
·
1 Parent(s): 0906da9

Add pre-cached 2025-26 starters fallback for HF deployment

Browse files
Files changed (2) hide show
  1. data/api_data/starters_cache.json +1262 -0
  2. server.py +20 -1
data/api_data/starters_cache.json ADDED
@@ -0,0 +1,1262 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "ATL": [
3
+ {
4
+ "name": "Jalen Johnson",
5
+ "position": "C",
6
+ "pts": 23.0,
7
+ "reb": 10.2,
8
+ "ast": 8.0,
9
+ "min": 35.5
10
+ },
11
+ {
12
+ "name": "Dyson Daniels",
13
+ "position": "F",
14
+ "pts": 11.8,
15
+ "reb": 6.7,
16
+ "ast": 6.2,
17
+ "min": 34.1
18
+ },
19
+ {
20
+ "name": "Nickeil Alexander-Walker",
21
+ "position": "G-F",
22
+ "pts": 20.7,
23
+ "reb": 3.7,
24
+ "ast": 3.5,
25
+ "min": 32.9
26
+ },
27
+ {
28
+ "name": "Onyeka Okongwu",
29
+ "position": "F",
30
+ "pts": 16.1,
31
+ "reb": 7.9,
32
+ "ast": 3.4,
33
+ "min": 32.1
34
+ },
35
+ {
36
+ "name": "CJ McCollum",
37
+ "position": "G-F",
38
+ "pts": 18.6,
39
+ "reb": 3.5,
40
+ "ast": 3.6,
41
+ "min": 30.3
42
+ }
43
+ ],
44
+ "BKN": [
45
+ {
46
+ "name": "Michael Porter Jr.",
47
+ "position": "F",
48
+ "pts": 25.7,
49
+ "reb": 7.4,
50
+ "ast": 3.2,
51
+ "min": 33.2
52
+ },
53
+ {
54
+ "name": "Nic Claxton",
55
+ "position": "F",
56
+ "pts": 12.8,
57
+ "reb": 7.6,
58
+ "ast": 4.1,
59
+ "min": 29.7
60
+ },
61
+ {
62
+ "name": "Noah Clowney",
63
+ "position": "G-F",
64
+ "pts": 13.2,
65
+ "reb": 4.1,
66
+ "ast": 1.9,
67
+ "min": 28.6
68
+ },
69
+ {
70
+ "name": "Terance Mann",
71
+ "position": "G-F",
72
+ "pts": 7.8,
73
+ "reb": 3.4,
74
+ "ast": 3.8,
75
+ "min": 25.8
76
+ },
77
+ {
78
+ "name": "Cam Thomas",
79
+ "position": "G-F",
80
+ "pts": 17.3,
81
+ "reb": 1.8,
82
+ "ast": 3.1,
83
+ "min": 25.1
84
+ }
85
+ ],
86
+ "BOS": [
87
+ {
88
+ "name": "Derrick White",
89
+ "position": "G",
90
+ "pts": 17.7,
91
+ "reb": 4.6,
92
+ "ast": 5.4,
93
+ "min": 34.2
94
+ },
95
+ {
96
+ "name": "Jaylen Brown",
97
+ "position": "F",
98
+ "pts": 29.8,
99
+ "reb": 6.6,
100
+ "ast": 4.7,
101
+ "min": 34.1
102
+ },
103
+ {
104
+ "name": "Payton Pritchard",
105
+ "position": "G",
106
+ "pts": 16.6,
107
+ "reb": 4.4,
108
+ "ast": 5.3,
109
+ "min": 32.7
110
+ },
111
+ {
112
+ "name": "Neemias Queta",
113
+ "position": "C",
114
+ "pts": 10.2,
115
+ "reb": 8.2,
116
+ "ast": 1.4,
117
+ "min": 24.8
118
+ },
119
+ {
120
+ "name": "Anfernee Simons",
121
+ "position": "G-F",
122
+ "pts": 14.0,
123
+ "reb": 2.4,
124
+ "ast": 2.5,
125
+ "min": 24.2
126
+ }
127
+ ],
128
+ "CHA": [
129
+ {
130
+ "name": "Miles Bridges",
131
+ "position": "F",
132
+ "pts": 19.1,
133
+ "reb": 6.4,
134
+ "ast": 3.6,
135
+ "min": 33.0
136
+ },
137
+ {
138
+ "name": "Kon Knueppel",
139
+ "position": "F",
140
+ "pts": 19.0,
141
+ "reb": 5.3,
142
+ "ast": 3.5,
143
+ "min": 32.3
144
+ },
145
+ {
146
+ "name": "Brandon Miller",
147
+ "position": "G-F",
148
+ "pts": 19.8,
149
+ "reb": 4.3,
150
+ "ast": 3.4,
151
+ "min": 30.0
152
+ },
153
+ {
154
+ "name": "LaMelo Ball",
155
+ "position": "G",
156
+ "pts": 19.9,
157
+ "reb": 5.0,
158
+ "ast": 7.6,
159
+ "min": 27.5
160
+ },
161
+ {
162
+ "name": "Sion James",
163
+ "position": "G-F",
164
+ "pts": 6.3,
165
+ "reb": 3.5,
166
+ "ast": 2.0,
167
+ "min": 25.3
168
+ }
169
+ ],
170
+ "CHI": [
171
+ {
172
+ "name": "Josh Giddey",
173
+ "position": "C",
174
+ "pts": 19.2,
175
+ "reb": 8.9,
176
+ "ast": 9.0,
177
+ "min": 32.8
178
+ },
179
+ {
180
+ "name": "Nikola Vučević",
181
+ "position": "C",
182
+ "pts": 17.0,
183
+ "reb": 9.1,
184
+ "ast": 3.8,
185
+ "min": 30.7
186
+ },
187
+ {
188
+ "name": "Coby White",
189
+ "position": "G-F",
190
+ "pts": 18.5,
191
+ "reb": 3.5,
192
+ "ast": 4.6,
193
+ "min": 28.5
194
+ },
195
+ {
196
+ "name": "Matas Buzelis",
197
+ "position": "F",
198
+ "pts": 15.0,
199
+ "reb": 5.1,
200
+ "ast": 1.9,
201
+ "min": 27.9
202
+ },
203
+ {
204
+ "name": "Tre Jones",
205
+ "position": "G",
206
+ "pts": 12.4,
207
+ "reb": 3.0,
208
+ "ast": 5.8,
209
+ "min": 26.8
210
+ }
211
+ ],
212
+ "CLE": [
213
+ {
214
+ "name": "Donovan Mitchell",
215
+ "position": "G",
216
+ "pts": 29.0,
217
+ "reb": 4.8,
218
+ "ast": 5.7,
219
+ "min": 34.0
220
+ },
221
+ {
222
+ "name": "Evan Mobley",
223
+ "position": "C",
224
+ "pts": 17.8,
225
+ "reb": 8.6,
226
+ "ast": 4.2,
227
+ "min": 33.2
228
+ },
229
+ {
230
+ "name": "Darius Garland",
231
+ "position": "G",
232
+ "pts": 18.0,
233
+ "reb": 2.4,
234
+ "ast": 6.9,
235
+ "min": 30.5
236
+ },
237
+ {
238
+ "name": "Jaylon Tyson",
239
+ "position": "F",
240
+ "pts": 13.5,
241
+ "reb": 5.4,
242
+ "ast": 2.1,
243
+ "min": 27.4
244
+ },
245
+ {
246
+ "name": "De'Andre Hunter",
247
+ "position": "G-F",
248
+ "pts": 14.1,
249
+ "reb": 4.4,
250
+ "ast": 2.2,
251
+ "min": 26.9
252
+ }
253
+ ],
254
+ "DAL": [
255
+ {
256
+ "name": "Cooper Flagg",
257
+ "position": "F",
258
+ "pts": 18.8,
259
+ "reb": 6.3,
260
+ "ast": 4.1,
261
+ "min": 33.9
262
+ },
263
+ {
264
+ "name": "P.J. Washington",
265
+ "position": "F",
266
+ "pts": 14.6,
267
+ "reb": 7.4,
268
+ "ast": 1.9,
269
+ "min": 31.4
270
+ },
271
+ {
272
+ "name": "Anthony Davis",
273
+ "position": "C",
274
+ "pts": 20.4,
275
+ "reb": 11.1,
276
+ "ast": 2.8,
277
+ "min": 31.3
278
+ },
279
+ {
280
+ "name": "Max Christie",
281
+ "position": "G-F",
282
+ "pts": 12.9,
283
+ "reb": 3.5,
284
+ "ast": 2.2,
285
+ "min": 29.1
286
+ },
287
+ {
288
+ "name": "Naji Marshall",
289
+ "position": "G-F",
290
+ "pts": 14.2,
291
+ "reb": 4.7,
292
+ "ast": 2.9,
293
+ "min": 28.9
294
+ }
295
+ ],
296
+ "DEN": [
297
+ {
298
+ "name": "Jamal Murray",
299
+ "position": "G",
300
+ "pts": 26.0,
301
+ "reb": 4.4,
302
+ "ast": 7.4,
303
+ "min": 35.4
304
+ },
305
+ {
306
+ "name": "Nikola Jokić",
307
+ "position": "C",
308
+ "pts": 29.6,
309
+ "reb": 12.2,
310
+ "ast": 11.0,
311
+ "min": 34.6
312
+ },
313
+ {
314
+ "name": "Cameron Johnson",
315
+ "position": "G-F",
316
+ "pts": 11.7,
317
+ "reb": 3.6,
318
+ "ast": 2.4,
319
+ "min": 30.6
320
+ },
321
+ {
322
+ "name": "Peyton Watson",
323
+ "position": "G-F",
324
+ "pts": 14.0,
325
+ "reb": 5.0,
326
+ "ast": 1.8,
327
+ "min": 29.7
328
+ },
329
+ {
330
+ "name": "Christian Braun",
331
+ "position": "G-F",
332
+ "pts": 9.5,
333
+ "reb": 4.2,
334
+ "ast": 2.5,
335
+ "min": 28.9
336
+ }
337
+ ],
338
+ "DET": [
339
+ {
340
+ "name": "Cade Cunningham",
341
+ "position": "G",
342
+ "pts": 25.7,
343
+ "reb": 5.9,
344
+ "ast": 9.8,
345
+ "min": 35.5
346
+ },
347
+ {
348
+ "name": "Duncan Robinson",
349
+ "position": "G-F",
350
+ "pts": 12.1,
351
+ "reb": 2.7,
352
+ "ast": 1.9,
353
+ "min": 28.9
354
+ },
355
+ {
356
+ "name": "Jalen Duren",
357
+ "position": "C",
358
+ "pts": 17.8,
359
+ "reb": 10.7,
360
+ "ast": 1.8,
361
+ "min": 28.3
362
+ },
363
+ {
364
+ "name": "Tobias Harris",
365
+ "position": "G-F",
366
+ "pts": 13.7,
367
+ "reb": 4.6,
368
+ "ast": 2.5,
369
+ "min": 27.4
370
+ },
371
+ {
372
+ "name": "Ausar Thompson",
373
+ "position": "F",
374
+ "pts": 10.8,
375
+ "reb": 5.9,
376
+ "ast": 2.6,
377
+ "min": 25.9
378
+ }
379
+ ],
380
+ "GSW": [
381
+ {
382
+ "name": "Stephen Curry",
383
+ "position": "G",
384
+ "pts": 27.1,
385
+ "reb": 3.7,
386
+ "ast": 5.1,
387
+ "min": 31.6
388
+ },
389
+ {
390
+ "name": "Jimmy Butler III",
391
+ "position": "F",
392
+ "pts": 20.0,
393
+ "reb": 5.6,
394
+ "ast": 4.9,
395
+ "min": 31.1
396
+ },
397
+ {
398
+ "name": "Draymond Green",
399
+ "position": "G",
400
+ "pts": 8.8,
401
+ "reb": 5.8,
402
+ "ast": 5.2,
403
+ "min": 26.8
404
+ },
405
+ {
406
+ "name": "Brandin Podziemski",
407
+ "position": "G-F",
408
+ "pts": 12.3,
409
+ "reb": 4.4,
410
+ "ast": 3.2,
411
+ "min": 26.7
412
+ },
413
+ {
414
+ "name": "Jonathan Kuminga",
415
+ "position": "F",
416
+ "pts": 12.2,
417
+ "reb": 6.1,
418
+ "ast": 2.5,
419
+ "min": 24.6
420
+ }
421
+ ],
422
+ "HOU": [
423
+ {
424
+ "name": "Amen Thompson",
425
+ "position": "F",
426
+ "pts": 18.5,
427
+ "reb": 7.7,
428
+ "ast": 5.1,
429
+ "min": 37.2
430
+ },
431
+ {
432
+ "name": "Kevin Durant",
433
+ "position": "F",
434
+ "pts": 25.9,
435
+ "reb": 5.4,
436
+ "ast": 4.6,
437
+ "min": 36.6
438
+ },
439
+ {
440
+ "name": "Jabari Smith Jr.",
441
+ "position": "F",
442
+ "pts": 15.5,
443
+ "reb": 6.9,
444
+ "ast": 1.8,
445
+ "min": 34.9
446
+ },
447
+ {
448
+ "name": "Alperen Sengun",
449
+ "position": "C",
450
+ "pts": 21.5,
451
+ "reb": 9.3,
452
+ "ast": 6.4,
453
+ "min": 34.2
454
+ },
455
+ {
456
+ "name": "Reed Sheppard",
457
+ "position": "G-F",
458
+ "pts": 13.0,
459
+ "reb": 2.6,
460
+ "ast": 3.2,
461
+ "min": 25.0
462
+ }
463
+ ],
464
+ "IND": [
465
+ {
466
+ "name": "Pascal Siakam",
467
+ "position": "F",
468
+ "pts": 23.6,
469
+ "reb": 6.9,
470
+ "ast": 4.0,
471
+ "min": 33.9
472
+ },
473
+ {
474
+ "name": "Bennedict Mathurin",
475
+ "position": "F",
476
+ "pts": 17.8,
477
+ "reb": 5.5,
478
+ "ast": 2.2,
479
+ "min": 32.1
480
+ },
481
+ {
482
+ "name": "Andrew Nembhard",
483
+ "position": "G",
484
+ "pts": 17.6,
485
+ "reb": 2.6,
486
+ "ast": 7.1,
487
+ "min": 31.9
488
+ },
489
+ {
490
+ "name": "Aaron Nesmith",
491
+ "position": "F",
492
+ "pts": 13.4,
493
+ "reb": 5.3,
494
+ "ast": 2.0,
495
+ "min": 30.3
496
+ },
497
+ {
498
+ "name": "Obi Toppin",
499
+ "position": "F",
500
+ "pts": 14.0,
501
+ "reb": 6.7,
502
+ "ast": 1.7,
503
+ "min": 27.4
504
+ }
505
+ ],
506
+ "LAC": [
507
+ {
508
+ "name": "James Harden",
509
+ "position": "G",
510
+ "pts": 26.0,
511
+ "reb": 4.8,
512
+ "ast": 8.0,
513
+ "min": 35.6
514
+ },
515
+ {
516
+ "name": "Kawhi Leonard",
517
+ "position": "F",
518
+ "pts": 28.2,
519
+ "reb": 6.3,
520
+ "ast": 3.5,
521
+ "min": 33.8
522
+ },
523
+ {
524
+ "name": "Ivica Zubac",
525
+ "position": "C",
526
+ "pts": 14.8,
527
+ "reb": 10.8,
528
+ "ast": 2.4,
529
+ "min": 31.2
530
+ },
531
+ {
532
+ "name": "Kris Dunn",
533
+ "position": "G-F",
534
+ "pts": 8.0,
535
+ "reb": 3.0,
536
+ "ast": 3.2,
537
+ "min": 27.5
538
+ },
539
+ {
540
+ "name": "John Collins",
541
+ "position": "G-F",
542
+ "pts": 13.3,
543
+ "reb": 4.9,
544
+ "ast": 0.8,
545
+ "min": 27.4
546
+ }
547
+ ],
548
+ "LAL": [
549
+ {
550
+ "name": "Luka Dončić",
551
+ "position": "F",
552
+ "pts": 33.5,
553
+ "reb": 7.7,
554
+ "ast": 8.7,
555
+ "min": 36.3
556
+ },
557
+ {
558
+ "name": "Austin Reaves",
559
+ "position": "G",
560
+ "pts": 26.6,
561
+ "reb": 5.2,
562
+ "ast": 6.3,
563
+ "min": 35.3
564
+ },
565
+ {
566
+ "name": "LeBron James",
567
+ "position": "F",
568
+ "pts": 22.5,
569
+ "reb": 6.0,
570
+ "ast": 7.0,
571
+ "min": 33.2
572
+ },
573
+ {
574
+ "name": "Rui Hachimura",
575
+ "position": "G-F",
576
+ "pts": 12.0,
577
+ "reb": 3.5,
578
+ "ast": 0.8,
579
+ "min": 30.7
580
+ },
581
+ {
582
+ "name": "Deandre Ayton",
583
+ "position": "C",
584
+ "pts": 13.9,
585
+ "reb": 8.8,
586
+ "ast": 0.9,
587
+ "min": 29.1
588
+ }
589
+ ],
590
+ "MEM": [
591
+ {
592
+ "name": "Jaren Jackson Jr.",
593
+ "position": "F",
594
+ "pts": 18.8,
595
+ "reb": 5.5,
596
+ "ast": 1.8,
597
+ "min": 30.5
598
+ },
599
+ {
600
+ "name": "Ja Morant",
601
+ "position": "G",
602
+ "pts": 19.3,
603
+ "reb": 3.3,
604
+ "ast": 7.8,
605
+ "min": 28.3
606
+ },
607
+ {
608
+ "name": "Santi Aldama",
609
+ "position": "F",
610
+ "pts": 14.0,
611
+ "reb": 6.7,
612
+ "ast": 3.0,
613
+ "min": 28.0
614
+ },
615
+ {
616
+ "name": "Jaylen Wells",
617
+ "position": "G-F",
618
+ "pts": 11.7,
619
+ "reb": 3.5,
620
+ "ast": 1.7,
621
+ "min": 27.1
622
+ },
623
+ {
624
+ "name": "Cedric Coward",
625
+ "position": "F",
626
+ "pts": 14.0,
627
+ "reb": 6.5,
628
+ "ast": 2.9,
629
+ "min": 26.6
630
+ }
631
+ ],
632
+ "MIA": [
633
+ {
634
+ "name": "Tyler Herro",
635
+ "position": "G-F",
636
+ "pts": 21.9,
637
+ "reb": 4.7,
638
+ "ast": 2.7,
639
+ "min": 31.7
640
+ },
641
+ {
642
+ "name": "Andrew Wiggins",
643
+ "position": "G-F",
644
+ "pts": 15.9,
645
+ "reb": 4.9,
646
+ "ast": 2.8,
647
+ "min": 31.6
648
+ },
649
+ {
650
+ "name": "Norman Powell",
651
+ "position": "G-F",
652
+ "pts": 23.7,
653
+ "reb": 3.7,
654
+ "ast": 2.7,
655
+ "min": 30.9
656
+ },
657
+ {
658
+ "name": "Bam Adebayo",
659
+ "position": "C",
660
+ "pts": 17.2,
661
+ "reb": 9.6,
662
+ "ast": 2.8,
663
+ "min": 30.8
664
+ },
665
+ {
666
+ "name": "Davion Mitchell",
667
+ "position": "G",
668
+ "pts": 9.0,
669
+ "reb": 2.6,
670
+ "ast": 7.2,
671
+ "min": 29.2
672
+ }
673
+ ],
674
+ "MIL": [
675
+ {
676
+ "name": "Kevin Porter Jr.",
677
+ "position": "G",
678
+ "pts": 16.8,
679
+ "reb": 5.0,
680
+ "ast": 7.4,
681
+ "min": 33.6
682
+ },
683
+ {
684
+ "name": "Ryan Rollins",
685
+ "position": "G",
686
+ "pts": 16.2,
687
+ "reb": 4.5,
688
+ "ast": 5.5,
689
+ "min": 31.6
690
+ },
691
+ {
692
+ "name": "AJ Green",
693
+ "position": "G-F",
694
+ "pts": 10.4,
695
+ "reb": 2.6,
696
+ "ast": 2.0,
697
+ "min": 29.5
698
+ },
699
+ {
700
+ "name": "Giannis Antetokounmpo",
701
+ "position": "C",
702
+ "pts": 28.5,
703
+ "reb": 9.8,
704
+ "ast": 5.5,
705
+ "min": 29.0
706
+ },
707
+ {
708
+ "name": "Myles Turner",
709
+ "position": "F",
710
+ "pts": 12.2,
711
+ "reb": 5.3,
712
+ "ast": 1.6,
713
+ "min": 28.3
714
+ }
715
+ ],
716
+ "MIN": [
717
+ {
718
+ "name": "Anthony Edwards",
719
+ "position": "G-F",
720
+ "pts": 29.9,
721
+ "reb": 5.0,
722
+ "ast": 3.7,
723
+ "min": 35.2
724
+ },
725
+ {
726
+ "name": "Julius Randle",
727
+ "position": "F",
728
+ "pts": 22.4,
729
+ "reb": 7.0,
730
+ "ast": 5.4,
731
+ "min": 33.7
732
+ },
733
+ {
734
+ "name": "Jaden McDaniels",
735
+ "position": "G-F",
736
+ "pts": 15.0,
737
+ "reb": 4.5,
738
+ "ast": 2.9,
739
+ "min": 32.2
740
+ },
741
+ {
742
+ "name": "Donte DiVincenzo",
743
+ "position": "G-F",
744
+ "pts": 13.2,
745
+ "reb": 4.6,
746
+ "ast": 4.3,
747
+ "min": 31.8
748
+ },
749
+ {
750
+ "name": "Rudy Gobert",
751
+ "position": "C",
752
+ "pts": 11.0,
753
+ "reb": 11.4,
754
+ "ast": 1.8,
755
+ "min": 31.7
756
+ }
757
+ ],
758
+ "NOP": [
759
+ {
760
+ "name": "Trey Murphy III",
761
+ "position": "F",
762
+ "pts": 22.2,
763
+ "reb": 6.1,
764
+ "ast": 3.6,
765
+ "min": 35.7
766
+ },
767
+ {
768
+ "name": "Saddiq Bey",
769
+ "position": "F",
770
+ "pts": 15.1,
771
+ "reb": 5.7,
772
+ "ast": 2.2,
773
+ "min": 29.9
774
+ },
775
+ {
776
+ "name": "Zion Williamson",
777
+ "position": "F",
778
+ "pts": 22.5,
779
+ "reb": 5.8,
780
+ "ast": 3.5,
781
+ "min": 29.3
782
+ },
783
+ {
784
+ "name": "Herbert Jones",
785
+ "position": "G-F",
786
+ "pts": 9.5,
787
+ "reb": 3.7,
788
+ "ast": 2.3,
789
+ "min": 28.3
790
+ },
791
+ {
792
+ "name": "Jeremiah Fears",
793
+ "position": "G-F",
794
+ "pts": 13.9,
795
+ "reb": 3.7,
796
+ "ast": 3.2,
797
+ "min": 26.5
798
+ }
799
+ ],
800
+ "NYK": [
801
+ {
802
+ "name": "Mikal Bridges",
803
+ "position": "G-F",
804
+ "pts": 15.9,
805
+ "reb": 4.5,
806
+ "ast": 4.2,
807
+ "min": 34.9
808
+ },
809
+ {
810
+ "name": "Jalen Brunson",
811
+ "position": "G",
812
+ "pts": 28.1,
813
+ "reb": 3.2,
814
+ "ast": 6.1,
815
+ "min": 34.5
816
+ },
817
+ {
818
+ "name": "OG Anunoby",
819
+ "position": "F",
820
+ "pts": 15.8,
821
+ "reb": 5.5,
822
+ "ast": 2.2,
823
+ "min": 32.8
824
+ },
825
+ {
826
+ "name": "Karl-Anthony Towns",
827
+ "position": "C",
828
+ "pts": 21.0,
829
+ "reb": 11.6,
830
+ "ast": 3.0,
831
+ "min": 32.3
832
+ },
833
+ {
834
+ "name": "Josh Hart",
835
+ "position": "F",
836
+ "pts": 12.0,
837
+ "reb": 7.6,
838
+ "ast": 5.2,
839
+ "min": 30.5
840
+ }
841
+ ],
842
+ "OKC": [
843
+ {
844
+ "name": "Shai Gilgeous-Alexander",
845
+ "position": "G",
846
+ "pts": 31.8,
847
+ "reb": 4.3,
848
+ "ast": 6.2,
849
+ "min": 33.4
850
+ },
851
+ {
852
+ "name": "Jalen Williams",
853
+ "position": "G",
854
+ "pts": 16.8,
855
+ "reb": 4.8,
856
+ "ast": 5.6,
857
+ "min": 29.6
858
+ },
859
+ {
860
+ "name": "Chet Holmgren",
861
+ "position": "C",
862
+ "pts": 18.0,
863
+ "reb": 8.4,
864
+ "ast": 1.6,
865
+ "min": 29.0
866
+ },
867
+ {
868
+ "name": "Isaiah Hartenstein",
869
+ "position": "C",
870
+ "pts": 11.2,
871
+ "reb": 10.4,
872
+ "ast": 3.0,
873
+ "min": 26.9
874
+ },
875
+ {
876
+ "name": "Luguentz Dort",
877
+ "position": "G-F",
878
+ "pts": 8.5,
879
+ "reb": 3.7,
880
+ "ast": 1.1,
881
+ "min": 26.8
882
+ }
883
+ ],
884
+ "ORL": [
885
+ {
886
+ "name": "Desmond Bane",
887
+ "position": "G-F",
888
+ "pts": 18.9,
889
+ "reb": 4.5,
890
+ "ast": 4.5,
891
+ "min": 33.9
892
+ },
893
+ {
894
+ "name": "Paolo Banchero",
895
+ "position": "C",
896
+ "pts": 20.9,
897
+ "reb": 8.8,
898
+ "ast": 5.0,
899
+ "min": 33.9
900
+ },
901
+ {
902
+ "name": "Franz Wagner",
903
+ "position": "F",
904
+ "pts": 22.2,
905
+ "reb": 6.1,
906
+ "ast": 3.6,
907
+ "min": 32.8
908
+ },
909
+ {
910
+ "name": "Anthony Black",
911
+ "position": "G-F",
912
+ "pts": 15.9,
913
+ "reb": 4.1,
914
+ "ast": 4.0,
915
+ "min": 30.6
916
+ },
917
+ {
918
+ "name": "Wendell Carter Jr.",
919
+ "position": "F",
920
+ "pts": 12.5,
921
+ "reb": 7.7,
922
+ "ast": 2.2,
923
+ "min": 30.3
924
+ }
925
+ ],
926
+ "PHI": [
927
+ {
928
+ "name": "Tyrese Maxey",
929
+ "position": "G",
930
+ "pts": 30.0,
931
+ "reb": 4.4,
932
+ "ast": 6.7,
933
+ "min": 39.5
934
+ },
935
+ {
936
+ "name": "VJ Edgecombe",
937
+ "position": "F",
938
+ "pts": 15.8,
939
+ "reb": 5.3,
940
+ "ast": 4.2,
941
+ "min": 35.8
942
+ },
943
+ {
944
+ "name": "Kelly Oubre Jr.",
945
+ "position": "G-F",
946
+ "pts": 14.1,
947
+ "reb": 4.6,
948
+ "ast": 1.3,
949
+ "min": 31.9
950
+ },
951
+ {
952
+ "name": "Quentin Grimes",
953
+ "position": "G-F",
954
+ "pts": 13.8,
955
+ "reb": 4.0,
956
+ "ast": 3.7,
957
+ "min": 31.2
958
+ },
959
+ {
960
+ "name": "Paul George",
961
+ "position": "F",
962
+ "pts": 15.9,
963
+ "reb": 5.2,
964
+ "ast": 3.7,
965
+ "min": 29.8
966
+ }
967
+ ],
968
+ "PHX": [
969
+ {
970
+ "name": "Devin Booker",
971
+ "position": "G",
972
+ "pts": 25.3,
973
+ "reb": 4.0,
974
+ "ast": 6.3,
975
+ "min": 34.1
976
+ },
977
+ {
978
+ "name": "Dillon Brooks",
979
+ "position": "G-F",
980
+ "pts": 20.5,
981
+ "reb": 3.4,
982
+ "ast": 1.7,
983
+ "min": 30.8
984
+ },
985
+ {
986
+ "name": "Grayson Allen",
987
+ "position": "G-F",
988
+ "pts": 16.3,
989
+ "reb": 2.9,
990
+ "ast": 3.8,
991
+ "min": 29.4
992
+ },
993
+ {
994
+ "name": "Royce O'Neale",
995
+ "position": "G-F",
996
+ "pts": 10.5,
997
+ "reb": 5.0,
998
+ "ast": 2.9,
999
+ "min": 29.3
1000
+ },
1001
+ {
1002
+ "name": "Collin Gillespie",
1003
+ "position": "G-F",
1004
+ "pts": 13.4,
1005
+ "reb": 4.1,
1006
+ "ast": 4.8,
1007
+ "min": 28.1
1008
+ }
1009
+ ],
1010
+ "POR": [
1011
+ {
1012
+ "name": "Deni Avdija",
1013
+ "position": "F",
1014
+ "pts": 26.2,
1015
+ "reb": 7.1,
1016
+ "ast": 6.9,
1017
+ "min": 35.3
1018
+ },
1019
+ {
1020
+ "name": "Toumani Camara",
1021
+ "position": "G-F",
1022
+ "pts": 12.9,
1023
+ "reb": 5.0,
1024
+ "ast": 2.6,
1025
+ "min": 33.8
1026
+ },
1027
+ {
1028
+ "name": "Shaedon Sharpe",
1029
+ "position": "G-F",
1030
+ "pts": 21.8,
1031
+ "reb": 4.5,
1032
+ "ast": 2.6,
1033
+ "min": 30.0
1034
+ },
1035
+ {
1036
+ "name": "Jrue Holiday",
1037
+ "position": "G",
1038
+ "pts": 15.1,
1039
+ "reb": 5.0,
1040
+ "ast": 7.1,
1041
+ "min": 29.9
1042
+ },
1043
+ {
1044
+ "name": "Jerami Grant",
1045
+ "position": "G-F",
1046
+ "pts": 19.9,
1047
+ "reb": 3.9,
1048
+ "ast": 2.6,
1049
+ "min": 29.8
1050
+ }
1051
+ ],
1052
+ "SAC": [
1053
+ {
1054
+ "name": "Keegan Murray",
1055
+ "position": "C",
1056
+ "pts": 14.6,
1057
+ "reb": 6.1,
1058
+ "ast": 1.5,
1059
+ "min": 35.9
1060
+ },
1061
+ {
1062
+ "name": "DeMar DeRozan",
1063
+ "position": "G-F",
1064
+ "pts": 19.1,
1065
+ "reb": 3.3,
1066
+ "ast": 4.0,
1067
+ "min": 33.6
1068
+ },
1069
+ {
1070
+ "name": "Zach LaVine",
1071
+ "position": "G-F",
1072
+ "pts": 19.8,
1073
+ "reb": 2.9,
1074
+ "ast": 2.3,
1075
+ "min": 32.4
1076
+ },
1077
+ {
1078
+ "name": "Domantas Sabonis",
1079
+ "position": "C",
1080
+ "pts": 15.4,
1081
+ "reb": 11.4,
1082
+ "ast": 3.6,
1083
+ "min": 30.2
1084
+ },
1085
+ {
1086
+ "name": "Russell Westbrook",
1087
+ "position": "F",
1088
+ "pts": 15.4,
1089
+ "reb": 6.2,
1090
+ "ast": 7.0,
1091
+ "min": 29.7
1092
+ }
1093
+ ],
1094
+ "SAS": [
1095
+ {
1096
+ "name": "De'Aaron Fox",
1097
+ "position": "G",
1098
+ "pts": 20.2,
1099
+ "reb": 4.1,
1100
+ "ast": 6.0,
1101
+ "min": 32.4
1102
+ },
1103
+ {
1104
+ "name": "Devin Vassell",
1105
+ "position": "G-F",
1106
+ "pts": 15.0,
1107
+ "reb": 4.0,
1108
+ "ast": 2.4,
1109
+ "min": 31.9
1110
+ },
1111
+ {
1112
+ "name": "Stephon Castle",
1113
+ "position": "G",
1114
+ "pts": 16.9,
1115
+ "reb": 5.0,
1116
+ "ast": 7.0,
1117
+ "min": 30.8
1118
+ },
1119
+ {
1120
+ "name": "Victor Wembanyama",
1121
+ "position": "C",
1122
+ "pts": 24.4,
1123
+ "reb": 10.8,
1124
+ "ast": 2.9,
1125
+ "min": 28.7
1126
+ },
1127
+ {
1128
+ "name": "Julian Champagnie",
1129
+ "position": "F",
1130
+ "pts": 11.6,
1131
+ "reb": 6.3,
1132
+ "ast": 1.5,
1133
+ "min": 28.5
1134
+ }
1135
+ ],
1136
+ "TOR": [
1137
+ {
1138
+ "name": "Scottie Barnes",
1139
+ "position": "C",
1140
+ "pts": 19.7,
1141
+ "reb": 8.2,
1142
+ "ast": 5.5,
1143
+ "min": 34.6
1144
+ },
1145
+ {
1146
+ "name": "Brandon Ingram",
1147
+ "position": "F",
1148
+ "pts": 21.7,
1149
+ "reb": 6.0,
1150
+ "ast": 3.8,
1151
+ "min": 34.0
1152
+ },
1153
+ {
1154
+ "name": "Immanuel Quickley",
1155
+ "position": "G",
1156
+ "pts": 16.9,
1157
+ "reb": 4.1,
1158
+ "ast": 6.2,
1159
+ "min": 32.4
1160
+ },
1161
+ {
1162
+ "name": "RJ Barrett",
1163
+ "position": "G-F",
1164
+ "pts": 19.6,
1165
+ "reb": 5.0,
1166
+ "ast": 3.7,
1167
+ "min": 30.4
1168
+ },
1169
+ {
1170
+ "name": "Jakob Poeltl",
1171
+ "position": "F",
1172
+ "pts": 9.7,
1173
+ "reb": 7.7,
1174
+ "ast": 2.1,
1175
+ "min": 25.3
1176
+ }
1177
+ ],
1178
+ "UTA": [
1179
+ {
1180
+ "name": "Lauri Markkanen",
1181
+ "position": "F",
1182
+ "pts": 27.9,
1183
+ "reb": 7.2,
1184
+ "ast": 2.2,
1185
+ "min": 36.0
1186
+ },
1187
+ {
1188
+ "name": "Keyonte George",
1189
+ "position": "G",
1190
+ "pts": 24.4,
1191
+ "reb": 4.0,
1192
+ "ast": 6.7,
1193
+ "min": 34.4
1194
+ },
1195
+ {
1196
+ "name": "Walker Kessler",
1197
+ "position": "C",
1198
+ "pts": 14.4,
1199
+ "reb": 10.8,
1200
+ "ast": 3.0,
1201
+ "min": 30.8
1202
+ },
1203
+ {
1204
+ "name": "Jusuf Nurkić",
1205
+ "position": "C",
1206
+ "pts": 10.9,
1207
+ "reb": 10.2,
1208
+ "ast": 4.5,
1209
+ "min": 26.1
1210
+ },
1211
+ {
1212
+ "name": "Svi Mykhailiuk",
1213
+ "position": "G-F",
1214
+ "pts": 8.9,
1215
+ "reb": 2.6,
1216
+ "ast": 2.0,
1217
+ "min": 24.5
1218
+ }
1219
+ ],
1220
+ "WAS": [
1221
+ {
1222
+ "name": "Kyshawn George",
1223
+ "position": "F",
1224
+ "pts": 15.5,
1225
+ "reb": 5.6,
1226
+ "ast": 4.9,
1227
+ "min": 31.2
1228
+ },
1229
+ {
1230
+ "name": "Bub Carrington",
1231
+ "position": "G-F",
1232
+ "pts": 9.7,
1233
+ "reb": 3.9,
1234
+ "ast": 4.6,
1235
+ "min": 28.3
1236
+ },
1237
+ {
1238
+ "name": "Trae Young",
1239
+ "position": "G",
1240
+ "pts": 19.3,
1241
+ "reb": 1.5,
1242
+ "ast": 8.9,
1243
+ "min": 28.0
1244
+ },
1245
+ {
1246
+ "name": "Alex Sarr",
1247
+ "position": "C",
1248
+ "pts": 17.2,
1249
+ "reb": 7.4,
1250
+ "ast": 2.8,
1251
+ "min": 27.8
1252
+ },
1253
+ {
1254
+ "name": "Bilal Coulibaly",
1255
+ "position": "G-F",
1256
+ "pts": 10.1,
1257
+ "reb": 4.7,
1258
+ "ast": 2.5,
1259
+ "min": 26.6
1260
+ }
1261
+ ]
1262
+ }
server.py CHANGED
@@ -255,7 +255,26 @@ def warm_starter_cache():
255
  import time
256
  time.sleep(2) # Wait before retry
257
 
258
- logger.error("FAILED: Could not fetch NBA API data after all retries. Using fallback.")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
259
 
260
  # =============================================================================
261
  # Initialize Flask App
 
255
  import time
256
  time.sleep(2) # Wait before retry
257
 
258
+ # NBA API failed - try to load from cached file
259
+ logger.warning("NBA API failed. Loading fallback starters from cached file...")
260
+ try:
261
+ import json
262
+ cache_file = ROOT_DIR / "data" / "api_data" / "starters_cache.json"
263
+ if cache_file.exists():
264
+ with open(cache_file, 'r', encoding='utf-8') as f:
265
+ all_starters = json.load(f)
266
+
267
+ for team_abbrev, starters in all_starters.items():
268
+ cache["rosters"][team_abbrev] = {"data": starters, "timestamp": datetime.utcnow()}
269
+
270
+ cache["all_starters"]["data"] = all_starters
271
+ cache["all_starters"]["timestamp"] = datetime.utcnow()
272
+ logger.info(f"FALLBACK SUCCESS: Loaded {len(all_starters)} teams from starters_cache.json")
273
+ return
274
+ except Exception as e:
275
+ logger.error(f"Failed to load fallback starters: {e}")
276
+
277
+ logger.error("FAILED: Could not fetch NBA API data after all retries. No roster data available.")
278
 
279
  # =============================================================================
280
  # Initialize Flask App