Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -57,3 +57,9 @@ debug_cropped.png
# them next to itself (plugins/stock-news/assets/logos), so without this a
# local run leaves third-party logo files sitting untracked in the plugin tree.
plugins/stock-news/assets/logos/

# nfl-draft copies its bundled logo into assets/sports/nfl_logos at start-up,
# using a path relative to the working directory. On a real install that is the
# LEDMatrix root; running the docs renderer or the harness from this repo drops
# it here instead, where it does not belong.
/assets/
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ curl -X POST http://your-pi-ip:5000/api/v3/plugins/install \
| [UFC Scoreboard](./plugins/ufc-scoreboard/) | UFC/MMA live fights, fighter headshots, records, odds & results — *by [LegoGuy1000](https://github.com/legoguy1000)* | |
| [Masters Tournament](./plugins/masters-tournament/) | Live Masters golf leaderboard, hole tracking, player cards | |
| [March Madness](./plugins/march-madness/) | NCAA tournament bracket tracker with round branding and live scores | |
| [NFL Draft](./plugins/nfl-draft/) | Projected & live NFL draft picks from ESPN | |
| [NFL Draft](./plugins/nfl-draft/) | Projected & live NFL draft picks from ESPN | <a href="./plugins/nfl-draft/"><img src="./docs/assets/nfl-draft/hero.png" width="240" alt="nfl-draft on an LED panel"></a> |
| [Odds Ticker](./plugins/odds-ticker/) | Betting odds & lines across NFL, NBA, MLB, NHL, NCAA | |
| [Sports Leaderboard](./plugins/ledmatrix-leaderboard/) | League standings, rankings, conference records | |
| [Olympics Countdown](./plugins/olympics/) | Countdown to next Olympics with live medal counts | |
Expand Down
Binary file added docs/assets/nfl-draft/detail-line.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/assets/nfl-draft/fonts.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/assets/nfl-draft/hero.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/assets/nfl-draft/panel-sizes.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
216 changes: 216 additions & 0 deletions docs/assets/nfl-draft/shots.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,216 @@
{
"plugin": "nfl-draft",
"_comment": "Picks are seeded onto the plugin instance rather than fetched from ESPN. The ticker scrolls, so shots step frames. Players and teams are the real 2025 first round, which is public record; nothing is downloaded at render time.",
"defaults": {
"width": 128,
"height": 32,
"scale": 6,
"freeze_time": "2026-04-24T20:00:00+00:00",
"skip_update": true,
"frames": 40,
"config": {
"enabled": true
},
"attrs": {
"draft_picks": [
{
"pick_number": 1,
"round": 1,
"round_pick": 1,
"team_abbr": "TEN",
"team_name": "Tennessee Titans",
"player_name": "Cam Ward",
"position": "QB",
"college": "Miami",
"on_clock": false
},
{
"pick_number": 2,
"round": 1,
"round_pick": 2,
"team_abbr": "CLE",
"team_name": "Cleveland Browns",
"player_name": "Travis Hunter",
"position": "WR",
"college": "Colorado",
"on_clock": false
},
{
"pick_number": 3,
"round": 1,
"round_pick": 3,
"team_abbr": "NYG",
"team_name": "New York Giants",
"player_name": "Abdul Carter",
"position": "EDGE",
"college": "Penn State",
"on_clock": false
},
{
"pick_number": 4,
"round": 1,
"round_pick": 4,
"team_abbr": "NE",
"team_name": "New England Patriots",
"player_name": "Will Campbell",
"position": "OT",
"college": "LSU",
"on_clock": true
},
{
"pick_number": 33,
"round": 2,
"round_pick": 1,
"team_abbr": "BUF",
"team_name": "Buffalo Bills",
"player_name": "Nick Emmanwori",
"position": "S",
"college": "South Carolina",
"on_clock": false
}
],
"draft_status": "live",
"current_round": 1,
"is_draft_live": true
}
},
"shots": [
{
"name": "hero",
"frames": 300,
"width": 256
},
{
"name": "pos-on",
"frames": 300,
"width": 256,
"standalone": false,
"config": {
"show_position": true,
"show_college": true
}
},
{
"name": "pos-off",
"frames": 300,
"width": 256,
"standalone": false,
"config": {
"show_position": false,
"show_college": true
}
},
{
"name": "col-off",
"frames": 300,
"width": 256,
"standalone": false,
"config": {
"show_position": true,
"show_college": false
}
},
{
"name": "font-press",
"frames": 300,
"width": 256,
"standalone": false,
"config": {
"font": "PressStart2P-Regular.ttf"
}
},
{
"name": "font-4x6",
"frames": 300,
"width": 256,
"standalone": false,
"config": {
"font": "4x6-font.ttf"
}
},
{
"name": "size-64x32",
"width": 64,
"frames": 300,
"standalone": false
},
{
"name": "size-128x32",
"width": 128,
"frames": 300,
"standalone": false
},
{
"name": "size-128x64",
"width": 128,
"height": 64,
"frames": 300,
"standalone": false
},
{
"name": "size-256x32",
"width": 256,
"frames": 300,
"standalone": false
}
],
"composites": [
{
"name": "detail-line",
"columns": 1,
"cells": [
{
"shot": "pos-on",
"label": "position and college on",
"sublabel": "#1 QB (Miami)"
},
{
"shot": "pos-off",
"label": "show_position: false"
},
{
"shot": "col-off",
"label": "show_college: false"
}
]
},
{
"name": "fonts",
"columns": 1,
"cells": [
{
"shot": "font-press",
"label": "font: PressStart2P-Regular.ttf",
"sublabel": "the default"
},
{
"shot": "font-4x6",
"label": "font: 4x6-font.ttf",
"sublabel": "narrower, so more fits per card"
}
]
},
{
"name": "panel-sizes",
"columns": 2,
"cells": [
{
"shot": "size-64x32",
"label": "64 x 32"
},
{
"shot": "size-128x32",
"label": "128 x 32"
},
{
"shot": "size-128x64",
"label": "128 x 64"
},
{
"shot": "size-256x32",
"label": "256 x 32"
}
]
}
]
}
4 changes: 2 additions & 2 deletions plugins.json
Original file line number Diff line number Diff line change
Expand Up @@ -602,10 +602,10 @@
"plugin_path": "plugins/nfl-draft",
"stars": 0,
"downloads": 0,
"last_updated": "2026-08-05",
"last_updated": "2026-09-03",
"verified": true,
"screenshot": "",
"latest_version": "1.4.2",
"latest_version": "1.4.3",
"icon": "fas fa-football-ball"
},
{
Expand Down
58 changes: 56 additions & 2 deletions plugins/nfl-draft/README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
# NFL Draft Plugin for LEDMatrix

![A first-round pick on a 256x32 panel: the team helmet, the player name, and a
detail line reading #1 QB (Miami)](../../docs/assets/nfl-draft/hero.png)

*Every image in this README is real plugin output, rendered at the true panel
size from seeded picks so it reproduces exactly. The picks are the real 2025
first round; the team marks are the logo assets the plugin already ships.*

Displays projected and live NFL draft picks from ESPN on your LED matrix display.

[![Buy Me a Coffee](https://img.shields.io/badge/Buy%20Me%20a%20Coffee-sarjent-FFDD00?style=for-the-badge&logo=buy-me-a-coffee&logoColor=black)](https://buymeacoffee.com/sarjent)
Expand Down Expand Up @@ -34,8 +41,8 @@ Plugin path: plugins/nfl-draft
| `font` | string | `"PressStart2P-Regular.ttf"` | Font file from assets/fonts/ |
| `player_name_font_size` | integer | `12` | Font size for player names |
| `detail_font_size` | integer | `8` | Font size for pick number / position / college |
| `player_name_color` | object | `{r:255,g:255,b:255}` | RGB color for player names |
| `pick_number_color` | object | `{r:255,g:255,b:255}` | RGB color for detail line |
| `player_name_color` | object | `{r:255,g:255,b:255}` | Player-name colour, as separate `player_name_color.r`, `player_name_color.g` and `player_name_color.b` values (0–255) |
| `pick_number_color` | object | `{r:255,g:255,b:255}` | Detail-line colour, as separate `pick_number_color.r`, `pick_number_color.g` and `pick_number_color.b` values (0–255) |
| `scroll_speed` | number | `30` | Scroll speed in pixels per second |
| `live_refresh_interval` | integer | `600` | Refresh interval during live draft (seconds) |
| `projection_refresh_interval` | integer | `86400` | Refresh interval for projections (seconds) |
Expand All @@ -49,6 +56,38 @@ Plugin path: plugins/nfl-draft
| `simulate_live` | boolean | `false` | Replay a completed draft year as if it were live |
| `simulate_year` | integer | `2025` | Draft year to use when `simulate_live` is enabled |

### After the draft ends

| Key | Default | Notes |
|---|---|---|
| `post_draft_show` | `"both"` | What to display during the post-draft window. 'favorites' = only picks for your favorite teams, 'rounds' = per-round results for all teams, 'both' = favorite team picks followed by per-round results — one of `favorites`, `rounds`, `both`. |
| `post_draft_days` | `7` | Number of days after the draft ends to keep showing results. After this window the plugin goes silent until the following February (1–30). |
| `display_rounds` | `3` | Number of rounds to display during the post-draft window (1 = first round only, 7 = all rounds). Only applies when post_draft_show is 'rounds' or 'both' (1–7). |

### Duration and rotation

| Key | Default | Notes |
|---|---|---|
| `dynamic_duration.enabled` | `true` | . |
| `dynamic_duration.min_duration` | `30` | Minimum display duration in seconds. |
| `dynamic_duration.max_duration` | `300` | Maximum display duration in seconds. |
| `vegas_mode` | `"scroll"` | Override how this plugin appears in Vegas scroll mode. 'scroll' = individual picks scroll through the stream (default), 'fixed' = entire display scrolls by as one block, 'static' = scroll pauses while plugin displays for its duration — one of `scroll`, `fixed`, `static`. |

### Settings that do nothing

`transition.type` and `transition.speed` are in the schema and the web UI form,
and nothing reads them — not this plugin and not the LEDMatrix core, which
implements no display transitions. Four other plugins carry the same dead
block, tracked in
[issue #381](https://github.com/ChuckBuilds/ledmatrix-plugins/issues/381).

| Key | Default | Notes |
|---|---|---|
| `transition.type` | `"redraw"` | one of `redraw`, `fade`, `slide`, `wipe`. Not implemented. |
| `transition.speed` | `2` | Transition speed (1-10). Not implemented. |
| `transition.enabled` | `true` | Enable transitions. Not implemented. |


## Display Layout

```text
Expand All @@ -58,6 +97,21 @@ Plugin path: plugins/nfl-draft

Each pick card scrolls horizontally. During live draft, a **ROUND X** label precedes the picks and the next pick shows **On the Clock** in green.

`show_position` and `show_college` each drop a piece of the detail line:

![the detail line with and without position and college](../../docs/assets/nfl-draft/detail-line.png)

`font` changes the face for both rows. The 4x6 face is narrower, so more of a
long player name fits before the card scrolls past:

![PressStart2P against 4x6](../../docs/assets/nfl-draft/fonts.png)

![The same pick on four panel sizes](../../docs/assets/nfl-draft/panel-sizes.png)

On first run the plugin copies its bundled `nfl_draft_logo.png` into the
LEDMatrix `assets/sports/nfl_logos/` folder, so the shared sports renderer can
find it alongside the team logos.

## Live Draft Mode

The plugin detects the draft automatically — **no config change is required**. When ESPN reports `state: in`, the plugin switches to live picks, shows the current round, and marks the next pick on the clock.
Expand Down
10 changes: 8 additions & 2 deletions plugins/nfl-draft/manifest.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"id": "nfl-draft",
"name": "NFL Draft",
"version": "1.4.2",
"version": "1.4.3",
"author": "ChuckBuilds",
"description": "Displays projected NFL draft picks from ESPN with live draft tracking support during the annual NFL Draft event. Includes simulate_live mode to replay a completed draft using real ESPN core API data. Shows team logos, player names, positions, and pick numbers in a scrolling display.",
"entry_point": "manager.py",
Expand All @@ -24,6 +24,12 @@
],
"icon": "fas fa-football-ball",
"versions": [
{
"version": "1.4.3",
"released": "2026-09-03",
"notes": "Documentation. The configuration table covered 21 of the 33 settings; the twelve it missed include the three that decide what the panel shows once the draft is over (post_draft_show, post_draft_days, display_rounds), the dynamic-duration block and vegas_mode. All 33 are now documented, with transition.type, .speed and .enabled marked as read by nothing (#381). Adds real rendered screenshots of a pick card, the show_position and show_college toggles, two of the offered fonts, and four panel sizes.",
"ledmatrix_min_version": "2.0.0"
},
{
"version": "1.4.2",
"released": "2026-08-19",
Expand Down Expand Up @@ -124,5 +130,5 @@
"nfl_logos": "assets/sports/nfl_logos/"
},
"license": "GPL-3.0",
"last_updated": "2026-08-05"
"last_updated": "2026-09-03"
}
Loading