Add AFL scoreboard plugin#183
Conversation
Fork the sport-agnostic soccer-scoreboard into a single-league AFL (Australian Football League) scoreboard. - New afl_managers.py: ESPN australian-football/afl fetch + parsing, with AFL quarter (Q1-Q4) / HALF / Final / pre-game period_text mapping. - New single-league manager.py (AflScoreboardPlugin): afl_live / afl_recent / afl_upcoming modes, keeping switch/scroll display, dynamic duration, live priority + celebration, and Vegas scroll hooks. - Verbatim sport-generic modules (sports.py, game_renderer.py, data_sources.py, base_odds_manager.py, dynamic_team_resolver.py, scroll_display.py) with soccer wording/logo-dir constants updated for AFL. - Flat single-league config_schema.json (draft-07) with full customization parity lifted from soccer's per-league schema. - manifest.json, README.md, requirements.txt, plugins.json registry entry. - test/harness.json fixture (live/recent/upcoming) + test_afl_plugin.py smoke tests (mode routing, live content, AFL quarter parsing). Data source: https://site.api.espn.com/apis/site/v2/sports/australian-football/afl/scoreboard Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KEZK1P1Q1fu5pcuVrkrCFZ
|
Warning Review limit reached
Next review available in: 38 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (17)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Not up to standards ⛔🔴 Issues
|
| Category | Results |
|---|---|
| ErrorProne | 3 high |
| Security | 2 medium |
🟢 Metrics 1150 complexity
Metric Results Complexity 1150
NEW Get contextual insights on your PRs based on Codacy's metrics, along with PR and Jira context, without leaving GitHub. Enable AI reviewer
TIP This summary will be updated as you push new changes.
Summary
Adds a new AFL (Australian Football League) scoreboard plugin, forked from the sport-agnostic
soccer-scoreboard. AFL is a single league, so this is a flattened, simpler version of the multi-league template — noleagues/custom_leaguesnesting, no national-flag handling.It shows live, recent, and upcoming AFL games with real-time scores and game status, mapping AFL's four quarters (Q1–Q4) + HALF + Final + pre-game start time onto the shared
period_text/clockmodel.Data source
ESPN public scoreboard (no auth):
https://site.api.espn.com/apis/site/v2/sports/australian-football/afl/scoreboard→ HTTP 200, real 2026-season data.sport = australian-football,league = afl. Score is a single running integer per team; quarter comes fromstatus.period(1–4), clock fromstatus.displayClock.Parity with soccer-scoreboard
Full feature/customization parity, collapsed to one league:
afl_live,afl_recent,afl_upcomingmode_durationsget_vegas_content_type→multi)customizationblock (fonts/sizes) lifted verbatim from soccer's schemaSport-generic modules (
sports.py,game_renderer.py,data_sources.py,base_odds_manager.py,dynamic_team_resolver.py,scroll_display.py) are copied with only soccer wording / logo-dir constants updated for AFL.Files
plugins/afl-scoreboard/manager.py—AflScoreboardPlugin(single-league orchestrator)plugins/afl-scoreboard/afl_managers.py— ESPN fetch + AFL parsing,create_afl_managersplugins/afl-scoreboard/config_schema.json— flat single-league draft-07 schemaplugins/afl-scoreboard/manifest.json,README.md,requirements.txtplugins/afl-scoreboard/test/harness.json+test_afl_plugin.pyplugins.json— registry entry (plugin_path: plugins/afl-scoreboard)Test plan
python3 -m py_compilepasses on every.pymanifest.json,config_schema.json,test/harness.json,plugins.jsonall parsepython3 test_afl_plugin.pypasses (display modes, mode routing, empty-manager skip, live content, AFL quarterperiod_textmapping)status/competitorsfieldsgrep -ri soccer plugins/afl-scoreboard/clean except two origin-provenance commentsscripts/check_plugin.pyagainsttest/harness.jsonacross matrix sizes (needs a LEDMatrix core checkout)🤖 Generated with Claude Code