pi-scoreboard

Pi Line Board

A Las Vegas sportsbook–style line board for college football and the NFL, built to run all day on a Raspberry Pi plugged into an old TV. Live scores, spreads, totals and moneylines in glowing CRT green, a full-screen game view with a live field, NFL fantasy leaders, and a phone remote you open by scanning a QR code on the TV.

NFL line board

Live demo: College football · NFL Shows real data from ESPN. Scores move on game days; the lines are there all week.

Features

The board

Game view — click (or send from the phone) any game for a full-screen view: big score, pregame line, a live field with the line of scrimmage, first-down marker and the offense’s logo, the last play, and each team’s top passer, rusher and receiver.

Game detail

NFL fantasy — the week’s top 5 at every position (ESPN PPR), and a My Players screen for your own roster with live points and stat lines.

Fantasy leaders My players
Fantasy leaders My players

Phone remote — the TV shows a QR code for its first minute. Scan it to switch leagues, change filters, open a game, page through the board, pick fantasy players, or set your teams.

Phone remote

How it works

 ESPN public APIs ──► LineBoard.html  (in the Pi's browser, full screen on the TV)
                          ▲    │
            settings,     │    │ what's on screen
            taps          │    ▼
                        server.py  (Python standard library, on the Pi)
                          ▲
                          │
                     remote.html  (your phone, same Wi-Fi)

It’s built to be left running:

Run it

Just the board: open LineBoard.html in a browser. Add ?league=nfl for the NFL.

With the phone remote (any computer with Python 3):

python3 server.py

Open http://localhost:8080/ for the board; the remote’s address and QR code appear on screen.

On a Raspberry Pi: copy the files into a folder on the Pi, then run once:

bash setup-pi.sh
sudo reboot

After that the Pi runs itself:

No mouse on the TV? bash hide-cursor.sh hides the desktop’s pointer too (undo with bash hide-cursor.sh off).

Pushing updates from another computer: create a .deploy.env file with your Pi’s login:

PI="username@192.168.1.50"
DIR="Scorebug"

then run ./deploy.sh. The TV reloads itself when a new board arrives, and the server restarts itself when server.py changes.

Board options (URL parameters, when not using the remote): league=cfb|nfl, my=OSU,MICH, sec=20 (seconds per page), cols=1, scope=today, sort=soon, top25=1.

Project history

ScoreBugv1.html is where this started: a simple multi-sport scorebug. The line board grew out of it.

Notes