Files
bggpipe/data/upload_log.csv
T
Eric WagonerandClaude Fable 5 ba55863cef Version picker: real pagination, and matching that declines to guess
Five games uploaded; two landed version-less. Neither was the picker's
fault: paging is an AngularJS <ul class="pagination"> of anchors, not
buttons named "next", so the old guess found no control and quit after
page one — and BGG's API version names carry printing qualifiers the
picker omits ("English edition 2018-2" vs "(English edition) (2018)").

_select_version now scans the WHOLE list (verified selectors: rows are
<li>s with a thumbnail; a[title="Next Page"] advances; the parent <li>
disables at the end), collects every candidate, then decides: one exact
match wins; failing that, one match after stripping a trailing year
qualifier wins and says so; several matches are refused outright rather
than guessed, and the reason reaches upload_log.csv. Both call sites
carry the reason through.

docs/bgg-upload-flow.md records what the live site actually does —
including that every login-gate selector the doc called "verified" was
wrong, while the "unverified" dialog structure was right.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016jXZFSTZQKzAC8fqpWSz9g
2026-08-05 22:36:48 -04:00

1.5 KiB

1actionbgg_idcollidnameversion_idsecond_copystatustimestamperror
2add334011A Gentle Rain701315failed2026-08-06T02:15:34+00:00TimeoutError: Locator.wait_for: Timeout 15000ms exceeded. Call log: - waiting for get_by_role("dialog").get_by_role("heading", name=re.compile(r"A\ Gentle\ Rain", re.IGNORECASE)) to be visible
3add589Wiz-War27352failed2026-08-06T02:20:33+00:00Error: Locator.check: Error: strict mode violation: get_by_role("dialog").get_by_label("Own") resolved to 2 elements: 1) <input type="checkbox" ng-model="item.status.own" class="ng-pristine ng-untouched ng-valid ng-empty"/> aka get_by_role("checkbox", name="Own", exact=True) 2) <input type="checkbox" ng-model="item.status.prevowned" class="ng-pristine ng-untouched ng-valid ng-empty"/> aka get_by_role("checkbox", name="Prev. Owned") Call log: - waiting for get_by_role("dialog").get_by_label("Own")
4add334011A Gentle Rain701315added2026-08-06T02:21:32+00:00
5add125921Catan: Junior476263added2026-08-06T02:24:22+00:00
6add31260Agricola297589added2026-08-06T02:24:28+00:00
7add181304Mysterium536289added_no_version2026-08-06T02:24:34+00:00version 'English edition 2018-2' not in picker; added without version
8add312786Poetry for Neanderthals514050added_no_version2026-08-06T02:24:40+00:00version 'English edition 2020' not in picker; added without version
9add273240The Red Dragon Inn Smorgasbox446069added2026-08-06T02:24:46+00:00