360 Commits
v2.1 ... v2.4

Author SHA1 Message Date
Chuck
e894c40ff4 Merge development into main
- Resolved conflicts in src/logo_downloader.py:
  - Combined NCAA hockey endpoint with soccer league endpoints
  - Updated directory mappings to use ncaa_logos for NCAA sports
  - Added support for multiple soccer leagues (Premier League, La Liga, etc.)

- Resolved conflicts in src/ncaa_fb_managers.py:
  - Combined immediate fetch approach with background fetch strategy
  - Maintained both immediate response and comprehensive data fetching
  - Preserved caching functionality for improved performance

- Includes all development branch features:
  - Soccer league support with team logos
  - Enhanced NCAA football data fetching
  - Improved logo downloader with multiple league support
  - Updated wiki documentation and configuration
2025-09-16 15:37:59 -04:00
Chuck
a23a749c59 Update wiki submodule reference
- Updated LEDMatrix.wiki to latest commit (d85658a)
- Includes major wiki reorganization and documentation updates
2025-09-16 15:36:06 -04:00
Chuck
2d8f1b60a3 wiki changes 2025-09-16 14:40:36 -04:00
Chuck
8c03e65104 wiki page about team abbreviations 2025-09-16 14:33:49 -04:00
Chuck
764d80e818 added more missing soccer logos 2025-09-16 14:31:31 -04:00
Chuck
854c236a60 added portuguese soccer league to documentation for soccer manager and added auto-download missing logos for soccer teams 2025-09-16 14:25:47 -04:00
Chuck
4b1b343a8f shift album font down 2 pixels 2025-09-16 14:13:23 -04:00
Chuck
65f04bff63 adjust music manager album text location 2025-09-16 14:11:39 -04:00
Chuck
8055856137 shift of the day description and subtitle down in more situations 2025-09-16 14:09:27 -04:00
Chuck
17a79976dd shift of the day description down one more pixel for total of 4 2025-09-16 14:06:59 -04:00
Chuck
38062d0bee shift album and artist font down 2025-09-16 14:06:14 -04:00
Chuck
2ce252059e shift of the day description down one more pixel 2025-09-16 12:37:21 -04:00
Chuck
c7ee946871 shift music album and artist font down the height of the text font 2025-09-16 12:34:43 -04:00
Chuck
3afcbb759c add freetype error handling 2025-09-16 12:22:54 -04:00
Chuck
bc18202736 shift of the day underline up one pixel 2025-09-16 12:21:17 -04:00
Chuck
a0973a2ad8 shift whole display down 8 pixels 2025-09-16 12:19:50 -04:00
Chuck
c18ab3f91f dialing of the day text spacing - revert back to too much spacing 2025-09-16 12:18:56 -04:00
Chuck
9718595017 dialing of the day text spacing 2025-09-16 12:16:36 -04:00
Chuck
5f803f346b dialing of the day text spacing 2025-09-16 12:13:47 -04:00
Chuck
0320830725 of the day manager text refactor 2025-09-16 12:10:10 -04:00
Chuck
9dd744254a of the day manager text positioning placement fix 2025-09-16 12:03:46 -04:00
Chuck
67b6a6fd68 adjust spacing on of the day manager text 2025-09-16 11:07:06 -04:00
Chuck
ca62fd714f Make sure sports displays are properly processing number of recent games to show 2025-09-16 10:55:07 -04:00
Chuck
49346f9a6d change of the day file path detection 2025-09-15 18:33:27 -04:00
Chuck
9200c9cab3 update logic on all sports displays that upcoming and recent games to show are based on each team, not just the first X # of games found 2025-09-15 18:28:40 -04:00
Chuck
dbdb730b4d fix upcoming game logic for NFL display too 2025-09-15 18:23:58 -04:00
Chuck
91211d5c86 fix upcoming game logic 2025-09-15 18:22:25 -04:00
Chuck
d78c592d6a NCAA FB season now downloads in full but it slows down the display significantly, data fetch has been moved to the background and deferred during scrolling displays 2025-09-15 18:12:54 -04:00
Chuck
4771ec8b3b add black buffer behind odds ticker to finish scroll 2025-09-15 18:09:28 -04:00
Chuck
60f68ff2a3 add permission handling of the day to first time install script 2025-09-15 17:51:20 -04:00
Chuck
c7634cbf3a NCAA FB odds fix 2025-09-15 16:00:14 -04:00
Chuck
96cd383436 NCAA FB logging to figure out why recent and upcoming games aren't loading well 2025-09-15 15:41:37 -04:00
Chuck
e39dd1e0a3 NCAA FB logging 2025-09-15 15:36:04 -04:00
Chuck
7b1339631c of the day try block fix 2025-09-15 15:27:57 -04:00
Chuck
0579b3b860 more of the day debug logging and fix datetime duplicate in NCAA FB 2025-09-15 15:26:11 -04:00
Chuck
e7e76eea4c more robust NCAA FB manager upcoming game check 2025-09-15 15:22:03 -04:00
Chuck
3f431a54d4 path resolution for of the day manager 2025-09-15 15:16:54 -04:00
Chuck
d0f8785936 troubleshooting of the day manager 2025-09-15 15:06:07 -04:00
Chuck
7618eafaa6 troubleshooting of the day manager 2025-09-15 14:53:26 -04:00
Chuck
f8f4539015 hopefully fix of the day settings 2025-09-15 14:38:42 -04:00
Chuck
0ab978d543 web ui config setting accuracy changes 2025-09-15 14:29:14 -04:00
Chuck
c4a51d0f80 espn api update for NCAAFB 2025-09-15 14:21:09 -04:00
Chuck
b20c3880b2 make sure web ui is pulling existing config options 2025-09-15 13:59:33 -04:00
Chuck
652461a819 ensure leaderboard is in webui 2025-09-15 13:20:20 -04:00
Chuck
691d39675d web ui bug fixes 2025-09-15 11:57:52 -04:00
Chuck
9bc0cd5629 moving away from dict errors 2025-09-15 11:48:10 -04:00
Chuck
625a501da5 further dict wrapper update 2025-09-15 11:43:47 -04:00
Chuck
28c2dcd2f7 fix dict class for web ui 2025-09-15 11:40:29 -04:00
Chuck
c55511c099 webui changes to launch after config file changes 2025-09-15 11:34:40 -04:00
Chuck
b96f1e3957 make sure web ui save buttons work 2025-09-15 10:50:55 -04:00
Chuck
fcbc67464d persistent config file via config.template.json and migrate_config.sh 2025-09-15 10:27:16 -04:00
Chuck
4b36937a55 Update sports league logos 2025-09-15 09:17:01 -04:00
Chuck
8ead8ad893 Fix NCAA Football recent games to show truly recent games (last 14 days) instead of entire season
- Add date-based filtering to NCAAFBRecentManager
- Only consider games from last 14 days as 'recent'
- Prevents Week 1 games from showing when user wants yesterday's games
- Fixes issue where recent_games_to_show: 1 would show old games instead of most recent
2025-09-15 08:50:28 -04:00
Alex Resnick
515ae2c7e9 Add NCAA Hockey (#36)
* Add emulator

* Update limit for ESPM API

* use params

* Add NCAA Mens Hockey  Manager

* Add NCAA Hockey to leader board

* update logos

---------

Co-authored-by: Alex Resnick <adr8282@gmail.com>
2025-09-14 18:08:32 -04:00
Alex Resnick
a5a9398c5c Add Emulator Support (#35)
* Add emulator

* Update limit for ESPM API

* use params

---------

Co-authored-by: Alex Resnick <adr8282@gmail.com>
2025-09-14 16:44:50 -04:00
Scott Raynor
b82e904cb1 Add ability to download NCAA FB AP top 25 rankings from ESPN API and display when applicable. (#17)
Signed-off-by: J. Scott Raynor <sr-github@raynorsplace.net>
2025-09-14 16:40:38 -04:00
Chuck
fbff65fbad fix NCAA FB Quarter logic. Fix -1th and 10 status text when negative yards are received 2025-09-14 16:32:10 -04:00
Chuck
19edd9ace0 Merge development branch into main - resolved conflict in ncaa_fb_managers.py 2025-09-12 19:21:28 -04:00
Chuck
0982ef78dd clean config 2025-09-12 19:18:20 -04:00
Chuck
5695d8e017 minor fixes 2025-09-12 19:09:43 -04:00
Chuck
06ad446925 update stock call method 2025-09-12 18:57:39 -04:00
Chuck
6b5a9cdff7 disable calendar for test 2025-09-12 18:56:05 -04:00
Chuck
efb66118e4 full test of most display modes 2025-09-12 18:53:38 -04:00
Chuck
2444aa2fc9 manual buffer on odds ticker to finish the scroll 2025-09-12 18:52:27 -04:00
Chuck
93f6173efa apply leaderboard duration logic to odds manager 2025-09-12 18:49:33 -04:00
Chuck
dc81d48ab1 new TAANDM logo 2025-09-12 18:46:34 -04:00
Chuck
5c32be929e shorten buffer for one perfect loop 2025-09-12 18:43:15 -04:00
Chuck
105f60f57e disable odds 2025-09-12 18:40:00 -04:00
Chuck
a52130cedb brute forcing math for scroll speed 2025-09-12 18:39:31 -04:00
Chuck
d08e7953f2 improve math on dynamic duration for leaderboard 2025-09-12 18:34:35 -04:00
Chuck
d7544b04dd add rankings to odds ticker team names 2025-09-12 18:32:33 -04:00
Chuck
0291540df4 update width calculation for leaderboard duration. Reduce log spam 2025-09-12 18:27:52 -04:00
Chuck
27b9b0267b current x postion tracking update for leaderboard 2025-09-12 18:21:10 -04:00
Chuck
cffef0d161 leaderboard debugging 2025-09-12 18:14:37 -04:00
Chuck
b5cb71b68d enable loop for scrolling dynamic displays 2025-09-12 18:12:02 -04:00
Chuck
7685586508 web ui updates for leaderboard and odds manager timeout if APi call limit is hit 2025-09-12 18:08:46 -04:00
Chuck
b8aaa56b4b Add NCAA football logo download script and update team abbreviations
- Added download_espn_ncaa_fb_logos.py script to download logos from ESPN API
- Downloaded 50 NCAA football team logos to test/ncaaFBlogos/
- Updated all_team_abbreviations.txt with current ESPN team data
- Updated various team logo files (MLB, NBA, NFL, NHL, NCAAF)
2025-09-12 18:01:43 -04:00
Chuck
4aa307c8dd dynamic duration buffer adjustment 2025-09-12 17:57:06 -04:00
Chuck
12b99024a4 leaderboard spacing update 2025-09-12 17:54:40 -04:00
Chuck
22f0e29315 leaderboard spacing calculation update 2025-09-12 17:45:52 -04:00
Chuck
6eeba92350 disable dynamic duration leaderboard 2025-09-12 17:40:52 -04:00
Chuck
286ba2b044 disable loop 2025-09-12 17:39:20 -04:00
Chuck
4b5a1e41d8 update font for leaderboard 2025-09-12 17:34:33 -04:00
Chuck
008705b75c re-enable two leagues for leaderboard 2025-09-12 17:29:51 -04:00
Chuck
5937f968ef change duration buffer on odds ticker 2025-09-12 17:28:11 -04:00
Chuck
4fe5547bf8 test with just one league for leaderboard 2025-09-12 17:25:25 -04:00
Chuck
96f6749516 change width draw logic in leaderboard display 2025-09-12 17:21:20 -04:00
Chuck
bc3883df14 config manager reductions to reduce overhead 2025-09-12 17:15:45 -04:00
Chuck
32b1b8020a specific leaderboard logging 2025-09-12 15:39:20 -04:00
Chuck
9280295ed3 leaderboard debugging 2025-09-12 15:19:03 -04:00
Chuck
e5a29d4668 dynamic duration for odds ticker has larger buffer 2025-09-12 15:15:22 -04:00
Chuck
4cfaa5ca59 reduce logging for leaderboard dynamic duration 2025-09-12 15:13:13 -04:00
Chuck
6f894a587b league data key added to leaderboard image calculation 2025-09-12 15:10:17 -04:00
Chuck
35eb9cbdb5 better handling for png transparency in broadcast logos 2025-09-12 15:08:22 -04:00
Chuck
2d41c5ca31 leaderboard improvements and timing update 2025-09-12 15:06:08 -04:00
Chuck
14f7a8b502 improce caching for leaderboard 2025-09-12 15:02:33 -04:00
Chuck
5101795cbf handle special characters in team names (TA&M A&M) 2025-09-12 14:55:18 -04:00
Chuck
6d0632acee logo downloader for FCS teams is more robust 2025-09-12 14:50:19 -04:00
Chuck
9298eff554 smoother leaderboard scrolling 2025-09-12 13:37:19 -04:00
Chuck
335ab8cce0 update leaderboard data sources for other sports and font sizes 2025-09-12 13:35:01 -04:00
Chuck
32daced427 update logic on odds ticker dynamic duration 2025-09-12 12:10:50 -04:00
Chuck
153edcc2e1 update record & rank logic, update leaderboard font and logo sizes 2025-09-12 12:08:46 -04:00
Chuck
548bc00e00 use correct AP Poll top 25 for NCAAFB 2025-09-12 11:50:51 -04:00
Chuck
f8ab022da9 add dynamic duration to leaderboard 2025-09-10 22:54:24 -04:00
Chuck
cd80745dcb update height references 2025-09-10 22:32:25 -04:00
Chuck
56dfbda40a update leaderboard layout 2025-09-10 22:12:33 -04:00
Chuck
591555c3c7 make sure leaderboard is scrolling horizontally to show all teams 2025-09-10 21:56:29 -04:00
Chuck
bbabad3135 adjustment on leaderboard 2025-09-10 21:28:30 -04:00
Chuck
3329822a46 update tnt logo 2025-09-10 18:21:03 -04:00
Chuck
413a1fa38c update cbs logo 2025-09-10 18:19:11 -04:00
Chuck
3ee7821353 update some broadcast logos and fix multiple stacked panels logic 2025-09-10 18:13:42 -04:00
Chuck
20a816f3e6 update sports logo 2025-09-10 17:01:05 -04:00
Chuck
457f9f9eb5 better error handling and correct image call for top 25 2025-09-10 16:45:34 -04:00
Chuck
39519dbfff enable leaderboard for testing 2025-09-10 13:20:15 -04:00
Chuck
61a56560f3 adjust odds manager mlb spacing 2025-09-10 13:19:45 -04:00
Chuck
c1ccd6f44a fix leaderboard manager import 2025-09-10 13:16:42 -04:00
Chuck
2123f78dad adjust spacing in Odds Manager ticker when Baseball is live, to reduce space between graphic and gameplay stats 2025-09-10 13:12:57 -04:00
Chuck
a1914980c8 Update issue templates 2025-09-04 23:03:10 -04:00
ChuckBuilds
a3dbc6a4a8 standardize config init across displays 2025-09-04 22:24:02 -04:00
ChuckBuilds
8a0fdb005d update UTC timezone logic to check config settings for all managers 2025-09-04 22:18:01 -04:00
Scott Raynor
f13ad238eb Add ability to try to download NCAA football logos not found in the assets folder from the ESPN API. (#15)
Co-authored-by: J. Scott Raynor <jsraynor@gmail.com>
2025-09-01 13:33:35 -04:00
ChuckBuilds
92071237c1 listing all missing team logos 2025-08-19 17:40:09 -05:00
ChuckBuilds
52c2d61dcf Fix odds ticker black display issue when returning to rotation
- Reset display start time when force_clear is True or when starting fresh
- Reset scroll position for clean start when display is reset
- Add check for old display start time and reset if it's more than 2x dynamic duration
- Prevents the odds ticker from staying black when it comes back into rotation
- Ensures proper state management between display sessions
2025-08-18 21:50:38 -05:00
ChuckBuilds
73036c33cb Reduce spacing around bases diamond for tighter layout
- Moved bases to right edge of odds column to be closer to inning indicator
- Reduced horizontal spacing from 10px to 8px between bases
- Reduced vertical spacing from 8px to 6px for more compact diamond
- Updated cluster width from 26px to 24px to match tighter spacing
- Adjusted positioning offset from 13px to 12px for proper centering
- Bases now positioned closer to the inning indicator for better visual flow
2025-08-18 21:46:57 -05:00
ChuckBuilds
d6eb7a778c Update odds ticker bases to match MLB manager style
- Changed from circular bases to diamond-shaped bases (polygons)
- Increased base size from 6px to 8px to match MLB manager
- Increased spacing from 8px to 10px for better visibility
- Added proper cluster positioning and sizing calculations
- Shifted bases down 2 pixels from center for better positioning
- Increased minimum width to 30px to accommodate larger base cluster
- Now uses same diamond-shaped base style as MLB manager for consistency
2025-08-18 21:41:14 -05:00
ChuckBuilds
62b50cc06f fix display start time on odds ticker and added amazon prime video logo to broadcast 2025-08-18 21:35:54 -05:00
ChuckBuilds
05bee6ce84 Replace odds text section with centered graphical bases for baseball
- Removed text-based odds display for baseball live games entirely
- Graphical bases now replace the entire odds section (not just overlay it)
- Bases are properly centered vertically on the display (height // 2)
- Bases are centered horizontally within the odds column width
- Creates cleaner, more focused display with bases as the main visual element
2025-08-18 21:31:58 -05:00
ChuckBuilds
2c2d24c0a8 Fix missing datetime variables for baseball live games
- Added back day_text, date_text, and time_text variables for baseball live games
- These variables are needed for the datetime display section
- Shows inning (▲5), count (2-1), and outs (2 outs) in the datetime column
- Fixes the 'cannot access local variable' error that was occurring
2025-08-18 21:01:39 -05:00
ChuckBuilds
b252229e03 adjust live bases on the odds ticker 2025-08-18 20:55:50 -05:00
ChuckBuilds
8f7aeee546 Fix graphical base positioning and remove old text display
- Removed old text-based bases display code that was still showing
- Fixed positioning calculation for graphical bases to center properly
- Added bounds checking to prevent bases from overlapping off display
- Bases are now properly centered in the odds column with appropriate spacing
- Cleaned up baseball live game display to show only count, outs, and graphical bases
2025-08-18 20:44:48 -05:00
ChuckBuilds
b7fa2f1df6 Add graphical base indicators to odds ticker for baseball live games
- Added _draw_base_indicators() method similar to MLB manager
- Replaced text-based bases display with graphical diamond representation
- Shows diamond outline with filled circles for occupied bases
- Displays count and outs as text while showing bases graphically
- Creates more visual and intuitive representation of game state
- Uses smaller size (6px) and spacing (8px) appropriate for odds ticker
2025-08-18 19:54:13 -05:00
ChuckBuilds
ba3b79dd72 adjust spacing on live game scores 2025-08-18 19:48:14 -05:00
ChuckBuilds
e4e058ff97 Fix outs pluralization in odds ticker live baseball games
- Changed outs display to use proper pluralization:
  - '1 out' for single out
  - '2 outs', '3 outs' for multiple outs
- This makes the live game information more grammatically correct and readable
2025-08-18 19:47:23 -05:00
ChuckBuilds
0b42cec902 Fix odds ticker mid-scroll cutoff issue
- Modified calculate_dynamic_duration() to add extra buffer time when looping is enabled
- Added 20% extra buffer for looping to ensure smooth transitions
- Added logic to detect when display is ending and reset scroll position for clean transitions
- Added display start time tracking to manage duration properly
- This prevents the odds ticker from cutting off mid-scroll when switching modes
2025-08-18 19:46:20 -05:00
ChuckBuilds
35ad842ba1 adjust spacing on live odds outs 2025-08-18 19:43:27 -05:00
ChuckBuilds
08cf4152f7 Improve odds ticker live game display formatting
- Removed parentheses around scores for live games (e.g., 'Team 5' instead of 'Team (5)')
- Improved bases section for baseball games:
  - Changed from '1', '2', '3' to '1B', '2B', '3B' for clarity
  - Changed from '---' to 'Empty' when no bases are occupied
  - This makes it much clearer what the information represents
- Live games now show cleaner, more readable score format
2025-08-18 19:42:30 -05:00
ChuckBuilds
71a392737e Add comprehensive debug logging for odds ticker dynamic duration
- Added debug logging to _fetch_upcoming_games() to track data fetching
- Added debug logging to _create_ticker_image() to track image creation
- Added logging for favorite teams, odds filtering, and game counts
- Added logging for total_scroll_width calculation
- This will help identify why dynamic duration is falling back to minimum
2025-08-18 19:26:12 -05:00
ChuckBuilds
2b93eafcdf improve odds ticker dynamic duration 2025-08-18 19:23:20 -05:00
ChuckBuilds
3c1706d4e8 Fix odds ticker dynamic duration timing issue
- Modified get_dynamic_duration() to trigger update when total_scroll_width is 0
- This ensures the dynamic duration is calculated with actual data before being used
- Prevents fallback to minimum duration (30s) when odds ticker hasn't updated yet
- Added debug logging to track when updates are triggered for duration calculation
2025-08-18 19:13:54 -05:00
ChuckBuilds
e4b3adb867 Fix test script to handle missing game data keys
- Added safe key access using .get() method with defaults
- Added display of available keys in game data for debugging
- Added sport field display to help identify data structure
- This prevents KeyError when game data structure changes
2025-08-18 19:09:50 -05:00
ChuckBuilds
9f00124fad Fix odds ticker dynamic duration calculation
- Fixed double-counting of display width in total_scroll_width calculation
- Added detailed debug logging for dynamic duration calculation
- Added debug logging for scrolling behavior and loop resets
- Created test script for debugging dynamic duration issues
- The issue was that total_scroll_width included display width, causing
  incorrect duration calculations that resulted in early cutoff
2025-08-18 19:05:36 -05:00
ChuckBuilds
68416d0293 live games in odds ticker 2025-08-18 15:50:23 -05:00
ChuckBuilds
e63198dc49 scroll priority to determine data refreshes 2025-08-18 15:21:39 -05:00
ChuckBuilds
a5ce721733 improve filtering on show_favorite_teams_only 2025-08-15 10:14:33 -05:00
ChuckBuilds
e3b65588a2 support older versions of python not having the Union import 2025-08-15 09:38:23 -05:00
ChuckBuilds
f13e9306c9 more fallback errors for milb fonts 2025-08-14 16:46:48 -05:00
ChuckBuilds
ef82610a06 milb font error handling 2025-08-14 13:39:48 -05:00
ChuckBuilds
18145edbf1 default games to show 1 2025-08-14 13:02:23 -05:00
ChuckBuilds
54635fee3c ensure game rotation count respects user defined variable 2025-08-14 13:01:23 -05:00
ChuckBuilds
6152969340 fix favorite team toggle logic being skipped 2025-08-14 12:26:57 -05:00
Chuck
8770e5a327 update readme to use install script 2025-08-13 21:59:16 -05:00
Chuck
822d9909ed apply fix to mlb 2025-08-13 21:49:19 -05:00
Chuck
d179700c6c Removed the problematic os.path.dirname(os.path.abspath(__file__)) pattern 2025-08-13 21:35:53 -05:00
Chuck
dfecc6f8a0 loading fonts va absolute paths 2025-08-13 21:23:37 -05:00
Chuck
0d8d4084a9 overzealous with the font change, rolling some back 2025-08-13 20:54:16 -05:00
Chuck
6bc1039ed6 change how font is loaded via systemctl - added direct paths 2025-08-13 20:36:23 -05:00
Chuck
8e1b04550b allow werkzeug to work in our environment 2025-08-13 17:32:08 -05:00
Chuck
33e1f05f77 update first time install script 2025-08-13 17:15:24 -05:00
Chuck
c4113367f7 default config set 2025-08-13 15:46:20 -05:00
Chuck
4b906b3a92 remove autostart of dsiplay from autostart of web ui 2025-08-13 14:59:49 -05:00
Chuck
06d8360922 web autostart troubleshooting 2025-08-13 14:45:56 -05:00
Chuck
9d4082665a graceful font fallback 2025-08-13 12:53:11 -05:00
Chuck
a3481f3674 permission handling in first time install script 2025-08-13 12:13:41 -05:00
Chuck
e36d92340e more robust first time install script, ensure it creates config_secrets 2025-08-13 11:36:59 -05:00
Chuck
6225189b3c more robust font loading for OTD manager 2025-08-13 10:23:43 -05:00
Chuck
6c658c23c4 disable google calendar by default 2025-08-13 09:52:53 -05:00
Chuck
30cf8ee2e8 make the first time install script more inclusive of user actions 2025-08-12 17:42:22 -05:00
Chuck
2526c6097e update docs 2025-08-12 10:23:22 -05:00
Chuck
1e0889fe84 cleanup 2025-08-11 18:24:23 -05:00
Chuck
ba0716d37e update readme 2025-08-11 18:20:23 -05:00
Chuck
b8d9eb65f6 clean up milb upcoming 2025-08-11 18:00:40 -05:00
Chuck
03f0a6e6e2 troubleshoot milb upcoming 2025-08-11 17:25:03 -05:00
Chuck
5971e4afa1 troubleshooting autostart for web ui v2 2025-08-11 16:28:04 -05:00
Chuck
dc840b63d8 trying to improve on demand display 2025-08-11 16:01:16 -05:00
Chuck
865b30c631 reduce log spam 2025-08-11 15:45:19 -05:00
Chuck
da17f214da improve stop on demand 2025-08-11 15:21:20 -05:00
Chuck
643397c939 added first_time_install script 2025-08-11 14:22:54 -05:00
Chuck
1704001ef6 ensure web ui actions work and web interface is starting without venv 2025-08-11 14:12:17 -05:00
Chuck
18d6758dbe web sudo script 2025-08-11 14:02:43 -05:00
Chuck
19f5b7e3bc remove venv from web v2 2025-08-11 11:35:43 -05:00
Chuck
28c81825cc remove venv from web v2 2025-08-11 11:27:03 -05:00
Chuck
151777fbd6 update requirements for web ui 2025-08-10 21:22:36 -05:00
Chuck
8a8e3c21cb update service to autostart web ui 2025-08-10 20:53:33 -05:00
Chuck
809cb07bb8 on demand displays 2025-08-10 20:46:41 -05:00
Chuck
edce5fae85 milb upcoming game debug logging 2025-08-10 18:26:25 -05:00
Chuck
10c1342bdb milb upcoming game debug logging 2025-08-10 17:38:56 -05:00
Chuck
ede82406fa set web ui v2 to be default 2025-08-10 17:18:59 -05:00
Chuck
6ff8d8b5af display preview error handling 2025-08-10 16:27:49 -05:00
Chuck
bd7d136504 bdf double baseline issue 2025-08-10 16:20:21 -05:00
Chuck
f8ebcffa08 add api counter 2025-08-10 16:17:51 -05:00
Chuck
eed64334e3 improvements 2025-08-10 16:02:56 -05:00
Chuck
2bee99f9cc added shutdown to actions tab, enabled some more displays, changed baseball to non-priority 2025-08-10 15:45:06 -05:00
Chuck
35dcf76689 web preview display improvements 2025-08-10 15:33:51 -05:00
Chuck
1f7285cfc4 web preview fixes 2025-08-10 13:33:51 -05:00
Chuck
4f1736fb0f web action simplification 2025-08-10 13:17:53 -05:00
Chuck
0229567156 web action permission changes 2025-08-10 12:59:07 -05:00
Chuck
87daddbeb2 web action permission changes 2025-08-10 12:52:27 -05:00
Chuck
c284b9c26c web v2 command updates 2025-08-10 12:37:41 -05:00
Chuck
95e3e4dda4 live preview updates to formatting 2025-08-10 12:31:12 -05:00
Chuck
d95e6539e3 live preview troubleshooting 2025-08-10 12:14:53 -05:00
Chuck
a49feb2971 change web ui v2 server side loading 2025-08-10 12:02:33 -05:00
Chuck
8b7ae3beed web ui v2 improvements 2025-08-10 11:43:28 -05:00
Chuck
0a0fbbbdbb remove extra spacing on score 2025-08-10 11:07:00 -05:00
Chuck
ca44097669 update ncaa FB and NFL recent games to look more like other displays 2025-08-10 11:05:03 -05:00
Chuck
c0c77f6762 show fav teams only nfl 2025-08-09 22:39:16 -05:00
Chuck
b7ba899df7 adjust ball & strike count in mlb display 2025-08-09 22:38:40 -05:00
Chuck
9b4bf36dbb test favorite teams false 2025-08-09 21:01:11 -05:00
Chuck
85d63243c7 AI bug squash sesh 2025-08-09 21:00:25 -05:00
Chuck
79cbc46f9b set soccer logging to info 2025-08-09 20:45:56 -05:00
Chuck
bd9fe652d9 only call update module for active displays 2025-08-09 20:44:31 -05:00
Chuck
dac7b34228 fix show_favorite_teams_only false logic 2025-08-09 20:36:37 -05:00
Chuck
8703c485bc live priority rotation fix 2025-08-09 20:31:47 -05:00
Chuck
29f36827ca adjust score spacing soccer 2025-08-09 20:21:35 -05:00
Chuck
6fdb2b55b5 improved sport switching on simultaneous displays 2025-08-09 20:17:54 -05:00
Chuck
6a2e5edf2e more robust half time detection 2025-08-09 20:06:25 -05:00
Chuck
938c31c815 adjust MLS half detection 2025-08-09 20:03:44 -05:00
Chuck
d0ead60421 adjust NFL quarter logic 2025-08-09 19:57:17 -05:00
Chuck
e0883eeae2 adjust NFL recent score spacing 2025-08-09 17:17:17 -05:00
Chuck
b0941641c7 added dynamic display durations to scrolling managers 2025-08-09 17:15:14 -05:00
Chuck
8654dd44e6 all sports managers process recent and upcoming games as a function of game count instead of time (hours). Ensure all sports managers respect favorite team filtering if enabled 2025-08-09 16:47:38 -05:00
Chuck
afb7e23fcc fix soccer timezone 2025-08-09 16:03:02 -05:00
Chuck
1ffe3e7c16 add favorite team filtering to soccer manager and ensure timezones are respected 2025-08-09 15:54:15 -05:00
Chuck
7c0934cd9b non-priority live game setting change 2025-08-09 15:38:57 -05:00
Chuck
e5eef1320d milb live game check extended to 5 minutes 2025-08-09 14:20:08 -05:00
Chuck
5ec9b3ea6f case insensitive soccer logos 2025-08-09 14:17:05 -05:00
Chuck
708e993f41 soccer game extraction improvement 2025-08-09 14:09:05 -05:00
Chuck
fd68777484 enable NFL recent 2025-08-09 14:00:44 -05:00
Chuck
d616dddac0 enable soccer 2025-08-09 14:00:01 -05:00
Chuck
7b31c4cca5 milb deduplication 2025-08-09 13:55:34 -05:00
Chuck
be94e9fb6b decision flag debug logging for when games are rejected MILB 2025-08-09 13:48:52 -05:00
Chuck
1b9981d74e try to handle incorrect api data from milb 2025-08-09 13:42:04 -05:00
Chuck
f1ad263849 got duplicate live feeds for milb 2025-08-09 13:38:23 -05:00
Chuck
d802adb048 updates to milb live descriptors 2025-08-09 13:32:22 -05:00
Chuck
71bb616b76 changes to fildering and processing of MILB live games 2025-08-09 13:26:18 -05:00
Chuck
3ba0ec2041 milb live logic change 2025-08-09 13:17:10 -05:00
Chuck
40576ac18d shorten live check for milbLive Manager 2025-08-09 13:09:48 -05:00
Chuck
e6fa83904b pull live games even if missing inning info 2025-08-09 13:05:49 -05:00
Chuck
a52696aae2 milb update interval 2025-08-09 12:46:12 -05:00
Chuck
e9ca9a0454 milb upcoming type error 2025-08-09 12:22:34 -05:00
Chuck
7d38bbb0fa display update improvements and less logging 2025-08-09 12:03:56 -05:00
Chuck
512ffb7639 live games respect update durations from config 2025-08-09 12:00:12 -05:00
Chuck
cc652472a0 improved game filtering milb 2025-08-09 11:47:20 -05:00
Chuck
4cc3b39ce6 cache manager revamp 2025-08-09 11:42:51 -05:00
Chuck
fabb9bd611 cache key logic updates 2025-08-09 11:15:01 -05:00
Chuck
436bdbd8f2 milb debugging around strikes an dballs. 2025-08-09 11:10:19 -05:00
Chuck
d6ca83f090 disable soccer to focus on milb live 2025-08-09 11:05:27 -05:00
Chuck
96de2e7d0f milb debugging 2025-08-09 11:04:39 -05:00
Chuck
ec922fac2c manual cache management 2025-08-09 10:46:14 -05:00
Chuck
b4d5aef876 milb logging and manual cache clearing 2025-08-09 10:44:58 -05:00
Chuck
a672abba6a soccer logger update 2025-08-09 10:35:56 -05:00
Chuck
b193e03be9 milb_manager live display logic update and enable mls 2025-08-09 10:30:01 -05:00
Chuck
4088807c72 milb_manager cache test 2025-08-09 10:22:56 -05:00
Chuck
f02ed06e09 update milb gamedate filed 2025-08-02 20:16:10 -05:00
Chuck
ac69569d77 logging for why milb api isn't working and cache updates to odds cache storage 2025-08-02 20:02:52 -05:00
Chuck
13a2ef6e5e fix number of arguments called for config 2025-08-02 19:45:33 -05:00
Chuck
c490c5dca8 ensure displays share config file 2025-08-02 19:33:24 -05:00
Chuck
24204c581e milb config error 2025-08-02 17:49:19 -05:00
Chuck
881a46867d milb combined live game status mapping that was causing confusion 2025-08-02 17:41:37 -05:00
Chuck
3c665c21d1 milb turn off test mode.... 2025-08-02 17:31:35 -05:00
Chuck
f95138d1a4 milb diagnosis script with error fixes 2025-08-01 17:56:53 -05:00
Chuck
04009f78f7 milb diagnosis 2025-08-01 17:52:06 -05:00
Chuck
45f449d371 slow down scrolling 2025-07-31 22:52:37 -05:00
Chuck
d8e2de927a weather api error handling 2025-07-31 22:51:42 -05:00
Chuck
f67348b9b8 Scroll delay changes 2025-07-31 22:42:57 -05:00
Chuck
c92eaa93bd Merge cursor/modernize-and-enhance-led-matrix-web-interface-24d0 into development 2025-07-31 22:27:30 -05:00
Chuck
8411e4ff76 news manager font change 2025-07-31 22:12:47 -05:00
Chuck
b451d5def8 Respect live game display duration when no priority is given 2025-07-31 21:52:21 -05:00
Chuck
a6f8237069 adjust milb use of cache 2025-07-30 17:18:25 -05:00
Chuck
ceb6d5fdac set milb to priority 2025-07-30 16:49:37 -05:00
Chuck
41ed6b8a43 call managers differently 2025-07-30 16:37:05 -05:00
Chuck
06a51b5799 non-priority live game logic update 2025-07-30 16:11:48 -05:00
Chuck
5001e59ee3 non-priority live game error 2025-07-30 15:53:51 -05:00
Chuck
85747edff1 non-priority rotation fix 2025-07-30 15:15:06 -05:00
Chuck
fb4b950148 Merge branch 'cursor/modernize-and-enhance-led-matrix-web-interface-24d0' of https://github.com/ChuckBuilds/LEDMatrix into cursor/modernize-and-enhance-led-matrix-web-interface-24d0 2025-07-30 14:23:15 -05:00
Chuck
a2988557de better log messaging about what display going to and from 2025-07-30 14:22:17 -05:00
Chuck
f554e35686 Merge branch 'agent' into cursor/modernize-and-enhance-led-matrix-web-interface-24d0
Signed-off-by: Chuck <33324927+ChuckBuilds@users.noreply.github.com>
2025-07-30 13:14:36 -05:00
Chuck
dbcfbcd0f2 change espn logo 2025-07-30 12:33:32 -05:00
Chuck
27b52466ad fix scroll logic in news manager 2025-07-30 11:57:41 -05:00
Cursor Agent
20082cbadf Enhance LED Matrix web interface with comprehensive config and monitoring
Co-authored-by: charlesmynard <charlesmynard@gmail.com>
2025-07-28 03:08:55 +00:00
Chuck
4a7138205c fix error in web v2 2025-07-27 21:12:55 -05:00
Chuck
6ae4451c51 fix error in web v2 2025-07-27 21:10:27 -05:00
Chuck
7f17d8cd8f fix error in web v2 2025-07-27 21:07:17 -05:00
Chuck
0f6e3c9497 fix error in web v2 2025-07-27 21:00:49 -05:00
Chuck
88078111b4 venv requirements 2025-07-27 20:55:43 -05:00
Chuck
0601a9fda7 new strategy to draw news manager 2025-07-27 13:19:10 -05:00
Chuck
05d9f7c057 cant find why its not scrolling faster 2025-07-27 13:10:07 -05:00
Chuck
34903dd979 Scroll delay check 2025-07-27 13:03:57 -05:00
Chuck
3ba317c4e4 Add scroll control to news manager 2025-07-27 13:01:02 -05:00
Chuck
6bbb4f5de8 trying to make news scroll smoother 2025-07-27 12:56:17 -05:00
Chuck
4ab4d14a4e adjusting news manager scroll speed 2025-07-27 12:42:12 -05:00
Cursor Agent
d9e5b9404d Add modern web interface v2 for LED Matrix display control
Co-authored-by: charlesmynard <charlesmynard@gmail.com>
2025-07-27 15:32:48 +00:00
Chuck
e5d4f3c9f0 playing with scroll speed for news manager 2025-07-27 10:25:47 -05:00
Chuck
46ba9b4c4a added font logging to news manager 2025-07-27 10:20:23 -05:00
Chuck
9b6231915a change font 2025-07-27 10:19:30 -05:00
Chuck
6d8e7abff7 reduce dynamic duration logging 2025-07-27 10:14:55 -05:00
Chuck
932b263c5a news ticker scroll speed change 2025-07-27 10:10:45 -05:00
Chuck
aef8b3b6cc remove dynamic duration calculation from startup loop 2025-07-27 10:08:03 -05:00
Chuck
be50fb86d7 adjust display controller loop of news 2025-07-27 10:06:15 -05:00
Chuck
73d2248ccb fix news loop 2025-07-27 10:02:32 -05:00
Chuck
48937855d4 fix display_image error 2025-07-27 10:00:50 -05:00
Chuck
802e596f06 fix display width error for news_manager 2025-07-27 09:58:37 -05:00
Chuck
b6751a94c2 Sports news ticker with dynamic headline scrolling (#9)
* Add news manager with RSS feed ticker and dynamic scrolling

Co-authored-by: charlesmynard <charlesmynard@gmail.com>

* Add F1 feeds, custom feed management script, and comprehensive feed guide

Co-authored-by: charlesmynard <charlesmynard@gmail.com>

* Remove emoji and improve error/success message formatting

Co-authored-by: charlesmynard <charlesmynard@gmail.com>

* Add dynamic duration feature for news display with configurable timing

Co-authored-by: charlesmynard <charlesmynard@gmail.com>

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2025-07-27 09:53:19 -05:00
Chuck
8b0c71dbdf new display logic for non-priority games 2025-07-26 20:42:56 -05:00
Chuck
2f7fa481a3 non-priority sports logic improvement 2025-07-26 19:34:41 -05:00
ChuckBuilds
ffc006bd99 change default config to just clock 2025-07-26 18:25:45 -05:00
ChuckBuilds
ea74d388b0 Update wiki submodule with latest documentation 2025-07-26 18:23:58 -05:00
Chuck
d4bd8d66e8 new bible verses for 5ymb01 2025-07-26 18:22:46 -05:00
ChuckBuilds
3a81e16490 wiki updates 2025-07-26 18:20:39 -05:00
Chuck
4ea2b9cc36 json fix bible verse 2025-07-25 22:17:51 -05:00
Chuck
407ebc56d7 add 3rd category to config 2025-07-25 21:52:37 -05:00
Chuck
f9e3419f39 test 3rd word of the day 2025-07-25 21:09:31 -05:00
ChuckBuilds
b03371d69a toggle visual adjustments 2025-07-24 20:59:58 -05:00
ChuckBuilds
58251eefb7 placement as % of matrix height 2025-07-24 20:49:40 -05:00
ChuckBuilds
74036ed6d9 placement as % of matrix height 2025-07-24 20:47:20 -05:00
ChuckBuilds
bfa1234feb updated hard coded y values for music title, artist, album 2025-07-24 20:44:50 -05:00
ChuckBuilds
6535ce113a updated hard coded y values for music title, artist, album 2025-07-24 20:14:46 -05:00
ChuckBuilds
dd8d219e73 updated hard coded y values for music title, artist, album 2025-07-24 20:13:04 -05:00
ChuckBuilds
1576e730ea hard coded y values for music title, artist, album 2025-07-24 20:10:57 -05:00
ChuckBuilds
7fc158c914 change artist postioning 2025-07-24 20:00:35 -05:00
ChuckBuilds
f9588f47d0 hard code line height 2025-07-24 19:51:17 -05:00
ChuckBuilds
2eaa158e80 adjust bdf offset 2025-07-24 19:31:01 -05:00
ChuckBuilds
3f05d9fcbc webui button changes 2025-07-24 19:29:25 -05:00
Chuck
3d2b155b79 change default user to be programatic to download git updates 2025-07-24 16:15:41 -05:00
Chuck
3df3b93348 added log viewer to web ui 2025-07-24 16:13:35 -05:00
Chuck
790b483298 remove hard coded bdf y offset 2025-07-24 16:09:00 -05:00
Chuck
d80c1a93db hardcoded line placements 2025-07-24 16:05:48 -05:00
Chuck
e8d2408477 font detection for music font placement 2025-07-24 15:59:24 -05:00
Chuck
fcc8c10c2b disable displays for debugging 2025-07-24 15:38:59 -05:00
Chuck
3063840b6d programmatic changes to artist and album font placement 2025-07-24 15:38:29 -05:00
Chuck
a3c5f9a74f programmatic changes to artist and album font 2025-07-24 15:33:58 -05:00
Chuck
e85bebee12 adjust music artist and album font programatically. Web ui now includes all settings 2025-07-24 15:04:17 -05:00
Chuck
30d416b822 web ui json editor improvements 2025-07-24 14:48:59 -05:00
Chuck
e1a32b1466 web ui save button improvements 2025-07-24 14:40:12 -05:00
Chuck
d02d7445cd web ui JSON linter added 2025-07-24 14:21:49 -05:00
Chuck
0785bcba93 web ui more options added 2025-07-24 14:05:42 -05:00
Chuck
9d01996ae6 webui rework 2025-07-24 13:31:24 -05:00
Chuck
8c705753df changing album position 2025-07-24 13:12:40 -05:00
Chuck
c7fc86e54d changing case for album scrolling 2025-07-24 13:06:42 -05:00
Chuck
9eb65ec891 swap displays for testing 2025-07-24 12:48:23 -05:00
Chuck
92891af6b6 music scroll album name 2025-07-24 12:44:14 -05:00
Chuck
c0d299892e live game duration 2025-07-24 12:32:38 -05:00
Chuck
9a63550a9b adjusting music manager artist and album location 2025-07-24 10:23:31 -05:00
Chuck
25506410d0 adjusting music manager artist and album location 2025-07-24 10:20:56 -05:00
Chuck
102c0eb795 adjusting music manager artist and album location 2025-07-24 10:19:08 -05:00
Chuck
4605cb5c39 adjusting music manager artist and album location 2025-07-24 10:17:16 -05:00
Chuck
f8bf76c150 adjusting music manager artist and album location 2025-07-24 10:15:39 -05:00
Chuck
977bd96241 adjusting music manager artist and album location 2025-07-24 10:13:32 -05:00
Chuck
5224c09faf adjusting music manager artist and album location 2025-07-24 10:12:00 -05:00
Chuck
f342bd9d3a adjusting music manager artist and album location 2025-07-24 10:09:59 -05:00
Chuck
5516a5f764 disabling other displays to focus on debugging 2025-07-24 10:08:14 -05:00
Chuck
15fcd0a722 disabling other displays to focus on debugging 2025-07-24 10:07:28 -05:00
Chuck
a867f767d9 adjusting music manager artist and album location 2025-07-24 10:06:50 -05:00
Chuck
e84640501d adjusting music manager artist and album location 2025-07-24 10:04:34 -05:00
Chuck
e627594989 adjust music artist location lower slight 2025-07-24 09:45:27 -05:00
Chuck
7963ac77b9 disabled some displays to test faster 2025-07-24 09:42:15 -05:00
Chuck
fe6272bf3a shift album and artist names up in the music manager 2025-07-24 09:40:10 -05:00
Chuck
7fc902dea1 cache updates for live games in all sports 2025-07-24 08:21:14 -05:00
Chuck
e61ce4e4be fix NCAA FB cache error 2025-07-23 20:35:39 -05:00
Chuck
18b0a9703e remove all sports live displays from checking cache 2025-07-23 20:31:25 -05:00
Chuck
4994d8ac21 remove Live Sports display from new cache 2025-07-23 20:18:43 -05:00
354 changed files with 29670 additions and 3206 deletions

38
.github/ISSUE_TEMPLATE/bug_report.md vendored Normal file
View File

@@ -0,0 +1,38 @@
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: ''
assignees: ''
---
**Describe the bug**
A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Expected behavior**
A clear and concise description of what you expected to happen.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Desktop (please complete the following information):**
- OS: [e.g. iOS]
- Browser [e.g. chrome, safari]
- Version [e.g. 22]
**Smartphone (please complete the following information):**
- Device: [e.g. iPhone6]
- OS: [e.g. iOS8.1]
- Browser [e.g. stock browser, safari]
- Version [e.g. 22]
**Additional context**
Add any other context about the problem here.

View File

@@ -0,0 +1,20 @@
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: ''
assignees: ''
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.

2
.gitignore vendored
View File

@@ -5,6 +5,8 @@ __pycache__/
# Secrets
config/config_secrets.json
config/config.json
config/config.json.backup
credentials.json
token.pickle

View File

@@ -1,173 +0,0 @@
# LEDMatrix Cache Strategy Analysis
## Current Implementation
Your LEDMatrix system uses a sophisticated multi-tier caching strategy that balances data freshness with API efficiency.
### Cache Duration Categories
#### 1. **Ultra Time-Sensitive Data (15-60 seconds)**
- **Live Sports Scores**: Now respects sport-specific `live_update_interval` configuration
- Soccer live data: Uses `soccer_scoreboard.live_update_interval` (default: 60 seconds)
- NFL live data: Uses `nfl_scoreboard.live_update_interval` (default: 60 seconds)
- NHL live data: Uses `nhl_scoreboard.live_update_interval` (default: 60 seconds)
- NBA live data: Uses `nba_scoreboard.live_update_interval` (default: 60 seconds)
- MLB live data: Uses `mlb.live_update_interval` (default: 60 seconds)
- NCAA sports: Use respective `live_update_interval` configurations (default: 60 seconds)
- **Current Weather**: 5 minutes (300 seconds)
#### 2. **Market Data (5-10 minutes)**
- **Stocks**: 10 minutes (600 seconds) - market hours aware
- **Crypto**: 5 minutes (300 seconds) - 24/7 trading
- **Stock News**: 1 hour (3600 seconds)
#### 3. **Sports Data (5 minutes to 24 hours)**
- **Recent Games**: 5 minutes (300 seconds)
- **Upcoming Games**: 1 hour (3600 seconds)
- **Season Schedules**: 24 hours (86400 seconds)
- **Team Information**: 1 week (604800 seconds)
#### 4. **Static Data (1 week to 30 days)**
- **Team Logos**: 30 days (2592000 seconds)
- **Configuration Data**: 1 week (604800 seconds)
### Smart Cache Invalidation
Beyond time limits, the system uses content-based invalidation:
```python
def has_data_changed(self, data_type: str, new_data: Dict[str, Any]) -> bool:
"""Check if data has changed from cached version."""
```
- **Weather**: Compares temperature and conditions
- **Stocks**: Compares prices (only during market hours)
- **Sports**: Compares scores, game status, inning details
- **News**: Compares headlines and article IDs
### Market-Aware Caching
For stocks, the system extends cache duration during off-hours:
```python
def _is_market_open(self) -> bool:
"""Check if the US stock market is currently open."""
# Only invalidates cache during market hours
```
## Enhanced Cache Strategy
### Sport-Specific Live Update Intervals
The cache manager now automatically respects the `live_update_interval` configuration for each sport:
```python
def get_sport_live_interval(self, sport_key: str) -> int:
"""Get the live_update_interval for a specific sport from config."""
config = self.config_manager.get_config()
sport_config = config.get(f"{sport_key}_scoreboard", {})
return sport_config.get("live_update_interval", 30)
```
### Automatic Sport Detection
The cache manager automatically detects the sport from cache keys:
```python
def get_sport_key_from_cache_key(self, key: str) -> Optional[str]:
"""Extract sport key from cache key to determine appropriate live_update_interval."""
# Maps cache key patterns to sport keys
sport_patterns = {
'nfl': ['nfl', 'football'],
'nba': ['nba', 'basketball'],
'mlb': ['mlb', 'baseball'],
'nhl': ['nhl', 'hockey'],
'soccer': ['soccer', 'football'],
# ... etc
}
```
### Configuration Examples
**Current Configuration (config/config.json):**
```json
{
"nfl_scoreboard": {
"live_update_interval": 30,
"enabled": true
},
"soccer_scoreboard": {
"live_update_interval": 30,
"enabled": false
},
"mlb": {
"live_update_interval": 30,
"enabled": true
}
}
```
**Cache Behavior:**
- NFL live data: 30-second cache (from config)
- Soccer live data: 30-second cache (from config)
- MLB live data: 30-second cache (from config)
### Fallback Strategy
If configuration is unavailable, the system uses sport-specific defaults:
```python
default_intervals = {
'soccer': 60, # Soccer default
'nfl': 60, # NFL default
'nhl': 60, # NHL default
'nba': 60, # NBA default
'mlb': 60, # MLB default
'milb': 60, # Minor league default
'ncaa_fb': 60, # College football default
'ncaa_baseball': 60, # College baseball default
'ncaam_basketball': 60, # College basketball default
}
```
## Usage Examples
### Automatic Sport Detection
```python
# Cache manager automatically detects NFL and uses nfl_scoreboard.live_update_interval
cached_data = cache_manager.get_with_auto_strategy("nfl_live_20241201")
# Cache manager automatically detects soccer and uses soccer_scoreboard.live_update_interval
cached_data = cache_manager.get_with_auto_strategy("soccer_live_20241201")
```
### Manual Sport Specification
```python
# Explicitly specify sport for custom cache keys
cached_data = cache_manager.get_cached_data_with_strategy("custom_live_key", "sports_live")
```
## Benefits
1. **Configuration-Driven**: Cache respects your sport-specific settings
2. **Automatic Detection**: No manual cache duration management needed
3. **Sport-Optimized**: Each sport uses its appropriate update interval
4. **Backward Compatible**: Existing code continues to work
5. **Flexible**: Easy to adjust intervals per sport in config
## Migration
The enhanced cache manager is backward compatible. Existing code will automatically benefit from sport-specific intervals without any changes needed.
To customize intervals for specific sports, simply update the `live_update_interval` in your `config/config.json`:
```json
{
"nfl_scoreboard": {
"live_update_interval": 15 // More aggressive for NFL
},
"mlb": {
"live_update_interval": 45 // Slower pace for MLB
}
}
```

1
LEDMatrix.wiki Submodule

Submodule LEDMatrix.wiki added at d85658a2eb

216
README.md
View File

@@ -1,5 +1,5 @@
# LEDMatrix
An LED matrix display system that provides real-time information display capabilities for various data sources. The system is highly configurable and supports multiple display modes that can be enabled or disabled based on user preferences.
### Setup video and feature walkthrough on Youtube :
[![IMAGE ALT TEXT HERE](https://img.youtube.com/vi/_HaqfJy1Y54/0.jpg)](https://www.youtube.com/watch?v=_HaqfJy1Y54)
@@ -59,7 +59,7 @@ The system supports live, recent, and upcoming game information for multiple spo
- NCAA Football
- NCAA Men's Basketball
- NCAA Men's Baseball
- Soccer
- Soccer (Premier League, La Liga, Bundesliga, Serie A, Ligue 1, Liga Portugal, Champions League, Europa League, MLS)
- (Note, some of these sports seasons were not active during development and might need fine tuning when games are active)
@@ -171,6 +171,17 @@ git clone https://github.com/ChuckBuilds/LEDMatrix.git
cd LEDMatrix
```
4. First-time installation (recommended)
```bash
chmod +x first_time_install.sh
sudo ./first_time_install.sh
```
This single script installs services, dependencies, configures permissions and sudoers, and validates the setup.
----- OLD STEPS (left for manual review) -----
4. Install dependencies:
```bash
sudo pip3 install --break-system-packages -r requirements.txt
@@ -245,21 +256,42 @@ sudo nano /boot/firmware/config.txt
```bash
sudo reboot
```
-----------------------------------------------------------------------------------
## Configuration
1.Edit `config/config.json` with your preferences via `sudo nano config/config.json`
### Initial Setup
###API Keys
The system uses a template-based configuration approach to avoid Git conflicts during updates:
1. **First-time setup**: Copy the template to create your config:
```bash
cp config/config.template.json config/config.json
```
2. **Edit your configuration**:
```bash
sudo nano config/config.json
```
or edit via web interface at http://ledpi:5001
### API Keys and Secrets
For sensitive settings like API keys:
Copy the template: `cp config/config_secrets.template.json config/config_secrets.json`
Edit `config/config_secrets.json` with your API keys via `sudo nano config/config_secrets.json`
Ctrl + X to exit, Y to overwrite, Enter to Confirm
1. Copy the secrets template: `cp config/config_secrets.template.json config/config_secrets.json`
2. Edit `config/config_secrets.json` with your API keys via `sudo nano config/config_secrets.json`
3. Ctrl + X to exit, Y to overwrite, Enter to Confirm
Everything is configured via `config/config.json` and `config/config_secrets.json`.
### Automatic Configuration Migration
The system automatically handles configuration updates:
- **New installations**: Creates `config.json` from the template automatically
- **Existing installations**: Automatically adds new configuration options with default values when the system starts
- **Backup protection**: Creates a backup of your current config before applying updates
- **No conflicts**: Your custom settings are preserved while new options are added
Everything is configured via `config/config.json` and `config/config_secrets.json`. The `config.json` file is not tracked by Git to prevent conflicts during updates.
@@ -807,7 +839,7 @@ This will start the display cycle but only stays active as long as your ssh sess
The LEDMatrix can be installed as a systemd service to run automatically at boot and be managed easily. The service runs as root to ensure proper hardware timing access for the LED matrix.
### Installing the Service
### Installing the Service (this is included in the first_time_install.sh)
1. Make the install script executable:
```bash
@@ -867,6 +899,102 @@ sudo ./start_display.sh
sudo ./stop_display.sh
```
-----------------------------------------------------------------------------------
## Web Interface Installation (V2)
The LEDMatrix system includes Web Interface V2 that runs on port 5001 and provides real-time display preview, configuration management, and on-demand display controls.
### Installing the Web Interface Service
1. Make the install script executable:
```bash
chmod +x install_web_service.sh
```
2. Run the install script with sudo:
```bash
sudo ./install_web_service.sh
```
The script will:
- Copy the web service file to `/etc/systemd/system/`
- Enable the service to start on boot
- Start the service immediately
- Show the service status
### Web Interface Configuration
The web interface can be configured to start automatically with the main display service:
1. In `config/config.json`, ensure the web interface autostart is enabled:
```json
{
"web_display_autostart": true
}
```
2. The web interface will now start automatically when:
- The system boots
- The `web_display_autostart` setting is `true` in your config
### Accessing the Web Interface
Once installed, you can access the web interface at:
```
http://your-pi-ip:5001
```
### Managing the Web Interface Service
```bash
# Check service status
sudo systemctl status ledmatrix-web.service
# View logs
journalctl -u ledmatrix-web.service -f
# Stop the service
sudo systemctl stop ledmatrix-web.service
# Start the service
sudo systemctl start ledmatrix-web.service
# Disable autostart
sudo systemctl disable ledmatrix-web.service
# Enable autostart
sudo systemctl enable ledmatrix-web.service
```
### Web Interface Features
- **Real-time Display Preview**: See what's currently displayed on the LED matrix
- **Configuration Management**: Edit settings through a web interface
- **On-Demand Controls**: Start specific displays (weather, stocks, sports) on demand
- **Service Management**: Start/stop the main display service
- **System Controls**: Restart, update code, and manage the system
- **API Metrics**: Monitor API usage and system performance
- **Logs**: View system logs in real-time
### Troubleshooting Web Interface
**Web Interface Not Accessible After Restart:**
1. Check if the web service is running: `sudo systemctl status ledmatrix-web.service`
2. Verify the service is enabled: `sudo systemctl is-enabled ledmatrix-web.service`
3. Check logs for errors: `journalctl -u ledmatrix-web.service -f`
4. Ensure `web_display_autostart` is set to `true` in `config/config.json`
**Port 5001 Not Accessible:**
1. Check if the service is running on the correct port
2. Verify firewall settings allow access to port 5001
3. Check if another service is using port 5001
**Service Fails to Start:**
1. Check Python dependencies are installed
2. Verify the virtual environment is set up correctly
3. Check file permissions and ownership
-----------------------------------------------------------------------------------
@@ -1033,6 +1161,31 @@ The LEDMatrix system includes a comprehensive scoreboard display system with thr
- Automatic game switching
- Built-in caching to reduce API calls
- Test mode for development
## API Usage Tracking
The LEDMatrix system includes a built-in API usage counter that tracks API calls made by various managers in a 24-hour rolling window. This feature helps monitor API usage and ensure compliance with rate limits.
### API Counter Features
- **Real-time Tracking**: Counts API calls for weather, stocks, sports, and news data
- **24-hour Window**: Rolling window that resets every 24 hours
- **Web Interface Integration**: View current usage in the Overview tab of the web interface
- **Forecast Display**: Shows predicted API usage based on current configuration
- **Automatic Reset**: Counters automatically reset when the 24-hour window expires
### Tracked API Calls
- **Weather**: OpenWeatherMap API calls (geocoding + weather data)
- **Stocks**: Yahoo Finance API calls for stock and crypto data
- **Sports**: ESPN API calls for various sports leagues (NHL, NBA, MLB, NFL, etc.)
- **News**: RSS feed and news API calls
### Accessing API Metrics
1. Open the web interface in your browser
2. Navigate to the **Overview** tab
3. Scroll down to the "API Calls (24h window)" section
4. Click "Refresh API Metrics" to update the display
The counter shows both actual usage and forecasted usage based on your current configuration settings.
## Caching System
The LEDMatrix system includes a robust caching mechanism to optimize API calls and reduce network traffic:
@@ -1074,16 +1227,24 @@ The LEDMatrix system includes a robust caching mechanism to optimize API calls a
##What's Next?
- Adding MQTT/HomeAssistant integration
- Gambling odds?
- Building a user-friendly UI for easier configuration
- Gambling odds (done!)
- Building a user-friendly UI for easier configuration (done!)
### If you've read this far — thanks!
## Granting Passwordless Sudo Access for Web Interface Actions
The web interface needs to run certain commands with `sudo` (e.g., `reboot`, `systemctl start/stop/enable/disable ledmatrix.service`, `python display_controller.py`). To avoid needing to enter a password for these actions through the web UI, you can configure the `sudoers` file to allow the user running the Flask application to execute these specific commands without a password.
1. Shortcut to automate the below steps:
```chmod +x configure_web_sudo.sh```
then
```./configure_web_sudo.sh```
Manual Method:
**WARNING: Be very careful when editing the `sudoers` file. Incorrect syntax can lock you out of `sudo` access.**
1. **Identify the user:** Determine which user is running the `web_interface.py` script. Often, this might be the default user like `pi` on a Raspberry Pi, or a dedicated user you've set up.
@@ -1131,3 +1292,32 @@ The web interface needs to run certain commands with `sudo` (e.g., `reboot`, `sy
**Security Considerations:**
Granting passwordless `sudo` access, even for specific commands, has security implications. Ensure that the scripts and commands allowed are secure and cannot be easily exploited. The web interface itself should also be secured if it's exposed to untrusted networks.
For `display_controller.py` and `stop_display.sh`, ensure their file permissions restrict write access to only trusted users, preventing unauthorized modification of these scripts which run with elevated privileges.
## Web Interface V2 (simplified quick start)
### 1) Run the helper (does the above and starts the server):
```
python3 start_web_v2.py
```
### 2) Start the web UI v2
```
python web_interface_v2.py
```
### 3) Autostart (recommended)
Set `"web_display_autostart": true` in `config/config.json`.
Ensure your systemd service calls `start_web_conditionally.py` (installed by `install_service.sh`).
### 4) Permissions (optional but recommended)
- Add the service user to `systemd-journal` for viewing logs without sudo.
- Configure passwordless sudo for actions (start/stop service, reboot, shutdown) if desired.
- Required for web Ui actions, look in the section above for the commands to run (chmod +x configure_web_sudo.sh & ./configure_web_sudo.sh)
### 5) Old web UI (v1)
The project now defaults to Web UI v2. The v1 interface can be ignored.
An LED matrix display system that provides real-time information display capabilities for various data sources. The system is highly configurable and supports multiple display modes that can be enabled or disabled based on user preferences.
### If you've read this far — thanks!

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.1 KiB

After

Width:  |  Height:  |  Size: 9.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 KiB

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.0 KiB

After

Width:  |  Height:  |  Size: 4.3 KiB

View File

@@ -1,404 +1,53 @@
NCAAF
AAMU => Alabama A&M Bulldogs
ACU => Abilene Christian Wildcats
ADA => Adams State Grizzlies
ADR => Adrian Bulldogs
AFA => Air Force Falcons
AIC => American International Yellow Jackets
AKR => Akron Zips
ALA => Alabama Crimson Tide
ALB => Albright Lions
ALBS => Albany State (GA) Golden Rams
ALCN => Alcorn State Braves
ALD => Alderson Broaddus Battlers
ALF => Alfred Saxons
ALL => Allegheny Gators
ALST => Alabama State Hornets
AMH => Amherst College Mammoths
AND => Anderson (IN) Ravens
ANG => Angelo State Rams
AMH => Amherst Mammoths
ANN => Anna Maria College Amcats
APP => Appalachian State Mountaineers
APSU => Austin Peay Governors
ARIZ => Arizona Wildcats
ARK => Arkansas-Monticello Boll Weevils
ARMY => Army Black Knights
ARST => Arkansas State Red Wolves
ASH => Ashland Eagles
ASP => Assumption Greyhounds
ARK => Arkansas Razorbacks
ASU => Arizona State Sun Devils
AUB => Auburn Tigers
AUG => St. Augustine's Falcons
AUR => Aurora Spartans
AUS => Austin College 'Roos
AVE => Averett Cougars
AVI => Avila College Eagles
AZU => Azusa Pacific Cougars
BAK => Baker University Wildcats
BAL => Baldwin Wallace Yellow Jackets
BALL => Ball State Cardinals
BAT => Bates College Bobcats
BAY => Baylor Bears
BC => Boston College Eagles
BEC => Becker College Hawks
BEL => Beloit College Buccaneers
BEN => Benedictine University (IL) Eagles
BENT => Bentley Falcons
BET => Bethel (TN) Wildcats
BGSU => Bowling Green Falcons
BHS => Black Hills State Yellow Jackets
BIR => Birmingham-Southern Panthers
BKN => Bacone College Warriors
BLA => Blackburn Beavers
BLOM => Bloomsburg Huskies
BLU => Bluffton Beavers
BOW => Bowdoin Polar Bears
BRI => British Columbia Thunderbirds
BRWN => Brown Bears
BST => Bemidji State Beavers
BSU => Bowie State Bulldogs
BUCK => Bucknell Bison
BUE => Buena Vista Beavers
BUF => Buffalo State Bengals
BUFF => Buffalo Bulls
BUT => Butler Bulldogs
BYU => BYU Cougars
CAL => California Lutheran Kingsmen
CAM => Campbell Fighting Camels
CAP => Capital University Crusaders
CAR => Carthage College Red Men
CARK => Central Arkansas Bears
CAS => Castleton Spartans
CAT => Catholic University Cardinals
CCSU => Central Connecticut Blue Devils
CCU => Coastal Carolina Chanticleers
CEN => Centre College Colonels
CHA => Chapman University Panthers
CHI => Chicago Maroons
CHSO => Charleston Southern Buccaneers
CIN => Cincinnati Bearcats
CLA => Clarion Golden Eagles
CLEM => Clemson Tigers
CLMB => Columbia Lions
CLT => Charlotte 49ers
CMU => Central Michigan Chippewas
COE => Coe College Kohawks
COL => Colorado School of Mines Orediggers
COLC => Colorado College Tigers
COLG => Colgate Raiders
BOIS => Boise State Broncos
BRST => Bridgewater State Bears
BUENA => Buena Vista Beavers
CAL => California Golden Bears
CAR => Carroll University (WI) Pioneers
CLA => Claremont-Mudd-Scripps College Stags
COLBY => Colby College White Mules
COLO => Colorado Buffaloes
CON => Concordia-Minnesota Cobbers
COR => Cornell College (IA) Rams
CONN => UConn Huskies
CP => Cal Poly Mustangs
CRO => Crown Storm
CSU => Colorado State Rams
CUL => Culver-Stockton Wildcats
CUM => Cumberland College Indians
CUR => Curry College Colonels
DAK => Dakota Wesleyan Tigers
DART => Dartmouth Big Green
DAV => Davidson Wildcats
DAY => Dayton Flyers
DEF => Defiance Yellow Jackets
DEL => Delta State Statesmen
DEN => Denison Big Red
DEP => DePauw Tigers
DIC => Dickinson State Blue Hawks
DRKE => Drake Bulldogs
DSU => Delaware State Hornets
DEL => Delaware Blue Hens
DUB => Dubuque Spartans
DUKE => Duke Blue Devils
DUQ => Duquesne Dukes
EAS => Eastern New Mexico Greyhounds
ECU => East Carolina Pirates
EDI => Edinboro Fighting Scots
EIU => Eastern Illinois Panthers
EKU => Eastern Kentucky Colonels
ELI => Elizabeth City State Vikings
ELM => Elmhurst Blue Jays
ELON => Elon Phoenix
EMO => Emory & Henry Wasps
EMP => Emporia State Hornets
EMU => Eastern Michigan Eagles
END => Endicott College Gulls
EOR => Eastern Oregon Mountaineers
ETSU => East Tennessee State Buccaneers
EUR => Eureka College Red Devils
EWU => Eastern Washington Eagles
FAU => Florida Atlantic Owls
FAY => Fayetteville State Broncos
FDU => FDU-Florham Devils
FER => Ferrum Panthers
FIN => Findlay Oilers
FIT => Fitchburg State Falcons
FIU => Florida International Panthers
ELM => Elmhurst Bluejays
FAMU => Florida A&M Rattlers
FLA => Florida Gators
FOR => Fort Valley State Wildcats
FRA => Franklin Grizzlies
FRES => Fresno State Bulldogs
FRO => Frostburg State Bobcats
FRST => Ferris State Bulldogs
FSU => Florida State Seminoles
FTLW => Fort Lewis Skyhawks
FUR => Furman Paladins
GAL => Gallaudet Bison
GAN => Gannon Golden Knights
GASO => Georgia Southern Eagles
GAST => Georgia State Panthers
GEN => Geneva College Golden Tornadoes
GEO => George Fox University Bruins
GET => Gettysburg Bullets
GLE => Glenville State Pioneers
GMU => George Mason Patriots
GRA => Grand Valley State Lakers
GRE => Greenville Panthers
GRI => Grinnell Pioneers
GRO => Grove City College Wolverines
GT => Georgia Tech Yellow Jackets
GUI => Guilford Quakers
GWEB => Gardner-Webb Bulldogs
HAM => Hampden-Sydney Tigers
HAMP => Hampton Pirates
HAN => Hanover Panthers
HAR => Hartwick Hawks
HARV => Harvard Crimson
HAS => Haskell Indian Nations Jayhawks
GTWN => Georgetown Hoyas
HAW => Hawai'i Rainbow Warriors
HBU => Houston Baptist Huskies
HC => Holy Cross Crusaders
HEI => Heidelberg Student Princes
HEN => Hendrix College Warriors
HIL => Hillsdale Chargers
HIR => Hiram College Terriers
HOB => Hobart Statesmen
HOU => Houston Cougars
HOW => Howard Bison
HUS => Husson Eagles
IDHO => Idaho Vandals
IDST => Idaho State Bengals
ILL => Illinois Fighting Illini
ILST => Illinois State Redbirds
ILW => Illinois Wesleyan Titans
IND => Indianapolis
INST => Indiana State Sycamores
IOW => Iowa Wesleyan Tigers
IOWA => Iowa Hawkeyes
ISU => Iowa State Cyclones
ITH => Ithaca Bombers
IU => Indiana Hoosiers
JKST => Jackson State Tigers
JMU => James Madison Dukes
JOH => Johnson C Smith Golden Bulls
JUN => Juniata Eagles
JVST => Jacksonville State Gamecocks
KAL => Kalamazoo Hornets
KAN => Kansas Wesleyan University Coyotes
KEN => Kenyon Lords
KENN => Kennesaw State Owls
KENT => Kent State Golden Flashes
KIN => King's College (PA) Monarchs
KNO => Knox College Prairie Fire
KSU => Kansas State Wildcats
KU => Kansas Jayhawks
KUT => Kutztown Golden Bears
KYST => Kentucky State Thorobreds
KYW => Kentucky Wesleyan Panthers
LA => La Verne Leopards
LAC => Lane Dragons
LAF => Lafayette Leopards
LAG => LaGrange College Panthers
LAK => Lake Forest Foresters
LAM => Lambuth Eagles
LAN => Langston Lions
LAW => Lawrence Vikings
LEB => Lebanon Valley Flying Dutchmen
LEH => Lehigh Mountain Hawks
LEN => Lenoir-Rhyne Bears
LEW => Lewis & Clark Pioneers
LIB => Liberty Flames
LIM => Limestone Saints
LIN => Linfield Wildcats
LOC => Lock Haven Bald Eagles
LOR => Loras College Duhawks
LOU => Louisville Cardinals
LSU => LSU Tigers
LT => Louisiana Tech Bulldogs
JXST => Jacksonville State Gamecocks
LUT => Luther Norse
LYC => Lycoming Warriors
M-OH => Miami (OH) RedHawks
MAC => Macalester Scots
MAI => Maine Maritime Mariners
MAN => Mansfield Mountaineers
MAR => Maryville College Fighting Scots
MAS => Mass Maritime Buccaneers
MASS => UMass Minutemen
MAY => Mayville State Comets
MCM => McMurry War Hawks
MCN => McNeese Cowboys
MD => Maryland Terrapins
MEM => Memphis Tigers
MEN => Menlo College Oaks
MER => Merchant Marine Mariners
MERC => Mercyhurst Lakers
MES => Colorado Mesa Mavericks
MET => Methodist Monarchs
MH => Mars Hill Mountain Lions
MIAMI => Miami Hurricanes
MICH => Michigan Wolverines
MID => Midwestern State Mustangs
MIL => Millsaps Majors
MIN => Minot State Beavers
MINN => Minnesota Golden Gophers
MIS => Missouri Western Griffons
MISS => Ole Miss Rebels
MIZ => Missouri Tigers
MNST => Minnesota State Mavericks
MONM => Monmouth Hawks
MONT => Montana Grizzlies
MOR => Morningside Chiefs
MORE => Morehead State Eagles
MORG => Morgan State Bears
MOU => Mount Union Raiders
MRSH => Marshall Thundering Herd
MRST => Marist Red Foxes
MSST => Mississippi State Bulldogs
MSU => Michigan State Spartans
MTST => Montana State Bobcats
MTSU => Middle Tennessee Blue Raiders
MTU => Michigan Tech Huskies
MUH => Muhlenberg Mules
MUR => Murray State Racers
MUS => Muskingum Fighting Muskies
MVSU => Mississippi Valley State Delta Devils
NAU => Northern Arizona Lumberjacks
NAVY => Navy Midshipmen
NBY => Newberry Wolves
NCAT => North Carolina A&T Aggies
NCCU => North Carolina Central Eagles
NCST => NC State Wolfpack
ND => Notre Dame Fighting Irish
NDOH => Notre Dame College Falcons
NDSU => North Dakota State Bison
NEB => Nebraska-Kearney Lopers
NEV => Nevada Wolf Pack
NH => New Haven Chargers
NICH => Nicholls Colonels
NIU => Northern Illinois Huskies
NMH => New Mexico Highlands Cowboys
NMI => Northern Michigan Wildcats
NMSU => New Mexico State Aggies
NOR => Univ. of Northwestern-St. Paul Eagles
NORF => Norfolk State Spartans
NW => Northwestern Wildcats
OBE => Oberlin Yeomen
ODU => Old Dominion Monarchs
OHI => Ohio Northern Polar Bears
OHIO => Ohio Bobcats
OKL => Oklahoma Baptist Bison
OKST => Oklahoma State Cowboys
OLI => Olivet College Comets
OMA => Omaha Mavericks
ORST => Oregon State Beavers
OSU => Ohio State Buckeyes
OTT => Otterbein Cardinals
OU => Oklahoma Sooners
PAC => Pacific (OR) Boxers
PENN => Pennsylvania Quakers
PIKE => Pikeville Bears
PITT => Pittsburgh Panthers
PRE => Presentation College Saints
PRI => Principia College Panthers
PRIN => Princeton Tigers
PST => Pittsburg State Gorillas
PSU => Penn State Nittany Lions
MESA => Colorado Mesa Mavericks
MIL => Millikin Big Blue
MOR => Morehouse College Maroon Tigers
NOR => North Park Vikings
RED => Redlands Bulldogs
RICE => Rice Owls
RICH => Richmond Spiders
RIT => Rochester Yellow Jackets
ROB => Robert Morris (IL) Eagles
ROS => Rose-Hulman Engineers
RUTG => Rutgers Scarlet Knights
SAC => Sacramento State Hornets
SAG => Saginaw Valley Cardinals
SDAK => South Dakota Coyotes
SDSU => San Diego State Aztecs
SET => Seton Hill Griffins
SIU => Southern Illinois Salukis
SJSU => San José State Spartans
SLI => Slippery Rock The Rock
SOU => Southwestern College Moundbuilders
SPR => Springfield College Pride
ST => St. Scholastica Saints
STAN => Stanford Cardinal
STE => Stevenson University Mustangs
STET => Stetson Hatters
STO => Stonehill College Skyhawks
SUS => Susquehanna University River Hawks
SUU => Southern Utah Thunderbirds
SYR => Syracuse Orange
TA&M => Texas A&M Aggies
TAY => Taylor Trojans
TEM => Temple Owls
TEX => Texas Longhorns
TIF => Tiffin University Dragons
TLSA => Tulsa Golden Hurricane
TRI => Trinity University (TX) Tigers
TUF => Tufts University Jumbos
TXST => Texas State Bobcats
UAB => UAB Blazers
UAPB => Arkansas-Pine Bluff Golden Lions
UCD => UC Davis Aggies
UCF => UCF Knights
UCLA => UCLA Bruins
UCONN => UConn Huskies
UGA => Georgia Bulldogs
UK => Kentucky Wildcats
UL => Louisiana Ragin' Cajuns
ULM => UL Monroe Warhawks
UMD => Minnesota-Duluth Bulldogs
UMDA => UMASS Dartmouth Corsairs
UML => UMass Lowell River Hawks
UNA => North Alabama Lions
UNC => North Carolina Tar Heels
UNCO => Northern Colorado Bears
UND => North Dakota Fighting Hawks
UNH => New Hampshire Wildcats
UNI => University of Mary Marauders
UNLV => UNLV Rebels
UNM => New Mexico Lobos
UNNY => Union Dutchmen
UNT => North Texas Mean Green
UPP => Upper Iowa Peacocks
URI => Rhode Island Rams
USA => South Alabama Jaguars
USC => USC Trojans
USD => San Diego Toreros
USF => South Florida Bulls
USU => Utah State Aggies
UTAH => Utah Utes
UTC => Chattanooga Mocs
UTI => Utica College Pioneers
UVA => Virginia Cavaliers
VAL => Valley City State Vikings
VAN => Vanderbilt Commodores
VILL => Villanova Wildcats
VIR => Virginia State Trojans
VT => Virginia Tech Hokies
WAB => Wabash College Little Giants
WAKE => Wake Forest Demon Deacons
WAS => Washington-Missouri Bears
WASH => Washington Huskies
WAY => Wayne State (MI) Warriors
WES => Westminster College (MO) Blue Jays
WHE => Wheaton College Illinois Thunder
WIL => Wilkes University Colonels
WIN => Wingate Bulldogs
WIS => Wisconsin-Platteville Pioneers
WISC => Wisconsin Badgers
WKU => Western Kentucky Hilltoppers
WOR => Worcester State College Lancers
WSU => Washington State Cougars
WVU => West Virginia Mountaineers
YALE => Yale Bulldogs
NBA
@@ -1106,6 +755,181 @@ MLB Conferences/Divisions
OAK => Oakland Athletics
SEA => Seattle Mariners
TEX => Texas Rangers
Soccer Leagues:
LEAGUE_SLUGS = {
"eng.1": "Premier League",
"esp.1": "La Liga",
"ger.1": "Bundesliga",
"ita.1": "Serie A",
"fra.1": "Ligue 1",
"uefa.champions": "Champions League",
"uefa.europa": "Europa League",
"usa.1": "MLS",
"por.1": "Liga Portugal", # Add this line
}
Soccer - Premier League (England)
ARS => Arsenal
AVL => Aston Villa
BHA => Brighton & Hove Albion
BOU => AFC Bournemouth
BRE => Brentford
BUR => Burnley
CHE => Chelsea
CRY => Crystal Palace
EVE => Everton
FUL => Fulham
LIV => Liverpool
LUT => Luton Town
MCI => Manchester City
MUN => Manchester United
NEW => Newcastle United
NFO => Nottingham Forest
SHU => Sheffield United
TOT => Tottenham Hotspur
WHU => West Ham United
WOL => Wolverhampton Wanderers
Soccer - La Liga (Spain)
ALA => Alavés
ATH => Athletic Bilbao
ATM => Atlético Madrid
BAR => Barcelona
BET => Real Betis
CAG => Cagliari
CEL => Celta Vigo
ESP => Espanyol
GET => Getafe
GIR => Girona
LAZ => Lazio
LEG => Leganés
RAY => Rayo Vallecano
RMA => Real Madrid
SEV => Sevilla
VAL => Valencia
VLD => Valladolid
Soccer - Bundesliga (Germany)
BOC => VfL Bochum
BOL => VfL Bochum
DOR => Borussia Dortmund
FCA => FC Augsburg
FCB => Bayern Munich
FCU => FC Union Berlin
HAC => Hannover 96
HDH => Hertha BSC
KOL => 1. FC Köln
LEV => Bayer Leverkusen
M05 => Mainz 05
RBL => RB Leipzig
SCF => SC Freiburg
SGE => Eintracht Frankfurt
STU => VfB Stuttgart
SVW => Werder Bremen
TSG => TSG Hoffenheim
WOB => VfL Wolfsburg
Soccer - Serie A (Italy)
ATA => Atalanta
CAG => Cagliari
EMP => Empoli
FIO => Fiorentina
INT => Inter Milan
JUV => Juventus
LAZ => Lazio
MIL => AC Milan
MON => Monza
NAP => Napoli
ROM => Roma
TOR => Torino
UDI => Udinese
VER => Hellas Verona
Soccer - Ligue 1 (France)
LIL => Lille
LPM => Lille
LYON => Lyon
MAR => Marseille
MON => Monaco
NAN => Nantes
NICE => Nice
OL => Olympique Lyonnais
OM => Olympique de Marseille
PAR => Paris Saint-Germain
PSG => Paris Saint-Germain
REN => Rennes
STR => Strasbourg
Soccer - Champions League
AJA => Ajax
ASM => AS Monaco
ASS => AS Saint-Étienne
BOC => VfL Bochum
CEL => Celtic
COM => Club Brugge
FCA => FC Augsburg
FCB => Bayern Munich
FCU => FC Union Berlin
FIO => Fiorentina
GEN => Genoa
HAC => Hannover 96
IPS => Ipswich Town
KSV => Kaiserslautern
LEC => Lecce
LIL => Lille
LIV => Liverpool
M05 => Mainz 05
MCI => Manchester City
MUN => Manchester United
NAN => Nantes
OSA => Osasuna
RBL => RB Leipzig
RCL => RC Lens
RMA => Real Madrid
SCF => SC Freiburg
SGE => Eintracht Frankfurt
SR => Sporting CP
STP => St. Pauli
SVW => Werder Bremen
TFC => Toulouse FC
TOT => Tottenham Hotspur
TSG => TSG Hoffenheim
UDI => Udinese
VEN => Venezia
VFB => VfB Stuttgart
VIL => Villarreal
Soccer - Liga Portugal (Portugal)
ARO => Arouca
BEN => SL Benfica
BRA => SC Braga
CHA => Chaves
EST => Estoril Praia
FAM => Famalicão
GIL => Gil Vicente
MOR => Moreirense
POR => FC Porto
PTM => Portimonense
RIO => Rio Ave
SR => Sporting CP
VGU => Vitória de Guimarães
VSC => Vitória de Setúbal
Soccer - Other Teams
austin => Austin FC
cf_montral => CF Montréal
charlotte => Charlotte FC
dortmund => Borussia Dortmund
gladbach => Borussia Mönchengladbach
lafc => Los Angeles FC
leverkusen => Bayer Leverkusen
nycfc => New York City FC
paris_sg => Paris Saint-Germain
st_louis => St. Louis City SC
MLS Conferences/Divisions
Conferences currently unsupported

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

View File

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 409 B

View File

Before

Width:  |  Height:  |  Size: 5.5 KiB

After

Width:  |  Height:  |  Size: 5.5 KiB

View File

Before

Width:  |  Height:  |  Size: 7.3 KiB

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

View File

Before

Width:  |  Height:  |  Size: 9.6 KiB

After

Width:  |  Height:  |  Size: 9.6 KiB

View File

Before

Width:  |  Height:  |  Size: 46 KiB

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

View File

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

View File

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 30 KiB

View File

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

View File

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

View File

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 4.5 KiB

View File

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 33 KiB

View File

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 109 KiB

View File

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

View File

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

View File

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View File

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 19 KiB

View File

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

View File

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 31 KiB

View File

Before

Width:  |  Height:  |  Size: 7.8 KiB

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

View File

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

View File

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View File

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

View File

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 386 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View File

Before

Width:  |  Height:  |  Size: 4.9 KiB

After

Width:  |  Height:  |  Size: 4.9 KiB

View File

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 30 KiB

View File

Before

Width:  |  Height:  |  Size: 53 KiB

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

View File

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

View File

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 36 KiB

View File

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

View File

Before

Width:  |  Height:  |  Size: 57 KiB

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

View File

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 33 KiB

View File

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Some files were not shown because too many files have changed in this diff Show More