bggpipe export: the library as static pages for any site
Eric wanted the library on his blog; the spec always called games.json "the seed for a future web frontend." The new export stage renders it as self-contained static pages — an index with search, one page per game with facts, chips, the owner's edition and the description — that drop into any static host (Hugo's static/ folder included). No server, no build step, no external requests from the published pages. Public pages carry obligations a localhost app doesn't. Cover art is downloaded once from BGG's CDN instead of hotlinked (0.3s between fetches — a guest, not a crawler; part-file writes so a failure never leaves a truncated image; re-runs skip what exists, so the export is idempotent and resumable like every stage). The footer shows a Powered-by-BGG badge per BGG's public-app policy — text by default, upgraded to the official logo when the owner saves it from their registered-application page as data/powered-by-bgg.png — plus the trademark attribution. And one privacy rule, tested: shelf photos are never exported; they picture the inside of the owner's home. Covers and hand-added local art only, per Eric's explicit choice. Slugs are deterministic and collision-stable (two editions of one game get -2 suffixes in sorted-key order) so re-exports keep every URL. Descriptions un-double-encode BGG's entities. First real run: 136 pages, 254 covers, 64MB, live on the blog's static directory. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016jXZFSTZQKzAC8fqpWSz9g
This commit is contained in:
co-authored by
Claude Fable 5
parent
e778452dd1
commit
f677c7ce65
@@ -109,6 +109,29 @@ BGG application approval can take a week or more. Until then: `extract` works im
|
||||
- `https://boardgamegeek.com/xmlapi2/collection?username=YOU&own=1&version=1`
|
||||
- `https://boardgamegeek.com/xmlapi2/collection?username=YOU&own=1&version=1&subtype=boardgameexpansion`
|
||||
|
||||
## Publishing your library on your own site
|
||||
|
||||
```sh
|
||||
bggpipe export --out ~/my-site/static/library --title "My Game Shelves"
|
||||
```
|
||||
|
||||
Writes the library as self-contained static pages: an index with search, one
|
||||
page per game, and a local copy of every cover (public pages must not hotlink
|
||||
BGG's image CDN). No server, no build step — drop the directory into any
|
||||
static host, Hugo/Jekyll `static/` folder included. Re-runs are idempotent:
|
||||
already-downloaded covers are kept, failed downloads are retried, and page
|
||||
URLs stay stable.
|
||||
|
||||
What's included follows a privacy rule: cover art, stats, your editions, and
|
||||
your hand-added local games — **never your shelf photos** (they picture the
|
||||
inside of your home; they stay in the private app).
|
||||
|
||||
BGG's API policy asks public-facing apps to display the "Powered by BGG"
|
||||
badge. The footer carries a text badge automatically; to show the official
|
||||
logo, save it from your registered application page at
|
||||
[boardgamegeek.com/applications](https://boardgamegeek.com/applications) as
|
||||
`data/powered-by-bgg.png` and re-export.
|
||||
|
||||
## Keeping your data safe from git
|
||||
|
||||
The [README's quick start](../README.md#quick-start) — installed as a tool, run in a directory of your own — is the only supported way to use bggpipe on your collection. Everything the pipeline produces lives where you run it, and `uv tool upgrade bggpipe` picks up fixes without going anywhere near your data.
|
||||
|
||||
Reference in New Issue
Block a user