From 6ae2667c586324dbd6b92058b65b292a65bf44db Mon Sep 17 00:00:00 2001 From: Eric Wagoner Date: Wed, 5 Aug 2026 22:22:11 -0400 Subject: [PATCH] First real upload lands: three browser-flow bugs, found by doing it MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A Gentle Rain is on BGG (collid 148198034, version 701315 — the English Bloom edition matched from a shelf photo), verified by re-fetching the collection. The failures on the way, all in the login gate the docs called "verified" and none in the version-picker code they called "unverified": 1. BGG's Sign In is an with NO href, so it has no implicit link role: get_by_role("link", name="Sign In") matched zero elements in EVERY state, and "no Sign In link" was read as "already signed in". Every run browsed anonymously. 2. The header hydrates after domcontentloaded, so for a moment neither control exists — a check resting on one absence guesses. _signed_out() now polls until the page proves one state or the other (Sign In vs Sign Out) and raises after 30s rather than assume; login is verified by the transition, and the session file saves only after that proof. 3. get_by_label("Own") also matched "Prev. Owned" — strict-mode violation; the Own checkbox is now matched exactly. Also: Playwright's multi-line call logs no longer break upload_log.csv into ragged rows (errors flatten to one line). Three unit tests cover the hydration window, positive detection, and the undeterminable case. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_016jXZFSTZQKzAC8fqpWSz9g --- data/matches.csv | 26 ++++++++--------- data/to_add.csv | 65 ++++++++++++++++++++++++++++++++++++++++--- data/to_update.csv | 34 ++++++++++++++++++++++ data/upload_log.csv | 4 +++ src/bggpipe/upload.py | 47 ++++++++++++++++++++++++++----- tests/test_upload.py | 54 +++++++++++++++++++++++++++++++++++ 6 files changed, 206 insertions(+), 24 deletions(-) create mode 100644 data/upload_log.csv diff --git a/data/matches.csv b/data/matches.csv index ce12ef5..6347d34 100644 --- a/data/matches.csv +++ b/data/matches.csv @@ -9,7 +9,7 @@ Civilization - Game of the Heroic Age - The Dawn of History 8000 BC to 250 BC,71 Advanced Civilization - Game Expansion of the Heroic Age,177,Advanced Civilization,1991,boardgame,auto,24972,English edition,version_auto,"[{""bgg_id"": 177, ""name"": ""Advanced Civilization"", ""year"": 1991, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 59.2, ""owned"": null, ""rank"": null}]","[{""version_id"": 24972, ""name"": ""English edition"", ""year"": 1991, ""publishers"": [""The Avalon Hill Game Co""], ""languages"": [""English""], ""score"": 3}]",IMG_4500.jpeg,, Doctor Who - The Game of Time & Space,3090,Doctor Who: The Game of Time & Space,1980,boardgame,auto,25782,English edition,version_auto,"[{""bgg_id"": 3090, ""name"": ""Doctor Who: The Game of Time & Space"", ""year"": 1980, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": null, ""rank"": null}]","[{""version_id"": 25782, ""name"": ""English edition"", ""year"": 1980, ""publishers"": [""Games Workshop Ltd.""], ""languages"": [""English""], ""score"": 3}]",IMG_4500.jpeg,, Sorcerer - The Game of Magical Conflict,3585,Sorcerer: The Game of Magical Conflict,1975,boardgame,auto,211154,SPI Designer's Edition,version_auto,"[{""bgg_id"": 3585, ""name"": ""Sorcerer: The Game of Magical Conflict"", ""year"": 1975, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": null, ""rank"": null}]","[{""version_id"": 211154, ""name"": ""SPI Designer's Edition"", ""year"": 1975, ""publishers"": [""SPI (Simulations Publications, Inc.)""], ""languages"": [""English""], ""score"": 5}, {""version_id"": 158145, ""name"": ""SPI boxed edition"", ""year"": 1975, ""publishers"": [""SPI (Simulations Publications, Inc.)""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 249246, ""name"": ""SPI flat-pack edition"", ""year"": 1975, ""publishers"": [""SPI (Simulations Publications, Inc.)""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 33889, ""name"": ""UK flat box edition"", ""year"": 1975, ""publishers"": [""SPI (Simulations Publications, Inc.)""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 158147, ""name"": ""SPI French/Dutch edition"", ""year"": 1975, ""publishers"": [""SPI (Simulations Publications, Inc.)""], ""languages"": [""Dutch"", ""French""], ""score"": 2}]",IMG_4500.jpeg,, -StarForce - Alpha Centauri - Interstellar Conflict in the 25th Century,2524,StarForce 'Alpha Centauri': Interstellar Conflict in the 25th Century,1974,boardgame,auto,,,version_ambiguous,"[{""bgg_id"": 2524, ""name"": ""StarForce 'Alpha Centauri': Interstellar Conflict in the 25th Century"", ""year"": 1974, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": null, ""rank"": null}]","[{""version_id"": 219137, ""name"": ""SPI boxed designer's edition"", ""year"": 1974, ""publishers"": [""SPI (Simulations Publications, Inc.)""], ""languages"": [""English""], ""score"": 5}, {""version_id"": 108034, ""name"": ""SPI Designer's Edition"", ""year"": 1974, ""publishers"": [""SPI (Simulations Publications, Inc.)""], ""languages"": [""English""], ""score"": 5}, {""version_id"": 28154, ""name"": ""SPI flat pack designer's edition"", ""year"": 1974, ""publishers"": [""SPI (Simulations Publications, Inc.)""], ""languages"": [""English""], ""score"": 5}, {""version_id"": 28238, ""name"": ""SPI boxed edition"", ""year"": 1974, ""publishers"": [""SPI (Simulations Publications, Inc.)""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 249134, ""name"": ""SPI Flat Tray Standard Edition"", ""year"": 1974, ""publishers"": [""SPI (Simulations Publications, Inc.)""], ""languages"": [""English""], ""score"": 3}]",IMG_4500.jpeg,, +StarForce - Alpha Centauri - Interstellar Conflict in the 25th Century,2524,StarForce 'Alpha Centauri': Interstellar Conflict in the 25th Century,1974,boardgame,auto,219137,SPI boxed designer's edition,version_approved,"[{""bgg_id"": 2524, ""name"": ""StarForce 'Alpha Centauri': Interstellar Conflict in the 25th Century"", ""year"": 1974, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": null, ""rank"": null}]","[{""version_id"": 219137, ""name"": ""SPI boxed designer's edition"", ""year"": 1974, ""publishers"": [""SPI (Simulations Publications, Inc.)""], ""languages"": [""English""], ""score"": 5}, {""version_id"": 108034, ""name"": ""SPI Designer's Edition"", ""year"": 1974, ""publishers"": [""SPI (Simulations Publications, Inc.)""], ""languages"": [""English""], ""score"": 5}, {""version_id"": 28154, ""name"": ""SPI flat pack designer's edition"", ""year"": 1974, ""publishers"": [""SPI (Simulations Publications, Inc.)""], ""languages"": [""English""], ""score"": 5}, {""version_id"": 28238, ""name"": ""SPI boxed edition"", ""year"": 1974, ""publishers"": [""SPI (Simulations Publications, Inc.)""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 249134, ""name"": ""SPI Flat Tray Standard Edition"", ""year"": 1974, ""publishers"": [""SPI (Simulations Publications, Inc.)""], ""languages"": [""English""], ""score"": 3}]",IMG_4500.jpeg,, a Gentle Rain,334011,A Gentle Rain,2021,boardgame,auto,701315,English Bloom edition,version_auto,"[{""bgg_id"": 334011, ""name"": ""A Gentle Rain"", ""year"": 2021, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": null, ""rank"": null}]","[{""version_id"": 701315, ""name"": ""English Bloom edition"", ""year"": 2024, ""publishers"": [""Incredible Dream Studios""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 798833, ""name"": ""Polish Bloom edition"", ""year"": 2026, ""publishers"": [""MeepleMood""], ""languages"": [""Polish""], ""score"": 2}]",IMG_4501.jpeg;IMG_4507.jpeg,, SANTORINI,194655,Santorini,2016,boardgame,auto,,,version_unknown,"[{""bgg_id"": 9963, ""name"": ""Santorini"", ""year"": 2004, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": 387, ""rank"": 5834}, {""bgg_id"": 146645, ""name"": ""Santorini"", ""year"": null, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": 84, ""rank"": null}, {""bgg_id"": 194655, ""name"": ""Santorini"", ""year"": 2016, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": 66422, ""rank"": 315}]",[],IMG_4501.jpeg;IMG_4502.jpeg;IMG_4506.jpeg;IMG_4507.jpeg;IMG_4556.jpeg,, Utter Nonsense!,161928,Utter Nonsense,2014,boardgame,auto,,,version_unknown,"[{""bgg_id"": 161928, ""name"": ""Utter Nonsense"", ""year"": 2014, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": null, ""rank"": null}]",[],IMG_4501.jpeg;IMG_4507.jpeg;IMG_4556.jpeg,, @@ -24,7 +24,7 @@ Diplomacy,483,Diplomacy,1959,boardgame,auto,,,version_unknown,"[{""bgg_id"": 483 Age of Renaissance,26,Age of Renaissance,1996,boardgame,auto,,,version_unknown,"[{""bgg_id"": 26, ""name"": ""Age of Renaissance"", ""year"": 1996, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": null, ""rank"": null}]",[],IMG_4502.jpeg,, History of the World,224,History of the World,1991,boardgame,auto,20727,Avalon Hill/Hasbro edition,version_auto,"[{""bgg_id"": 224, ""name"": ""History of the World"", ""year"": 1991, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": 5948, ""rank"": 1274}, {""bgg_id"": 235591, ""name"": ""History of the World"", ""year"": 2018, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": 1960, ""rank"": 3203}, {""bgg_id"": 426957, ""name"": ""History of the World"", ""year"": 2025, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": 175, ""rank"": 19811}]","[{""version_id"": 20727, ""name"": ""Avalon Hill/Hasbro edition"", ""year"": 2001, ""publishers"": [""Avalon Hill""], ""languages"": [""English""], ""score"": 3}]",IMG_4502.jpeg,, Dungeon!,345770,.dungeon,2021,rpgitem,auto,,,version_unknown,"[{""bgg_id"": 345770, ""name"": "".dungeon"", ""year"": 2021, ""type"": ""rpgitem"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": null, ""rank"": null}]",[],IMG_4502.jpeg,, -TICKET TO RIDE,9209,Ticket to Ride,2004,boardgame,auto,,,version_ambiguous,"[{""bgg_id"": 9209, ""name"": ""Ticket to Ride"", ""year"": 2004, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": null, ""rank"": null}]","[{""version_id"": 468280, ""name"": ""15th anniversary special edition"", ""year"": 2019, ""publishers"": [""Days of Wonder""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 469076, ""name"": ""Afrikaans/English edition"", ""year"": 2019, ""publishers"": [""Days of Wonder""], ""languages"": [""Afrikaans"", ""English""], ""score"": 3}, {""version_id"": 410646, ""name"": ""English edition 2007 with \""Over 1.1 million games sold\"""", ""year"": 2007, ""publishers"": [""Days of Wonder""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 191794, ""name"": ""English edition 2007 with \""Over 2 million games sold\"""", ""year"": 2007, ""publishers"": [""Days of Wonder""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 228833, ""name"": ""English edition 2012 with \""Over 3 million games sold\"""", ""year"": 2012, ""publishers"": [""Days of Wonder""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 294188, ""name"": ""English edition 2012 with Spiel des Jahres logo"", ""year"": 2012, ""publishers"": [""Days of Wonder""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 236459, ""name"": ""English edition 2013"", ""year"": 2013, ""publishers"": [""Days of Wonder""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 447075, ""name"": ""English edition 2015"", ""year"": 2015, ""publishers"": [""Days of Wonder""], ""languages"": [""English""], ""score"": 3}]",IMG_4504.jpeg,, +TICKET TO RIDE,9209,Ticket to Ride,2004,boardgame,auto,294188,English edition 2012 with Spiel des Jahres logo,version_approved,"[{""bgg_id"": 9209, ""name"": ""Ticket to Ride"", ""year"": 2004, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": null, ""rank"": null}]","[{""version_id"": 468280, ""name"": ""15th anniversary special edition"", ""year"": 2019, ""publishers"": [""Days of Wonder""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 469076, ""name"": ""Afrikaans/English edition"", ""year"": 2019, ""publishers"": [""Days of Wonder""], ""languages"": [""Afrikaans"", ""English""], ""score"": 3}, {""version_id"": 410646, ""name"": ""English edition 2007 with \""Over 1.1 million games sold\"""", ""year"": 2007, ""publishers"": [""Days of Wonder""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 191794, ""name"": ""English edition 2007 with \""Over 2 million games sold\"""", ""year"": 2007, ""publishers"": [""Days of Wonder""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 228833, ""name"": ""English edition 2012 with \""Over 3 million games sold\"""", ""year"": 2012, ""publishers"": [""Days of Wonder""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 294188, ""name"": ""English edition 2012 with Spiel des Jahres logo"", ""year"": 2012, ""publishers"": [""Days of Wonder""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 236459, ""name"": ""English edition 2013"", ""year"": 2013, ""publishers"": [""Days of Wonder""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 447075, ""name"": ""English edition 2015"", ""year"": 2015, ""publishers"": [""Days of Wonder""], ""languages"": [""English""], ""score"": 3}]",IMG_4504.jpeg,, CATAN,13,Catan,1995,boardgame,auto,347121,English edition 2016,version_approved,"[{""bgg_id"": 13, ""name"": ""Catan"", ""year"": 1995, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": 243104, ""rank"": 626}, {""bgg_id"": 66056, ""name"": ""Catan Двубоят"", ""year"": 2010, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": 21829, ""rank"": 1187}]","[{""version_id"": 347121, ""name"": ""English edition 2016"", ""year"": 2016, ""publishers"": [""Catan Studio""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 495726, ""name"": ""English edition 2019"", ""year"": 2019, ""publishers"": [""Catan Studio""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 568647, ""name"": ""English edition 2020"", ""year"": 2020, ""publishers"": [""Catan Studio""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 733924, ""name"": ""English edition 2023"", ""year"": 2023, ""publishers"": [""Catan Studio""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 416798, ""name"": ""Afrikaans edition"", ""year"": 0, ""publishers"": [""Catan Studio""], ""languages"": [""Afrikaans""], ""score"": 2}]",IMG_4504.jpeg;IMG_4542.jpeg,, RAMPAGE,97903,Rampage,2013,boardgame,auto,,,version_unknown,"[{""bgg_id"": 97903, ""name"": ""Rampage"", ""year"": 2013, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": null, ""rank"": null}]",[],IMG_4504.jpeg,, Onitama,160477,Onitama,2014,boardgame,auto,,,version_unknown,"[{""bgg_id"": 160477, ""name"": ""Onitama"", ""year"": 2014, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": null, ""rank"": null}]",[],IMG_4505.jpeg,, @@ -59,14 +59,14 @@ SKYLANDERS PORTAL MASTER,156994,Skylanders Portal Master,2013,boardgame,auto,,,v LASER MAZE BEAM-BENDING LOGIC GAME,,,,,local,,,,[],[],IMG_4516.jpeg,, CAPTAIN MARVEL SECRET SKRULLS,269564,Captain Marvel: Secret Skrulls,2019,boardgame,auto,,,version_unknown,"[{""bgg_id"": 269564, ""name"": ""Captain Marvel: Secret Skrulls"", ""year"": 2019, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": null, ""rank"": null}]",[],IMG_4516.jpeg,, Pie Face!,18755,Pie Face!,1964,boardgame,approved,,,version_unknown,"[{""bgg_id"": 16562, ""name"": ""Pie Face"", ""year"": 1993, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": 274, ""rank"": 29603}, {""bgg_id"": 18755, ""name"": ""Pie Face!"", ""year"": 1964, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": 1404, ""rank"": 30933}]",[],IMG_4517.jpeg,, -Walk the Plank!,35505,Walk the Plank!,2013,boardgame,auto,,,version_ambiguous,"[{""bgg_id"": 21834, ""name"": ""Walk the Plank"", ""year"": 2002, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": 18, ""rank"": null}, {""bgg_id"": 29010, ""name"": ""Walk the Plank"", ""year"": 2007, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": 179, ""rank"": 28080}, {""bgg_id"": 152950, ""name"": ""Walk the Plank"", ""year"": null, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": 5, ""rank"": null}, {""bgg_id"": 35505, ""name"": ""Walk the Plank!"", ""year"": 2013, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": 3127, ""rank"": 3700}]","[{""version_id"": 781669, ""name"": ""English MDG-4311 edition"", ""year"": 2013, ""publishers"": [""Mayday Games""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 189968, ""name"": ""English MYY4311 edition"", ""year"": 2013, ""publishers"": [""Mayday Games""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 483159, ""name"": ""Russian edition"", ""year"": 2013, ""publishers"": [""Cosmodrome Games"", ""Mayday Games""], ""languages"": [""Russian""], ""score"": 2}]",IMG_4517.jpeg;IMG_4549.jpeg,, +Walk the Plank!,35505,Walk the Plank!,2013,boardgame,auto,781669,English MDG-4311 edition,version_approved,"[{""bgg_id"": 21834, ""name"": ""Walk the Plank"", ""year"": 2002, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": 18, ""rank"": null}, {""bgg_id"": 29010, ""name"": ""Walk the Plank"", ""year"": 2007, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": 179, ""rank"": 28080}, {""bgg_id"": 152950, ""name"": ""Walk the Plank"", ""year"": null, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": 5, ""rank"": null}, {""bgg_id"": 35505, ""name"": ""Walk the Plank!"", ""year"": 2013, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": 3127, ""rank"": 3700}]","[{""version_id"": 781669, ""name"": ""English MDG-4311 edition"", ""year"": 2013, ""publishers"": [""Mayday Games""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 189968, ""name"": ""English MYY4311 edition"", ""year"": 2013, ""publishers"": [""Mayday Games""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 483159, ""name"": ""Russian edition"", ""year"": 2013, ""publishers"": [""Cosmodrome Games"", ""Mayday Games""], ""languages"": [""Russian""], ""score"": 2}]",IMG_4517.jpeg;IMG_4549.jpeg,, AGRICOLA,31260,Agricola,2007,boardgame,auto,297589,Z-Man Games English fifth edition,version_auto,"[{""bgg_id"": 31260, ""name"": ""Agricola"", ""year"": 2007, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": null, ""rank"": null}]","[{""version_id"": 297589, ""name"": ""Z-Man Games English fifth edition"", ""year"": 2013, ""publishers"": [""Filosofia Éditions"", ""Lookout Games"", ""Z-Man Games""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 165308, ""name"": ""999 Games Dutch second edition 2011"", ""year"": 2011, ""publishers"": [""999 Games"", ""Lookout Games""], ""languages"": [""Dutch""], ""score"": 2}, {""version_id"": 266028, ""name"": ""Hobby World Russian first edition"", ""year"": 2013, ""publishers"": [""Hobby World"", ""Lookout Games""], ""languages"": [""Russian""], ""score"": 2}, {""version_id"": 22673, ""name"": ""Lookout Games German first edition"", ""year"": 2007, ""publishers"": [""Lookout Games""], ""languages"": [""German""], ""score"": 2}, {""version_id"": 64715, ""name"": ""Lookout Games German second edition 2008 with animeeples"", ""year"": 2008, ""publishers"": [""Lookout Games""], ""languages"": [""German""], ""score"": 2}, {""version_id"": 219203, ""name"": ""Lookout Games German seventh edition 2012 with DSP and SdJ"", ""year"": 2012, ""publishers"": [""Lookout Games""], ""languages"": [""German""], ""score"": 2}, {""version_id"": 64718, ""name"": ""Lookout Games German third edition 2009 with DSP and SdJ"", ""year"": 2009, ""publishers"": [""Lookout Games""], ""languages"": [""German""], ""score"": 2}, {""version_id"": 113858, ""name"": ""Lookout Games Russian first edition 2011"", ""year"": 2011, ""publishers"": [""Lookout Games"", ""Smart Ltd""], ""languages"": [""Russian""], ""score"": 2}]",IMG_4518.jpeg,, METEOR,166109,Meteor,2014,boardgame,auto,,,version_unknown,"[{""bgg_id"": 25172, ""name"": ""Meteor"", ""year"": 1975, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": 56, ""rank"": null}, {""bgg_id"": 166109, ""name"": ""Meteor"", ""year"": 2014, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": 1396, ""rank"": 10371}, {""bgg_id"": 246740, ""name"": ""Meteors"", ""year"": 2018, ""type"": ""boardgame"", ""exact"": false, ""fuzzy"": 92.3, ""owned"": 71, ""rank"": 25541}]",[],IMG_4518.jpeg,, DOCTOR WHO THE card GAME,125675,Doctor Who: The Card Game,2012,boardgame,auto,,,version_unknown,"[{""bgg_id"": 125675, ""name"": ""Doctor Who: The Card Game"", ""year"": 2012, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": null, ""rank"": null}]",[],IMG_4518.jpeg,, DUNGEONS & DRAGONS,140509,Dungeons & Dragons,1985,boardgame,auto,,,version_unknown,"[{""bgg_id"": 140509, ""name"": ""Dungeons & Dragons"", ""year"": 1985, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": null, ""rank"": null}]",[],IMG_4519.jpeg,, DUNGEONS & DRAGONS FANTASY GAME RULES,,,,,local,,,,[],[],IMG_4519.jpeg,, "Before I Kill You, Mister Bond...",164,"Before I Kill You, Mister Bond",1996,boardgame,auto,28465,"Cheapass black and white ""Better Edition"" edition",version_auto,"[{""bgg_id"": 164, ""name"": ""Before I Kill You, Mister Bond"", ""year"": 1996, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": null, ""rank"": null}]","[{""version_id"": 28465, ""name"": ""Cheapass black and white \""Better Edition\"" edition"", ""year"": 2001, ""publishers"": [""Cheapass Games""], ""languages"": [""English""], ""score"": 5}, {""version_id"": 291316, ""name"": ""English edition 2016"", ""year"": 2016, ""publishers"": [""Cheapass Games""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 520361, ""name"": ""English second edition"", ""year"": 1997, ""publishers"": [""Cheapass Games""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 28459, ""name"": ""First \""Renamed\"" edition, First color edition"", ""year"": 2004, ""publishers"": [""Cheapass Games""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 180392, ""name"": ""First black and white envelope edition"", ""year"": 1996, ""publishers"": [""Cheapass Games""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 28462, ""name"": ""Third black and white edition"", ""year"": 1998, ""publishers"": [""Cheapass Games""], ""languages"": [""English""], ""score"": 3}]",IMG_4519.jpeg;IMG_4554.jpeg,, -MYSTERIUM,181304,Mysterium,2015,boardgame,auto,,,version_ambiguous,"[{""bgg_id"": 181304, ""name"": ""Mysterium"", ""year"": 2015, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": 85034, ""rank"": 454}, {""bgg_id"": 113997, ""name"": ""Mysterium"", ""year"": 2013, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": 5494, ""rank"": 1143}]","[{""version_id"": 781306, ""name"": ""English 2025 Refresh Edition"", ""year"": 2025, ""publishers"": [""Libellud""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 280251, ""name"": ""English edition 2015-1"", ""year"": 2015, ""publishers"": [""Esdevium"", ""Libellud""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 493543, ""name"": ""English edition 2015-2"", ""year"": 2015, ""publishers"": [""Esdevium"", ""Libellud""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 475162, ""name"": ""English edition 2016-1"", ""year"": 2016, ""publishers"": [""Esdevium"", ""Libellud""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 351093, ""name"": ""English edition 2017-1"", ""year"": 2017, ""publishers"": [""Esdevium"", ""Libellud""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 467608, ""name"": ""English edition 2017-2"", ""year"": 2017, ""publishers"": [""Esdevium"", ""Libellud""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 404443, ""name"": ""English edition 2017-3"", ""year"": 2017, ""publishers"": [""Esdevium"", ""Libellud""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 536289, ""name"": ""English edition 2018-2"", ""year"": 2018, ""publishers"": [""Libellud""], ""languages"": [""English""], ""score"": 3}]",IMG_4520.jpeg,, +MYSTERIUM,181304,Mysterium,2015,boardgame,auto,536289,English edition 2018-2,version_approved,"[{""bgg_id"": 181304, ""name"": ""Mysterium"", ""year"": 2015, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": 85034, ""rank"": 454}, {""bgg_id"": 113997, ""name"": ""Mysterium"", ""year"": 2013, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": 5494, ""rank"": 1143}]","[{""version_id"": 781306, ""name"": ""English 2025 Refresh Edition"", ""year"": 2025, ""publishers"": [""Libellud""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 280251, ""name"": ""English edition 2015-1"", ""year"": 2015, ""publishers"": [""Esdevium"", ""Libellud""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 493543, ""name"": ""English edition 2015-2"", ""year"": 2015, ""publishers"": [""Esdevium"", ""Libellud""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 475162, ""name"": ""English edition 2016-1"", ""year"": 2016, ""publishers"": [""Esdevium"", ""Libellud""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 351093, ""name"": ""English edition 2017-1"", ""year"": 2017, ""publishers"": [""Esdevium"", ""Libellud""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 467608, ""name"": ""English edition 2017-2"", ""year"": 2017, ""publishers"": [""Esdevium"", ""Libellud""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 404443, ""name"": ""English edition 2017-3"", ""year"": 2017, ""publishers"": [""Esdevium"", ""Libellud""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 536289, ""name"": ""English edition 2018-2"", ""year"": 2018, ""publishers"": [""Libellud""], ""languages"": [""English""], ""score"": 3}]",IMG_4520.jpeg,, Völuspá,128554,Völuspá,2012,boardgame,auto,,,version_unknown,"[{""bgg_id"": 128554, ""name"": ""Völuspá"", ""year"": 2012, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": null, ""rank"": null}]",[],IMG_4520.jpeg,, Carcassonne,822,Carcassonne,2000,boardgame,auto,,,version_unknown,"[{""bgg_id"": 822, ""name"": ""Carcassonne"", ""year"": 2000, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": null, ""rank"": null}]",[],IMG_4520.jpeg,, evolution The Beginning,201248,Evolution: The Beginning,2016,boardgame,auto,,,version_unknown,"[{""bgg_id"": 201248, ""name"": ""Evolution: The Beginning"", ""year"": 2016, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": null, ""rank"": null}]",[],IMG_4520.jpeg,, @@ -79,11 +79,11 @@ THE RIVALS FOR CATAN CARD GAME,389113,Rivals,2025,boardgame,auto,,,version_unkno FORBIDDEN ISLAND,65244,Forbidden Island,2010,boardgame,auto,31208,English edition 051210,version_approved,"[{""bgg_id"": 65244, ""name"": ""Forbidden Island"", ""year"": 2010, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": null, ""rank"": null}]","[{""version_id"": 368139, ""name"": ""English edition 110516"", ""year"": 2016, ""publishers"": [""Gamewright""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 485840, ""name"": ""English edition 030214"", ""year"": 2014, ""publishers"": [""Gamewright""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 489524, ""name"": ""English edition 030215"", ""year"": 2015, ""publishers"": [""Gamewright""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 338430, ""name"": ""English edition 042016"", ""year"": 2016, ""publishers"": [""Gamewright""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 31208, ""name"": ""English edition 051210"", ""year"": 2010, ""publishers"": [""Gamewright""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 347124, ""name"": ""English edition 052011"", ""year"": 2011, ""publishers"": [""Gamewright""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 577612, ""name"": ""English edition 070413"", ""year"": 2013, ""publishers"": [""Gamewright""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 315520, ""name"": ""English edition 070415"", ""year"": 2015, ""publishers"": [""Gamewright""], ""languages"": [""English""], ""score"": 3}]",IMG_4523.jpeg,, TEMPURRA,95386,Tempurra,2011,boardgame,auto,290572,English edition,version_auto,"[{""bgg_id"": 95386, ""name"": ""Tempurra"", ""year"": 2011, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": null, ""rank"": null}]","[{""version_id"": 290572, ""name"": ""English edition"", ""year"": 2016, ""publishers"": [""IELLO""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 287427, ""name"": ""French edition"", ""year"": 2016, ""publishers"": [""IELLO""], ""languages"": [""French""], ""score"": 2}]",IMG_4524.jpeg,, FLUXX,258,Fluxx,1997,boardgame,auto,20840,Looney Labs Version v2.1,version_approved,"[{""bgg_id"": 258, ""name"": ""Fluxx"", ""year"": 1997, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": 33357, ""rank"": 12263}, {""bgg_id"": 314413, ""name"": ""Fluxx"", ""year"": 2012, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": 2152, ""rank"": 15720}]","[{""version_id"": 20841, ""name"": ""Looney Labs edition v3.0"", ""year"": 2002, ""publishers"": [""Looney Labs""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 20843, ""name"": ""Looney Labs edition v3.1"", ""year"": 2005, ""publishers"": [""Looney Labs""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 20844, ""name"": ""Looney Labs edition v4.0"", ""year"": 2008, ""publishers"": [""Looney Labs""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 263858, ""name"": ""Looney Labs edition v5.0"", ""year"": 2014, ""publishers"": [""Looney Labs""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 20838, ""name"": ""Looney Labs English 1.0 edition"", ""year"": 1996, ""publishers"": [""Looney Labs""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 20840, ""name"": ""Looney Labs Version v2.1"", ""year"": 2000, ""publishers"": [""Looney Labs""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 488647, ""name"": ""Hobby World Russian 5.0 edition"", ""year"": 2017, ""publishers"": [""Hobby World"", ""Looney Labs""], ""languages"": [""Russian""], ""score"": 2}, {""version_id"": 290805, ""name"": ""Polish edition"", ""year"": 2015, ""publishers"": [""Black Monk"", ""Looney Labs""], ""languages"": [""Polish""], ""score"": 2}]",IMG_4525.jpeg,, -Poetry for Neanderthals,312786,Poetry for Neanderthals,2020,boardgame,auto,,,version_ambiguous,"[{""bgg_id"": 312786, ""name"": ""Poetry for Neanderthals"", ""year"": 2020, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": null, ""rank"": null}]","[{""version_id"": 514050, ""name"": ""English edition 2020"", ""year"": 2020, ""publishers"": [""Exploding Kittens""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 655388, ""name"": ""English edition 2022"", ""year"": 2022, ""publishers"": [""Exploding Kittens""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 782169, ""name"": ""English edition 2024"", ""year"": 2024, ""publishers"": [""Exploding Kittens""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 746180, ""name"": ""English Grab & Game edition 2023"", ""year"": 2023, ""publishers"": [""Exploding Kittens""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 786184, ""name"": ""English Grab & Game edition 2025"", ""year"": 2025, ""publishers"": [""Exploding Kittens""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 735751, ""name"": ""Dutch edition"", ""year"": 2024, ""publishers"": [""Exploding Kittens""], ""languages"": [""Dutch""], ""score"": 2}, {""version_id"": 783801, ""name"": ""French edition"", ""year"": 2023, ""publishers"": [""Exploding Kittens""], ""languages"": [""French""], ""score"": 2}, {""version_id"": 632084, ""name"": ""German edition"", ""year"": 2022, ""publishers"": [""Exploding Kittens""], ""languages"": [""German""], ""score"": 2}]",IMG_4526.jpeg,, +Poetry for Neanderthals,312786,Poetry for Neanderthals,2020,boardgame,auto,514050,English edition 2020,version_approved,"[{""bgg_id"": 312786, ""name"": ""Poetry for Neanderthals"", ""year"": 2020, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": null, ""rank"": null}]","[{""version_id"": 514050, ""name"": ""English edition 2020"", ""year"": 2020, ""publishers"": [""Exploding Kittens""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 655388, ""name"": ""English edition 2022"", ""year"": 2022, ""publishers"": [""Exploding Kittens""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 746180, ""name"": ""English Grab & Game edition 2023"", ""year"": 2023, ""publishers"": [""Exploding Kittens""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 782169, ""name"": ""English edition 2024"", ""year"": 2024, ""publishers"": [""Exploding Kittens""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 786184, ""name"": ""English Grab & Game edition 2025"", ""year"": 2025, ""publishers"": [""Exploding Kittens""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 632084, ""name"": ""German edition"", ""year"": 2022, ""publishers"": [""Exploding Kittens""], ""languages"": [""German""], ""score"": 2}, {""version_id"": 626498, ""name"": ""Lithuanian edition"", ""year"": 2022, ""publishers"": [""Exploding Kittens""], ""languages"": [""Lithuanian""], ""score"": 2}, {""version_id"": 783801, ""name"": ""French edition"", ""year"": 2023, ""publishers"": [""Exploding Kittens""], ""languages"": [""French""], ""score"": 2}, {""version_id"": 735751, ""name"": ""Dutch edition"", ""year"": 2024, ""publishers"": [""Exploding Kittens""], ""languages"": [""Dutch""], ""score"": 2}, {""version_id"": 725793, ""name"": ""German Grab & Game edition"", ""year"": 2024, ""publishers"": [""Exploding Kittens""], ""languages"": [""German""], ""score"": 2}, {""version_id"": 686425, ""name"": ""Ukrainian edition"", ""year"": 2024, ""publishers"": [""Exploding Kittens"", ""Rozum""], ""languages"": [""Ukrainian""], ""score"": 2}, {""version_id"": 784203, ""name"": ""Romanian edition"", ""year"": 2025, ""publishers"": [""Exploding Kittens"", ""Ludicus Games""], ""languages"": [""Romanian""], ""score"": 2}, {""version_id"": 702781, ""name"": ""Russian edition"", ""year"": 2024, ""publishers"": [""Hobby World""], ""languages"": [""Russian""], ""score"": 0}, {""version_id"": 749119, ""name"": ""Hungarian edition"", ""year"": 2025, ""publishers"": [""Gémklub""], ""languages"": [""Hungarian""], ""score"": 0}]",IMG_4526.jpeg,, Elite Sportz Equipment Table Top Curling,,,,,local,,,,[],[],IMG_4526.jpeg,, -Simon's Cat Card Game,188614,Simon's Cat Card Game,2016,boardgame,auto,,,version_ambiguous,"[{""bgg_id"": 188614, ""name"": ""Simon's Cat Card Game"", ""year"": 2016, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": 1429, ""rank"": 12119}, {""bgg_id"": 330317, ""name"": ""NOM: Simon's Cat Card Game"", ""year"": 2021, ""type"": ""boardgame"", ""exact"": false, ""fuzzy"": 91.3, ""owned"": 70, ""rank"": null}]","[{""version_id"": 292307, ""name"": ""English edition, first printing"", ""year"": 2016, ""publishers"": [""Steve Jackson Games""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 779792, ""name"": ""English edition, second printing"", ""year"": 2016, ""publishers"": [""Steve Jackson Games""], ""languages"": [""English""], ""score"": 3}]",IMG_4526.jpeg,, +Simon's Cat Card Game,188614,Simon's Cat Card Game,2016,boardgame,auto,779792,"English edition, second printing",version_approved,"[{""bgg_id"": 188614, ""name"": ""Simon's Cat Card Game"", ""year"": 2016, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": 1429, ""rank"": 12119}, {""bgg_id"": 330317, ""name"": ""NOM: Simon's Cat Card Game"", ""year"": 2021, ""type"": ""boardgame"", ""exact"": false, ""fuzzy"": 91.3, ""owned"": 70, ""rank"": null}]","[{""version_id"": 292307, ""name"": ""English edition, first printing"", ""year"": 2016, ""publishers"": [""Steve Jackson Games""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 779792, ""name"": ""English edition, second printing"", ""year"": 2016, ""publishers"": [""Steve Jackson Games""], ""languages"": [""English""], ""score"": 3}]",IMG_4526.jpeg,, The Red Dragon Inn: Smorgasbox,273240,The Red Dragon Inn Smorgasbox,2019,boardgame,auto,446069,Kickstarter edition,version_approved,"[{""bgg_id"": 273240, ""name"": ""The Red Dragon Inn Smorgasbox"", ""year"": 2019, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": null, ""rank"": null}]","[{""version_id"": 446786, ""name"": ""Collector's edition"", ""year"": 2019, ""publishers"": [""SlugFest Games""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 446788, ""name"": ""Eco-Collector's edition"", ""year"": 2019, ""publishers"": [""SlugFest Games""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 446787, ""name"": ""Eco-Kickstarter edition"", ""year"": 2019, ""publishers"": [""SlugFest Games""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 446069, ""name"": ""Kickstarter edition"", ""year"": 2019, ""publishers"": [""SlugFest Games""], ""languages"": [""English""], ""score"": 3}]",IMG_4527.jpeg,, -WIZ-WAR,,,,,ambiguous,,,,"[{""bgg_id"": 589, ""name"": ""Wiz-War"", ""year"": 1983, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": 2076, ""rank"": 3049}, {""bgg_id"": 324937, ""name"": ""Wiz-War (9th Edition)"", ""year"": 2023, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 53.8, ""owned"": 482, ""rank"": 11443}, {""bgg_id"": 104710, ""name"": ""Wiz-War (Eighth Edition)"", ""year"": 2012, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 48.3, ""owned"": 7742, ""rank"": 1266}]",[],IMG_4528.jpeg,, +WIZ-WAR,324937,Wiz-War (9th Edition),2023,boardgame,approved,,,version_unknown,"[{""bgg_id"": 589, ""name"": ""Wiz-War"", ""year"": 1983, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": 2076, ""rank"": 3049}, {""bgg_id"": 324937, ""name"": ""Wiz-War (9th Edition)"", ""year"": 2023, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 53.8, ""owned"": 482, ""rank"": 11443}, {""bgg_id"": 104710, ""name"": ""Wiz-War (Eighth Edition)"", ""year"": 2012, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 48.3, ""owned"": 7742, ""rank"": 1266}]",[],IMG_4528.jpeg,, RISK THE LORD OF THE RINGS: The Middle-earth Conquest Game,4324,Risk: The Lord of the Rings,2002,boardgame,auto,26859,English edition 2002,version_approved,"[{""bgg_id"": 4324, ""name"": ""Risk: The Lord of the Rings"", ""year"": 2002, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 57.1, ""owned"": null, ""rank"": null}]","[{""version_id"": 33264, ""name"": ""English (UK) edition 2002"", ""year"": 2002, ""publishers"": [""Hasbro"", ""Parker Brothers""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 26859, ""name"": ""English edition 2002"", ""year"": 2002, ""publishers"": [""Hasbro"", ""Parker Brothers""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 26863, ""name"": ""English/French edition"", ""year"": 2002, ""publishers"": [""Parker Brothers""], ""languages"": [""English"", ""French""], ""score"": 3}, {""version_id"": 26865, ""name"": ""Danish edition"", ""year"": 2002, ""publishers"": [""Parker Brothers""], ""languages"": [""Danish""], ""score"": 2}, {""version_id"": 26861, ""name"": ""Dutch edition"", ""year"": 2002, ""publishers"": [""Parker Brothers""], ""languages"": [""Dutch""], ""score"": 2}, {""version_id"": 77144, ""name"": ""French edition 2002"", ""year"": 2002, ""publishers"": [""Hasbro"", ""Parker Brothers""], ""languages"": [""French""], ""score"": 2}, {""version_id"": 26862, ""name"": ""German edition"", ""year"": 2002, ""publishers"": [""Parker Brothers""], ""languages"": [""German""], ""score"": 2}, {""version_id"": 75135, ""name"": ""Norwegian edition"", ""year"": 2002, ""publishers"": [""Parker Brothers""], ""languages"": [""Norwegian""], ""score"": 2}]",IMG_4529.jpeg,, Ouija,,,,,local,,,,[],[],IMG_4529.jpeg,, Munchkin Big Box,419687,Munchkin Big Box,2025,boardgame,auto,711400,English edition,version_auto,"[{""bgg_id"": 419687, ""name"": ""Munchkin Big Box"", ""year"": 2025, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": null, ""rank"": null}]","[{""version_id"": 711400, ""name"": ""English edition"", ""year"": 2025, ""publishers"": [""Steve Jackson Games""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 777457, ""name"": ""Russian edition"", ""year"": 2025, ""publishers"": [""Hobby World"", ""Steve Jackson Games""], ""languages"": [""Russian""], ""score"": 2}]",IMG_4530.jpeg,, @@ -99,11 +99,11 @@ Sleeping Gods: Tides of Ruin,283766,Sleeping Gods: Tides of Ruin,2021,boardgame, ETHERFIELDS,280794,Etherfields,2020,boardgame,auto,458300,English edition,version_auto,"[{""bgg_id"": 280794, ""name"": ""Etherfields"", ""year"": 2020, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": null, ""rank"": null}]","[{""version_id"": 458300, ""name"": ""English edition"", ""year"": 2020, ""publishers"": [""Awaken Realms""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 518823, ""name"": ""French edition"", ""year"": 2021, ""publishers"": [""Awaken Realms""], ""languages"": [""French""], ""score"": 2}, {""version_id"": 511032, ""name"": ""German edition"", ""year"": 2021, ""publishers"": [""Awaken Realms""], ""languages"": [""German""], ""score"": 2}, {""version_id"": 518825, ""name"": ""Italian edition"", ""year"": 2021, ""publishers"": [""Awaken Realms""], ""languages"": [""Italian""], ""score"": 2}, {""version_id"": 518826, ""name"": ""Polish edition"", ""year"": 2021, ""publishers"": [""Awaken Realms""], ""languages"": [""Polish""], ""score"": 2}, {""version_id"": 518824, ""name"": ""Spanish edition"", ""year"": 2021, ""publishers"": [""Awaken Realms""], ""languages"": [""Spanish""], ""score"": 2}]",IMG_4535.jpeg,, BOTANY,380837,Botany,2024,boardgame,auto,650545,English edition,version_auto,"[{""bgg_id"": 380837, ""name"": ""Botany"", ""year"": 2024, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": null, ""rank"": null}]","[{""version_id"": 650545, ""name"": ""English edition"", ""year"": 2024, ""publishers"": [""Dux Somnium Games""], ""languages"": [""English""], ""score"": 3}]",IMG_4536.jpeg,, GLOOMHAVEN Buttons & Bugs,393672,Gloomhaven: Buttons & Bugs,2024,boardgame,auto,669782,English edition,version_auto,"[{""bgg_id"": 393672, ""name"": ""Gloomhaven: Buttons & Bugs"", ""year"": 2024, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": null, ""rank"": null}]","[{""version_id"": 669782, ""name"": ""English edition"", ""year"": 2024, ""publishers"": [""Cephalofair Games""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 778725, ""name"": ""French edition"", ""year"": 2025, ""publishers"": [""Cephalofair Games""], ""languages"": [""French""], ""score"": 2}, {""version_id"": 777580, ""name"": ""Italian edition"", ""year"": 2025, ""publishers"": [""Cephalofair Games""], ""languages"": [""Italian""], ""score"": 2}, {""version_id"": 775346, ""name"": ""Japanese edition"", ""year"": 2025, ""publishers"": [""Cephalofair Games"", ""CMON Global Limited""], ""languages"": [""Japanese""], ""score"": 2}, {""version_id"": 753852, ""name"": ""Spanish edition"", ""year"": 2025, ""publishers"": [""Cephalofair Games""], ""languages"": [""Spanish""], ""score"": 2}, {""version_id"": 765914, ""name"": ""Ukrainian edition"", ""year"": 2025, ""publishers"": [""Cephalofair Games"", ""Lord of Boards""], ""languages"": [""Ukrainian""], ""score"": 2}]",IMG_4537.jpeg,, -MUNCHKIN,1927,Munchkin,2001,boardgame,auto,,,version_ambiguous,"[{""bgg_id"": 1927, ""name"": ""Munchkin"", ""year"": 2001, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": null, ""rank"": null}]","[{""version_id"": 25420, ""name"": ""English Bobblehead edition 2008"", ""year"": 2008, ""publishers"": [""Steve Jackson Games""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 170523, ""name"": ""English Deluxe edition 2011 with Munchkin 2: Unnatural Axe"", ""year"": 2011, ""publishers"": [""Steve Jackson Games""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 227208, ""name"": ""English deluxe edition 2013, third printing"", ""year"": 2013, ""publishers"": [""Steve Jackson Games""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 245507, ""name"": ""English deluxe edition 2014, 4th printing"", ""year"": 2014, ""publishers"": [""Steve Jackson Games""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 271919, ""name"": ""English deluxe edition 2014, 5th printing"", ""year"": 2014, ""publishers"": [""Steve Jackson Games""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 336452, ""name"": ""English deluxe edition 2014, 6th printing"", ""year"": 2014, ""publishers"": [""Steve Jackson Games""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 284365, ""name"": ""English deluxe edition 2015, 7th printing"", ""year"": 2015, ""publishers"": [""Steve Jackson Games""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 325785, ""name"": ""English deluxe edition 2015, 8th printing"", ""year"": 2015, ""publishers"": [""Steve Jackson Games""], ""languages"": [""English""], ""score"": 3}]",IMG_4537.jpeg,, -SPANC Space Pirate Amazon Ninja Catgirls,14535,SPANC: Space Pirate Amazon Ninja Catgirls,2005,boardgame,auto,,,version_ambiguous,"[{""bgg_id"": 14535, ""name"": ""SPANC: Space Pirate Amazon Ninja Catgirls"", ""year"": 2005, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": null, ""rank"": null}]","[{""version_id"": 29075, ""name"": ""English first edition"", ""year"": 2005, ""publishers"": [""Steve Jackson Games""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 429099, ""name"": ""English second edition"", ""year"": 2018, ""publishers"": [""Steve Jackson Games""], ""languages"": [""English""], ""score"": 3}]",IMG_4537.jpeg,, +MUNCHKIN,1927,Munchkin,2001,boardgame,auto,28144,"English edition 2009, 15th printing",version_approved,"[{""bgg_id"": 1927, ""name"": ""Munchkin"", ""year"": 2001, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": null, ""rank"": null}]","[{""version_id"": 25412, ""name"": ""English first edition 2001"", ""year"": 2001, ""publishers"": [""Steve Jackson Games""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 25420, ""name"": ""English Bobblehead edition 2008"", ""year"": 2008, ""publishers"": [""Steve Jackson Games""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 246656, ""name"": ""English edition 2008, 13th Printing"", ""year"": 2008, ""publishers"": [""Steve Jackson Games""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 28144, ""name"": ""English edition 2009, 15th printing"", ""year"": 2009, ""publishers"": [""Steve Jackson Games""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 353294, ""name"": ""Special holiday edition"", ""year"": 2009, ""publishers"": [""Steve Jackson Games""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 331605, ""name"": ""English edition 2010, 18th printing"", ""year"": 2010, ""publishers"": [""Steve Jackson Games""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 55898, ""name"": ""English edition 2010, 19th Printing with color"", ""year"": 2010, ""publishers"": [""Steve Jackson Games""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 80654, ""name"": ""English edition 2010, 20th Printing"", ""year"": 2010, ""publishers"": [""Steve Jackson Games""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 390357, ""name"": ""English edition, 17th printing"", ""year"": 2010, ""publishers"": [""Steve Jackson Games""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 83819, ""name"": ""English holiday edition 2010"", ""year"": 2010, ""publishers"": [""Steve Jackson Games""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 170523, ""name"": ""English Deluxe edition 2011 with Munchkin 2: Unnatural Axe"", ""year"": 2011, ""publishers"": [""Steve Jackson Games""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 91595, ""name"": ""English deluxe edition, first printing 2011"", ""year"": 2011, ""publishers"": [""Steve Jackson Games""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 94878, ""name"": ""English edition 2011, 20th printing"", ""year"": 2011, ""publishers"": [""Steve Jackson Games""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 324061, ""name"": ""English edition 2011, 21st Printing"", ""year"": 2011, ""publishers"": [""Steve Jackson Games""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 170011, ""name"": ""English edition 2011, 22nd Printing"", ""year"": 2011, ""publishers"": [""Steve Jackson Games""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 354283, ""name"": ""English deluxe edition, second printing 2012"", ""year"": 2012, ""publishers"": [""Steve Jackson Games""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 195313, ""name"": ""English edition 2012, 23rd printing"", ""year"": 2012, ""publishers"": [""Steve Jackson Games""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 227208, ""name"": ""English deluxe edition 2013, third printing"", ""year"": 2013, ""publishers"": [""Steve Jackson Games""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 214623, ""name"": ""English edition 2013, 24th Printing"", ""year"": 2013, ""publishers"": [""Steve Jackson Games""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 245507, ""name"": ""English deluxe edition 2014, 4th printing"", ""year"": 2014, ""publishers"": [""Steve Jackson Games""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 271919, ""name"": ""English deluxe edition 2014, 5th printing"", ""year"": 2014, ""publishers"": [""Steve Jackson Games""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 336452, ""name"": ""English deluxe edition 2014, 6th printing"", ""year"": 2014, ""publishers"": [""Steve Jackson Games""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 246332, ""name"": ""English edition 2014, 25th Printing"", ""year"": 2014, ""publishers"": [""Steve Jackson Games""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 277657, ""name"": ""English edition 2014, 26th printing"", ""year"": 2014, ""publishers"": [""Steve Jackson Games""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 269436, ""name"": ""English edition 2014, 27th printing"", ""year"": 2014, ""publishers"": [""Steve Jackson Games""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 396621, ""name"": ""English foil edition"", ""year"": 2014, ""publishers"": [""Steve Jackson Games""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 284365, ""name"": ""English deluxe edition 2015, 7th printing"", ""year"": 2015, ""publishers"": [""Steve Jackson Games""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 325785, ""name"": ""English deluxe edition 2015, 8th printing"", ""year"": 2015, ""publishers"": [""Steve Jackson Games""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 282004, ""name"": ""English edition 2015, 28th printing"", ""year"": 2015, ""publishers"": [""Steve Jackson Games""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 593801, ""name"": ""English edition 2015, 29th printing"", ""year"": 2015, ""publishers"": [""Steve Jackson Games""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 754857, ""name"": ""English edition 2015, third printing"", ""year"": 2015, ""publishers"": [""Steve Jackson Games""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 340480, ""name"": ""English deluxe edition, 9th printing"", ""year"": 2016, ""publishers"": [""Steve Jackson Games""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 283635, ""name"": ""English edition 2016"", ""year"": 2016, ""publishers"": [""Steve Jackson Games""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 682193, ""name"": ""English edition 2016, 30th printing"", ""year"": 2016, ""publishers"": [""Steve Jackson Games""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 405677, ""name"": ""English edition 2016, 31st printing"", ""year"": 2016, ""publishers"": [""Steve Jackson Games""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 417489, ""name"": ""English deluxe edition, 10th printing"", ""year"": 2017, ""publishers"": [""Steve Jackson Games""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 562670, ""name"": ""English deluxe edition, 13th printing"", ""year"": 2017, ""publishers"": [""Steve Jackson Games""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 636869, ""name"": ""English deluxe edition, 14th printing"", ""year"": 2017, ""publishers"": [""Steve Jackson Games""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 293706, ""name"": ""English edition 2017"", ""year"": 2017, ""publishers"": [""Steve Jackson Games""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 525772, ""name"": ""English edition 2017, 34th printing"", ""year"": 2017, ""publishers"": [""Steve Jackson Games""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 451734, ""name"": ""English deluxe edition, 15th printing"", ""year"": 2018, ""publishers"": [""Steve Jackson Games""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 418706, ""name"": ""English edition 2018, 35th printing"", ""year"": 2018, ""publishers"": [""Steve Jackson Games""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 678905, ""name"": ""English deluxe edition, 18th printing"", ""year"": 2019, ""publishers"": [""Steve Jackson Games""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 656515, ""name"": ""English deluxe edition, 19th printing"", ""year"": 2019, ""publishers"": [""Steve Jackson Games""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 603360, ""name"": ""English Deluxe edition, 22nd printing"", ""year"": 2020, ""publishers"": [""Steve Jackson Games""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 781484, ""name"": ""English Deluxe edition, 23rd printing"", ""year"": 2020, ""publishers"": [""Steve Jackson Games""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 544762, ""name"": ""English edition, 38th printing"", ""year"": 2020, ""publishers"": [""Steve Jackson Games""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 713380, ""name"": ""English edition, 40th Printing"", ""year"": 2020, ""publishers"": [""Steve Jackson Games""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 602350, ""name"": ""English deluxe edition, 24th printing"", ""year"": 2021, ""publishers"": [""Steve Jackson Games""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 785295, ""name"": ""English deluxe edition, 30th printing"", ""year"": 2025, ""publishers"": [""Steve Jackson Games""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 705564, ""name"": ""Chinese edition"", ""year"": 0, ""publishers"": [""Broadway Toys LTD"", ""Steve Jackson Games""], ""languages"": [""Chinese""], ""score"": 2}, {""version_id"": 645211, ""name"": ""Hungarian seventh edition"", ""year"": 0, ""publishers"": [""Steve Jackson Games""], ""languages"": [""Hungarian""], ""score"": 2}, {""version_id"": 24499, ""name"": ""Dutch edition 2001"", ""year"": 2001, ""publishers"": [""PS-Games""], ""languages"": [""Dutch""], ""score"": 2}, {""version_id"": 51372, ""name"": ""French edition 2004"", ""year"": 2004, ""publishers"": [""Steve Jackson Games"", ""Ubik""], ""languages"": [""French""], ""score"": 2}, {""version_id"": 25605, ""name"": ""German edition 2005, 4th printing"", ""year"": 2005, ""publishers"": [""Pegasus Spiele"", ""Steve Jackson Games""], ""languages"": [""German""], ""score"": 2}, {""version_id"": 25422, ""name"": ""German edition 2006"", ""year"": 2006, ""publishers"": [""Pegasus Spiele"", ""Steve Jackson Games""], ""languages"": [""German""], ""score"": 2}, {""version_id"": 25425, ""name"": ""Greek first edition"", ""year"": 2006, ""publishers"": [""Kaissa Chess & Games"", ""Steve Jackson Games""], ""languages"": [""Greek""], ""score"": 2}, {""version_id"": 634527, ""name"": ""Japanese edition"", ""year"": 2006, ""publishers"": [""Arclight Games"", ""Steve Jackson Games""], ""languages"": [""Japanese""], ""score"": 2}, {""version_id"": 25421, ""name"": ""Portuguese edition 2006"", ""year"": 2006, ""publishers"": [""Devir"", ""Steve Jackson Games""], ""languages"": [""Portuguese""], ""score"": 2}, {""version_id"": 401714, ""name"": ""Bureau de Juegos Spanish edition"", ""year"": 2018, ""publishers"": [""Bureau de Juegos"", ""Steve Jackson Games""], ""languages"": [""Spanish""], ""score"": 2}, {""version_id"": 580930, ""name"": ""Buró Spanish edition"", ""year"": 2020, ""publishers"": [""Buró"", ""Steve Jackson Games""], ""languages"": [""Spanish""], ""score"": 2}, {""version_id"": 641508, ""name"": ""Czech edition, 2021 printing"", ""year"": 2021, ""publishers"": [""ADC Blackfire Entertainment"", ""Steve Jackson Games""], ""languages"": [""Czech""], ""score"": 2}, {""version_id"": 524839, ""name"": ""Korean edition"", ""year"": 2021, ""publishers"": [""BoardM Factory"", ""Steve Jackson Games""], ""languages"": [""Korean""], ""score"": 2}, {""version_id"": 795751, ""name"": ""Ukrainian edition 2022"", ""year"": 2022, ""publishers"": [""Steve Jackson Games"", ""ТРЕТЯ ПЛАНЕТА""], ""languages"": [""Ukrainian""], ""score"": 2}, {""version_id"": 251717, ""name"": ""Hobby World Russian edition"", ""year"": 0, ""publishers"": [""Hobby World""], ""languages"": [""Russian""], ""score"": 0}, {""version_id"": 214745, ""name"": ""French edition"", ""year"": 2001, ""publishers"": [""Edge Entertainment""], ""languages"": [""French""], ""score"": 0}, {""version_id"": 488128, ""name"": ""Raven Italian edition"", ""year"": 2001, ""publishers"": [""Raven Distribution""], ""languages"": [""Italian""], ""score"": 0}, {""version_id"": 118457, ""name"": ""Spanish edition 2001"", ""year"": 2001, ""publishers"": [""Edge Entertainment""], ""languages"": [""Spanish""], ""score"": 0}, {""version_id"": 232622, ""name"": ""German edition 2003"", ""year"": 2003, ""publishers"": [""Pegasus Spiele""], ""languages"": [""German""], ""score"": 0}, {""version_id"": 30879, ""name"": ""Spanish edition"", ""year"": 2004, ""publishers"": [""Edge Entertainment""], ""languages"": [""Spanish""], ""score"": 0}, {""version_id"": 44895, ""name"": ""Russian first edition"", ""year"": 2006, ""publishers"": [""Smart Ltd""], ""languages"": [""Russian""], ""score"": 0}, {""version_id"": 132760, ""name"": ""German Weihnachtsedition edition"", ""year"": 2007, ""publishers"": [""Pegasus Spiele""], ""languages"": [""German""], ""score"": 0}, {""version_id"": 25417, ""name"": ""Hungarian edition 2007"", ""year"": 2007, ""publishers"": [""Delta Vision Publishing""], ""languages"": [""Hungarian""], ""score"": 0}, {""version_id"": 759946, ""name"": ""German limited anniversary edition"", ""year"": 2008, ""publishers"": [""Pegasus Spiele""], ""languages"": [""German""], ""score"": 0}, {""version_id"": 25418, ""name"": ""Hebrew edition 2008"", ""year"": 2008, ""publishers"": [""Silver Stars Publishing""], ""languages"": [""Hebrew""], ""score"": 0}, {""version_id"": 29711, ""name"": ""Polish first edition"", ""year"": 2008, ""publishers"": [""Kuźnia Gier"", ""Q-Workshop""], ""languages"": [""Polish""], ""score"": 0}, {""version_id"": 130720, ""name"": ""French edition 2010"", ""year"": 2010, ""publishers"": [""Edge Entertainment""], ""languages"": [""French""], ""score"": 0}, {""version_id"": 506843, ""name"": ""German \""Jetzt noch bunter\"" edition"", ""year"": 2010, ""publishers"": [""Pegasus Spiele""], ""languages"": [""German""], ""score"": 0}, {""version_id"": 132754, ""name"": ""German color edition"", ""year"": 2010, ""publishers"": [""Pegasus Spiele""], ""languages"": [""German""], ""score"": 0}, {""version_id"": 132759, ""name"": ""German tin edition 2010"", ""year"": 2010, ""publishers"": [""Pegasus Spiele""], ""languages"": [""German""], ""score"": 0}, {""version_id"": 214747, ""name"": ""Russian edition 2010"", ""year"": 2010, ""publishers"": [""Smart Ltd""], ""languages"": [""Russian""], ""score"": 0}, {""version_id"": 87042, ""name"": ""Spanish edition 2010"", ""year"": 2010, ""publishers"": [""Edge Entertainment""], ""languages"": [""Spanish""], ""score"": 0}, {""version_id"": 200346, ""name"": ""German nineteenth edition"", ""year"": 2011, ""publishers"": [""Pegasus Spiele""], ""languages"": [""German""], ""score"": 0}, {""version_id"": 177023, ""name"": ""Chinese edition 2012"", ""year"": 2012, ""publishers"": [""(Unknown)""], ""languages"": [""Chinese""], ""score"": 0}, {""version_id"": 173767, ""name"": ""Galápagos Jogos Brazilian edition 2012"", ""year"": 2012, ""publishers"": [""Galápagos Jogos""], ""languages"": [""Portuguese""], ""score"": 0}, {""version_id"": 195577, ""name"": ""Hungarian second color edition"", ""year"": 2012, ""publishers"": [""Delta Vision Publishing""], ""languages"": [""Hungarian""], ""score"": 0}, {""version_id"": 197382, ""name"": ""Polish third edition"", ""year"": 2012, ""publishers"": [""Black Monk""], ""languages"": [""Polish""], ""score"": 0}, {""version_id"": 217475, ""name"": ""Finnish edition 2013"", ""year"": 2013, ""publishers"": [""Fantasiapelit""], ""languages"": [""Finnish""], ""score"": 0}, {""version_id"": 275452, ""name"": ""German edition 2013"", ""year"": 2013, ""publishers"": [""Pegasus Spiele""], ""languages"": [""German""], ""score"": 0}, {""version_id"": 301691, ""name"": ""Greek second edition"", ""year"": 2013, ""publishers"": [""Kaissa Chess & Games""], ""languages"": [""Greek""], ""score"": 0}, {""version_id"": 251644, ""name"": ""Russian deluxe edition"", ""year"": 2013, ""publishers"": [""Hobby World""], ""languages"": [""Russian""], ""score"": 0}, {""version_id"": 208596, ""name"": ""Ukrainian first color edition"", ""year"": 2013, ""publishers"": [""ТРЕТЯ ПЛАНЕТА""], ""languages"": [""Ukrainian""], ""score"": 0}, {""version_id"": 326189, ""name"": ""Czech first edition"", ""year"": 2014, ""publishers"": [""ADC Blackfire Entertainment""], ""languages"": [""Czech""], ""score"": 0}, {""version_id"": 252117, ""name"": ""German first deluxe edition"", ""year"": 2014, ""publishers"": [""Pegasus Spiele""], ""languages"": [""German""], ""score"": 0}, {""version_id"": 162711, ""name"": ""Italian edition"", ""year"": 2015, ""publishers"": [""Raven Distribution""], ""languages"": [""Italian""], ""score"": 0}, {""version_id"": 344636, ""name"": ""Dutch second edition"", ""year"": 2016, ""publishers"": [""Enigma (Bergsala Enigma)""], ""languages"": [""Dutch""], ""score"": 0}, {""version_id"": 537673, ""name"": ""Edge Spanish edition 2016"", ""year"": 2016, ""publishers"": [""Edge Entertainment""], ""languages"": [""Spanish""], ""score"": 0}, {""version_id"": 470126, ""name"": ""French edition 2016"", ""year"": 2016, ""publishers"": [""Edge Entertainment""], ""languages"": [""French""], ""score"": 0}, {""version_id"": 400996, ""name"": ""German edition 2016"", ""year"": 2016, ""publishers"": [""Pegasus Spiele""], ""languages"": [""German""], ""score"": 0}, {""version_id"": 629032, ""name"": ""German edition 2016"", ""year"": 2016, ""publishers"": [""Pegasus Spiele""], ""languages"": [""German""], ""score"": 0}, {""version_id"": 592834, ""name"": ""Polish edition"", ""year"": 2016, ""publishers"": [""Black Monk""], ""languages"": [""Polish""], ""score"": 0}, {""version_id"": 307053, ""name"": ""Turkish edition"", ""year"": 2016, ""publishers"": [""NeoTroy Games""], ""languages"": [""Turkish""], ""score"": 0}, {""version_id"": 391152, ""name"": ""Devir Spanish edition"", ""year"": 2017, ""publishers"": [""Devir""], ""languages"": [""Spanish""], ""score"": 0}, {""version_id"": 759566, ""name"": ""German edition 2017"", ""year"": 2017, ""publishers"": [""Pegasus Spiele""], ""languages"": [""German""], ""score"": 0}, {""version_id"": 388434, ""name"": ""Hungarian fifth edition"", ""year"": 2017, ""publishers"": [""Delta Vision Publishing""], ""languages"": [""Hungarian""], ""score"": 0}, {""version_id"": 396459, ""name"": ""Norwegian first edition"", ""year"": 2018, ""publishers"": [""Outland""], ""languages"": [""Norwegian""], ""score"": 0}, {""version_id"": 803319, ""name"": ""Hungarian sixth edition"", ""year"": 2019, ""publishers"": [""Delta Vision Publishing""], ""languages"": [""Hungarian""], ""score"": 0}, {""version_id"": 696487, ""name"": ""Hungarian eighth edition"", ""year"": 2022, ""publishers"": [""Delta Vision Publishing""], ""languages"": [""Hungarian""], ""score"": 0}, {""version_id"": 718526, ""name"": ""Norwegian second edition"", ""year"": 2022, ""publishers"": [""Outland""], ""languages"": [""Norwegian""], ""score"": 0}, {""version_id"": 801737, ""name"": ""German edition 2025"", ""year"": 2025, ""publishers"": [""Pegasus Spiele""], ""languages"": [""German""], ""score"": 0}]",IMG_4537.jpeg,, +SPANC Space Pirate Amazon Ninja Catgirls,14535,SPANC: Space Pirate Amazon Ninja Catgirls,2005,boardgame,auto,29075,English first edition,version_approved,"[{""bgg_id"": 14535, ""name"": ""SPANC: Space Pirate Amazon Ninja Catgirls"", ""year"": 2005, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": null, ""rank"": null}]","[{""version_id"": 29075, ""name"": ""English first edition"", ""year"": 2005, ""publishers"": [""Steve Jackson Games""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 429099, ""name"": ""English second edition"", ""year"": 2018, ""publishers"": [""Steve Jackson Games""], ""languages"": [""English""], ""score"": 3}]",IMG_4537.jpeg,, Greed Quest,9666,Greed Quest,2004,boardgame,auto,215137,English edition,version_auto,"[{""bgg_id"": 9666, ""name"": ""Greed Quest"", ""year"": 2004, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": null, ""rank"": null}]","[{""version_id"": 215137, ""name"": ""English edition"", ""year"": 2004, ""publishers"": [""Steve Jackson Games""], ""languages"": [""English""], ""score"": 3}]",IMG_4537.jpeg,, GLOOMHAVEN - Jaws of the Lion,291457,Gloomhaven: Jaws of the Lion,2020,boardgame,auto,,,version_unknown,"[{""bgg_id"": 291457, ""name"": ""Gloomhaven: Jaws of the Lion"", ""year"": 2020, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": null, ""rank"": null}]",[],IMG_4538.jpeg,, -SCRABBLE SLAM!,40508,Scrabble Slam!,2008,boardgame,auto,,,version_ambiguous,"[{""bgg_id"": 40508, ""name"": ""Scrabble Slam!"", ""year"": 2008, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": null, ""rank"": null}]","[{""version_id"": 39335, ""name"": ""English edition"", ""year"": 2009, ""publishers"": [""Hasbro""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 644326, ""name"": ""English edition with Hasbro logo"", ""year"": 2008, ""publishers"": [""Hasbro"", ""Parker Brothers""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 25061, ""name"": ""English edition with Parker Brothers logo"", ""year"": 2008, ""publishers"": [""Hasbro"", ""Parker Brothers""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 294332, ""name"": ""English/French edition"", ""year"": 2008, ""publishers"": [""Hasbro"", ""Parker Brothers""], ""languages"": [""English"", ""French""], ""score"": 3}, {""version_id"": 480950, ""name"": ""English/French edition"", ""year"": 2014, ""publishers"": [""Hasbro""], ""languages"": [""English"", ""French""], ""score"": 3}, {""version_id"": 116530, ""name"": ""Dutch edition"", ""year"": 2009, ""publishers"": [""Hasbro""], ""languages"": [""Dutch""], ""score"": 2}, {""version_id"": 345823, ""name"": ""French edition"", ""year"": 2009, ""publishers"": [""Hasbro""], ""languages"": [""French""], ""score"": 2}, {""version_id"": 111167, ""name"": ""German edition"", ""year"": 2010, ""publishers"": [""Hasbro""], ""languages"": [""German""], ""score"": 2}]",IMG_4543.jpeg,, +SCRABBLE SLAM!,40508,Scrabble Slam!,2008,boardgame,auto,644326,English edition with Hasbro logo,version_approved,"[{""bgg_id"": 40508, ""name"": ""Scrabble Slam!"", ""year"": 2008, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": null, ""rank"": null}]","[{""version_id"": 39335, ""name"": ""English edition"", ""year"": 2009, ""publishers"": [""Hasbro""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 644326, ""name"": ""English edition with Hasbro logo"", ""year"": 2008, ""publishers"": [""Hasbro"", ""Parker Brothers""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 25061, ""name"": ""English edition with Parker Brothers logo"", ""year"": 2008, ""publishers"": [""Hasbro"", ""Parker Brothers""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 294332, ""name"": ""English/French edition"", ""year"": 2008, ""publishers"": [""Hasbro"", ""Parker Brothers""], ""languages"": [""English"", ""French""], ""score"": 3}, {""version_id"": 480950, ""name"": ""English/French edition"", ""year"": 2014, ""publishers"": [""Hasbro""], ""languages"": [""English"", ""French""], ""score"": 3}, {""version_id"": 116530, ""name"": ""Dutch edition"", ""year"": 2009, ""publishers"": [""Hasbro""], ""languages"": [""Dutch""], ""score"": 2}, {""version_id"": 345823, ""name"": ""French edition"", ""year"": 2009, ""publishers"": [""Hasbro""], ""languages"": [""French""], ""score"": 2}, {""version_id"": 111167, ""name"": ""German edition"", ""year"": 2010, ""publishers"": [""Hasbro""], ""languages"": [""German""], ""score"": 2}]",IMG_4543.jpeg,, CAT STAX,,,,,local,,,,[],[],IMG_4544.jpeg,, POCKET FARKEL,3181,Farkle,1930,boardgame,approved,87931,Legendary Games cannister edition,version_approved,[],"[{""version_id"": 374844, ""name"": ""Legendary Games black flat pack edition"", ""year"": 1996, ""publishers"": [""Legendary Games, Inc.""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 390425, ""name"": ""Legendary Games blister pack editon"", ""year"": 0, ""publishers"": [""Cardinal"", ""Legendary Games, Inc.""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 87931, ""name"": ""Legendary Games cannister edition"", ""year"": 0, ""publishers"": [""Legendary Games, Inc."", ""Reveal Entertainment, Inc.""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 295385, ""name"": ""Legendary Games dice rolling tray edition"", ""year"": 2006, ""publishers"": [""Legendary Games, Inc.""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 658688, ""name"": ""Legendary Games English/Spanish \""Alaska: The Last Frontier\"" edition"", ""year"": 1999, ""publishers"": [""Legendary Games, Inc.""], ""languages"": [""English"", ""Spanish""], ""score"": 3}, {""version_id"": 374847, ""name"": ""Legendary Games flat pack edition"", ""year"": 0, ""publishers"": [""Legendary Games, Inc.""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 247184, ""name"": ""Legendary Games flat pack edition 1996"", ""year"": 1996, ""publishers"": [""Legendary Games, Inc.""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 374842, ""name"": ""Legendary Games flat pack edition 1996"", ""year"": 1996, ""publishers"": [""Legendary Games, Inc.""], ""languages"": [""English""], ""score"": 3}]",IMG_4545.jpeg,, Go Fish Yourself,173057,Go Fish Yourself,2015,boardgame,auto,,,version_unknown,"[{""bgg_id"": 173057, ""name"": ""Go Fish Yourself"", ""year"": 2015, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": null, ""rank"": null}]",[],IMG_4546.jpeg,, @@ -121,12 +121,12 @@ Parsely,258849,Parsely,2018,rpgitem,auto,,,version_unknown,"[{""bgg_id"": 258849 "...and then, we held hands.",153999,"...and then, we held hands.",2015,boardgame,auto,280845,English edition,version_auto,"[{""bgg_id"": 153999, ""name"": ""...and then, we held hands."", ""year"": 2015, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": null, ""rank"": null}]","[{""version_id"": 280845, ""name"": ""English edition"", ""year"": 2015, ""publishers"": [""LudiCreations""], ""languages"": [""English""], ""score"": 3}]",image.jpg,, Consentacle,166976,Consentacle,2014,boardgame,auto,410382,English Kickstarter edition,version_approved,"[{""bgg_id"": 166976, ""name"": ""Consentacle"", ""year"": 2014, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": null, ""rank"": null}]","[{""version_id"": 410382, ""name"": ""English Kickstarter edition"", ""year"": 2018, ""publishers"": [""(Self-Published)""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 596756, ""name"": ""English Print-and-Play edition"", ""year"": 2018, ""publishers"": [""(Self-Published)""], ""languages"": [""English""], ""score"": 3}]",shelf-20260803-171316.jpg,, The Simpsons Trivia Game,2980,The Simpsons Trivia Game,2000,boardgame,auto,,,version_unknown,"[{""bgg_id"": 2980, ""name"": ""The Simpsons Trivia Game"", ""year"": 2000, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": 786, ""rank"": 30823}, {""bgg_id"": 16343, ""name"": ""The Simpsons 2 Trivia Game"", ""year"": 2001, ""type"": ""boardgame"", ""exact"": false, ""fuzzy"": 95.2, ""owned"": 76, ""rank"": null}]",[],shelf-20260803-213735.jpg,, -THE CAT GAME,231302,The Cat Game,2017,boardgame,auto,,,version_ambiguous,"[{""bgg_id"": 231302, ""name"": ""The Cat Game"", ""year"": 2017, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": null, ""rank"": null}]","[{""version_id"": 361880, ""name"": ""English/French edition"", ""year"": 2017, ""publishers"": [""Spin Master Ltd.""], ""languages"": [""English"", ""French""], ""score"": 2}, {""version_id"": 433263, ""name"": ""German edition"", ""year"": 0, ""publishers"": [""Spin Master Ltd.""], ""languages"": [""German""], ""score"": 2}]",shelf-20260803-213756.jpg,, +THE CAT GAME,231302,The Cat Game,2017,boardgame,auto,361880,English/French edition,version_approved,"[{""bgg_id"": 231302, ""name"": ""The Cat Game"", ""year"": 2017, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": null, ""rank"": null}]","[{""version_id"": 361880, ""name"": ""English/French edition"", ""year"": 2017, ""publishers"": [""Spin Master Ltd.""], ""languages"": [""English"", ""French""], ""score"": 2}, {""version_id"": 433263, ""name"": ""German edition"", ""year"": 0, ""publishers"": [""Spin Master Ltd.""], ""languages"": [""German""], ""score"": 2}]",shelf-20260803-213756.jpg,, BLINK,1197,Blink,1995,boardgame,auto,,,version_unknown,"[{""bgg_id"": 1197, ""name"": ""Blink"", ""year"": 1995, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": 6143, ""rank"": 6149}, {""bgg_id"": 185341, ""name"": ""Blink!"", ""year"": 2015, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": 111, ""rank"": null}, {""bgg_id"": 15852, ""name"": ""Blinki"", ""year"": 1910, ""type"": ""boardgame"", ""exact"": false, ""fuzzy"": 90.9, ""owned"": 106, ""rank"": 30046}]",[],shelf-20260803-215650.jpg,, The Office Trivia Game,352819,The Office Trivia Game,2019,boardgame,approved,,,version_error,"[{""bgg_id"": 352819, ""name"": ""The Office Trivia Game"", ""year"": 2019, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": 159, ""rank"": null}, {""bgg_id"": 36895, ""name"": ""The Office Trivia Game"", ""year"": 2008, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": 432, ""rank"": 30024}]",[],shelf-20260803-215703.jpg,, Patchwork,163412,Patchwork,2014,boardgame,auto,,,version_unknown,"[{""bgg_id"": 163412, ""name"": ""Patchwork"", ""year"": 2014, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": 124114, ""rank"": 148}, {""bgg_id"": 41585, ""name"": ""Patchwork"", ""year"": 2009, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": 473, ""rank"": 14984}]",[],IMG_4501.jpeg,, MANTIS FALLS,291847,Mantis Falls,2021,boardgame,auto,,,version_unknown,"[{""bgg_id"": 291847, ""name"": ""Mantis Falls"", ""year"": 2021, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": null, ""rank"": null}]",[],IMG_4505.jpeg,, -SMALL WORLD,40692,Small World,2009,boardgame,auto,,,version_ambiguous,"[{""bgg_id"": 40692, ""name"": ""Small World"", ""year"": 2009, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": null, ""rank"": null}]","[{""version_id"": 488854, ""name"": ""English edition 2019"", ""year"": 2019, ""publishers"": [""Days of Wonder""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 23936, ""name"": ""English first edition"", ""year"": 2009, ""publishers"": [""Days of Wonder""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 174280, ""name"": ""English second edition"", ""year"": 2010, ""publishers"": [""Days of Wonder""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 294178, ""name"": ""English third edition"", ""year"": 2012, ""publishers"": [""Days of Wonder""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 478262, ""name"": ""Chinese edition"", ""year"": 2018, ""publishers"": [""Days of Wonder""], ""languages"": [""Chinese""], ""score"": 2}, {""version_id"": 24053, ""name"": ""Dutch edition"", ""year"": 2009, ""publishers"": [""Days of Wonder""], ""languages"": [""Dutch""], ""score"": 2}, {""version_id"": 73633, ""name"": ""French first edition"", ""year"": 2009, ""publishers"": [""Days of Wonder""], ""languages"": [""French""], ""score"": 2}, {""version_id"": 287468, ""name"": ""French second edition"", ""year"": 2010, ""publishers"": [""Days of Wonder""], ""languages"": [""French""], ""score"": 2}]",IMG_4513.jpeg,, +SMALL WORLD,40692,Small World,2009,boardgame,auto,294178,English third edition,version_approved,"[{""bgg_id"": 40692, ""name"": ""Small World"", ""year"": 2009, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": null, ""rank"": null}]","[{""version_id"": 488854, ""name"": ""English edition 2019"", ""year"": 2019, ""publishers"": [""Days of Wonder""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 23936, ""name"": ""English first edition"", ""year"": 2009, ""publishers"": [""Days of Wonder""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 174280, ""name"": ""English second edition"", ""year"": 2010, ""publishers"": [""Days of Wonder""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 294178, ""name"": ""English third edition"", ""year"": 2012, ""publishers"": [""Days of Wonder""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 478262, ""name"": ""Chinese edition"", ""year"": 2018, ""publishers"": [""Days of Wonder""], ""languages"": [""Chinese""], ""score"": 2}, {""version_id"": 24053, ""name"": ""Dutch edition"", ""year"": 2009, ""publishers"": [""Days of Wonder""], ""languages"": [""Dutch""], ""score"": 2}, {""version_id"": 73633, ""name"": ""French first edition"", ""year"": 2009, ""publishers"": [""Days of Wonder""], ""languages"": [""French""], ""score"": 2}, {""version_id"": 287468, ""name"": ""French second edition"", ""year"": 2010, ""publishers"": [""Days of Wonder""], ""languages"": [""French""], ""score"": 2}]",IMG_4513.jpeg,, ARTISTRY,432858,Artistry,2025,boardgame,auto,734890,English edition,version_approved,"[{""bgg_id"": 432858, ""name"": ""Artistry"", ""year"": 2025, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": null, ""rank"": null}]","[{""version_id"": 762382, ""name"": ""English Deluxe edition"", ""year"": 2025, ""publishers"": [""Dux Somnium Games""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 734890, ""name"": ""English edition"", ""year"": 2025, ""publishers"": [""Dux Somnium Games""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 762383, ""name"": ""English Jewelry Box edition"", ""year"": 2025, ""publishers"": [""Dux Somnium Games""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 777369, ""name"": ""Russian edition"", ""year"": 2026, ""publishers"": [""Choo Choo Games"", ""Dux Somnium Games""], ""languages"": [""Russian""], ""score"": 2}]",IMG_4515.jpeg,, MAGE WARS ACADEMY,172503,Mage Wars Academy,2015,boardgame,auto,265107,English edition,version_auto,"[{""bgg_id"": 172503, ""name"": ""Mage Wars Academy"", ""year"": 2015, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": null, ""rank"": null}]","[{""version_id"": 265107, ""name"": ""English edition"", ""year"": 2015, ""publishers"": [""Arcane Wonders""], ""languages"": [""English""], ""score"": 3}]",IMG_4518.jpeg,, BOTANY: TANTALIZING TREES,417060,Botany: Tantalizing Trees,2024,boardgameexpansion,auto,706506,English edition,version_auto,"[{""bgg_id"": 417060, ""name"": ""Botany: Tantalizing Trees"", ""year"": 2024, ""type"": ""boardgameexpansion"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": null, ""rank"": null}]","[{""version_id"": 706506, ""name"": ""English edition"", ""year"": 2024, ""publishers"": [""Dux Somnium Games""], ""languages"": [""English""], ""score"": 3}]",IMG_4571.jpeg,, @@ -134,4 +134,4 @@ BOTANY: PERILOUS PERFUMES,417064,Botany: Perilous Perfumes,2024,boardgameexpansi Civilization: West Extension Map,2058,Civilization: West Extension Map,1986,boardgameexpansion,auto,,,version_unknown,"[{""bgg_id"": 2058, ""name"": ""Civilization: West Extension Map"", ""year"": 1986, ""type"": ""boardgameexpansion"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": null, ""rank"": null}]",[],,, Artistry: Delightful Doorways Mini Expansion,452833,Artistry: Delightful Doorways Mini Expansion,2025,boardgameexpansion,auto,,,version_unknown,"[{""bgg_id"": 452833, ""name"": ""Artistry: Delightful Doorways Mini Expansion"", ""year"": 2025, ""type"": ""boardgameexpansion"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": null, ""rank"": null}]",[],,, castle panic wizard's tower,104590,Castle Panic: The Wizard's Tower,2011,boardgameexpansion,auto,,,version_unknown,"[{""bgg_id"": 104590, ""name"": ""Castle Panic: The Wizard's Tower"", ""year"": 2011, ""type"": ""boardgameexpansion"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": null, ""rank"": null}]",[],,, -WIZ-WAR,,,,,ambiguous,,,,"[{""bgg_id"": 589, ""name"": ""Wiz-War"", ""year"": 1983, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": 2076, ""rank"": 3049}, {""bgg_id"": 324937, ""name"": ""Wiz-War (9th Edition)"", ""year"": 2023, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 53.8, ""owned"": 482, ""rank"": 11443}, {""bgg_id"": 104710, ""name"": ""Wiz-War (Eighth Edition)"", ""year"": 2012, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 48.3, ""owned"": 7742, ""rank"": 1266}]",[],IMG_4504.jpeg,, +WIZ-WAR,104710,Wiz-War (Eighth Edition),2012,boardgame,approved,117685,English first edition,version_auto,"[{""bgg_id"": 589, ""name"": ""Wiz-War"", ""year"": 1983, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 100.0, ""owned"": 2076, ""rank"": 3049}, {""bgg_id"": 324937, ""name"": ""Wiz-War (9th Edition)"", ""year"": 2023, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 53.8, ""owned"": 482, ""rank"": 11443}, {""bgg_id"": 104710, ""name"": ""Wiz-War (Eighth Edition)"", ""year"": 2012, ""type"": ""boardgame"", ""exact"": true, ""fuzzy"": 48.3, ""owned"": 7742, ""rank"": 1266}]","[{""version_id"": 117685, ""name"": ""English first edition"", ""year"": 2012, ""publishers"": [""Fantasy Flight Games""], ""languages"": [""English""], ""score"": 5}, {""version_id"": 244745, ""name"": ""English second edition"", ""year"": 2013, ""publishers"": [""Fantasy Flight Games""], ""languages"": [""English""], ""score"": 3}, {""version_id"": 185192, ""name"": ""French edition"", ""year"": 2012, ""publishers"": [""Edge Entertainment""], ""languages"": [""French""], ""score"": 2}, {""version_id"": 188887, ""name"": ""Italian edition"", ""year"": 2012, ""publishers"": [""Giochi Uniti""], ""languages"": [""Italian""], ""score"": 2}, {""version_id"": 164985, ""name"": ""Spanish edition"", ""year"": 2012, ""publishers"": [""Edge Entertainment""], ""languages"": [""Spanish""], ""score"": 2}, {""version_id"": 166902, ""name"": ""Wargames Club Traditional Chinese edition"", ""year"": 2012, ""publishers"": [""Wargames Club Publishing""], ""languages"": [""Chinese""], ""score"": 2}]",IMG_4504.jpeg,, diff --git a/data/to_add.csv b/data/to_add.csv index ad58221..1104cc8 100644 --- a/data/to_add.csv +++ b/data/to_add.csv @@ -1,7 +1,64 @@ bgg_id,bgg_name,year,type,version_id,version_name,title_raw,source_photos,second_copy -235096,Cat Crimes,2017,boardgame,360982,English edition,CAT CRIMES,IMG_4499.jpeg;IMG_4505.jpeg, -268163,A Gentle Rain,2019,boardgame,268164,Bloom Edition,a Gentle Rain,IMG_4501.jpeg;IMG_4507.jpeg, +334011,A Gentle Rain,2021,boardgame,701315,English Bloom edition,a Gentle Rain,IMG_4501.jpeg;IMG_4507.jpeg, +589,Wiz-War,1983,boardgame,27352,Chessex sixth edition,Wiz-War,IMG_4502.jpeg, +125921,Catan: Junior,2012,boardgame,476263,English third edition,CATAN JUNIOR,IMG_4516.jpeg, +31260,Agricola,2007,boardgame,297589,Z-Man Games English fifth edition,AGRICOLA,IMG_4518.jpeg, +181304,Mysterium,2015,boardgame,536289,English edition 2018-2,MYSTERIUM,IMG_4520.jpeg, +312786,Poetry for Neanderthals,2020,boardgame,514050,English edition 2020,Poetry for Neanderthals,IMG_4526.jpeg, +273240,The Red Dragon Inn Smorgasbox,2019,boardgame,446069,Kickstarter edition,The Red Dragon Inn: Smorgasbox,IMG_4527.jpeg, +419687,Munchkin Big Box,2025,boardgame,711400,English edition,Munchkin Big Box,IMG_4530.jpeg, +252153,Tang Garden,2019,boardgame,404702,English edition,Tang Garden,IMG_4533.jpeg, +255984,Sleeping Gods,2021,boardgame,701034,English Gamefound edition,Sleeping Gods,IMG_4534.jpeg, +283766,Sleeping Gods: Tides of Ruin,2021,boardgame,463140,English edition,Sleeping Gods: Tides of Ruin,IMG_4534.jpeg, +280794,Etherfields,2020,boardgame,458300,English edition,ETHERFIELDS,IMG_4535.jpeg, +380837,Botany,2024,boardgame,650545,English edition,BOTANY,IMG_4536.jpeg, +393672,Gloomhaven: Buttons & Bugs,2024,boardgame,669782,English edition,GLOOMHAVEN Buttons & Bugs,IMG_4537.jpeg, +14535,SPANC: Space Pirate Amazon Ninja Catgirls,2005,boardgame,29075,English first edition,SPANC Space Pirate Amazon Ninja Catgirls,IMG_4537.jpeg, +9666,Greed Quest,2004,boardgame,215137,English edition,Greed Quest,IMG_4537.jpeg, +40508,Scrabble Slam!,2008,boardgame,644326,English edition with Hasbro logo,SCRABBLE SLAM!,IMG_4543.jpeg, +3181,Farkle,1930,boardgame,87931,Legendary Games cannister edition,POCKET FARKEL,IMG_4545.jpeg, +193485,Dastardly Dirigibles,2016,boardgame,300446,English edition,Dastardly Dirigibles,IMG_4548.jpeg, +226065,Sheriff of Nottingham: Merry Men,2017,boardgame,353389,English edition,SHERIFF OF NOTTINGHAM MERRY MEN,IMG_4550.jpeg, +143884,Machi Koro,2012,boardgame,453051,"English fifth anniversary edition, first printing",MACHI KORO,IMG_4551.jpeg, +358880,Etherfields: Kittenburg Expansion,2022,boardgame,603694,English edition,ETHERFIELDS KITTENBURG EXPANSION,IMG_4570.jpeg, +432858,Artistry,2025,boardgame,734890,English edition,ARTISTRY,IMG_4515.jpeg, +417060,Botany: Tantalizing Trees,2024,boardgameexpansion,706506,English edition,BOTANY: TANTALIZING TREES,IMG_4571.jpeg, +417064,Botany: Perilous Perfumes,2024,boardgameexpansion,706510,English edition,BOTANY: PERILOUS PERFUMES,IMG_4571.jpeg, +161928,Utter Nonsense,2014,boardgame,,,Utter Nonsense!,IMG_4501.jpeg;IMG_4507.jpeg;IMG_4556.jpeg, 50381,Cards Against Humanity,2009,boardgame,,,Cards Against Humanity,IMG_4501.jpeg;IMG_4556.jpeg, -1078,Skip-Bo,1967,boardgame,,,SKIP-BO,IMG_4501.jpeg;IMG_4542.jpeg, -218866,Scrawl,2017,boardgame,,,SCRAWL,IMG_4502.jpeg, +1269,Skip-Bo,1967,boardgame,,,SKIP-BO,IMG_4501.jpeg;IMG_4542.jpeg, +202982,Scrawl,2016,boardgame,,,SCRAWL,IMG_4502.jpeg, 195314,Herbaceous,2017,boardgame,,,Herbaceous,IMG_4507.jpeg, +320202,Dragon Land,2020,boardgame,,,Dragon Land,IMG_4508.jpeg;IMG_4542.jpeg, +2452,Jenga,1983,boardgame,,,Jenga,IMG_4509.jpeg, +42063,Code Master,1997,boardgame,,,CODE MASTER,IMG_4510.jpeg, +340420,Throw Throw Avocado,2021,boardgame,,,THROW THROW AVOCADO,IMG_4511.jpeg, +1260,Rook,1906,boardgame,,,ROOK,IMG_4511.jpeg, +116,Guillotine,1998,boardgame,,,Guillotine,IMG_4512.jpeg, +169124,Flick 'em Up!,2015,boardgame,,,Flick'em UP!,IMG_4513.jpeg, +20866,The Rocky Horror Trivia Game,2005,boardgame,,,The Rocky Horror Trivia Game,IMG_4514.jpeg, +269564,Captain Marvel: Secret Skrulls,2019,boardgame,,,CAPTAIN MARVEL SECRET SKRULLS,IMG_4516.jpeg, +18755,Pie Face!,1964,boardgame,,,Pie Face!,IMG_4517.jpeg, +140509,Dungeons & Dragons,1985,boardgame,,,DUNGEONS & DRAGONS,IMG_4519.jpeg, +201248,Evolution: The Beginning,2016,boardgame,,,evolution The Beginning,IMG_4520.jpeg, +362205,Sleeping Gods: Primeval Peril,2023,boardgame,,,Sleeping Gods PRIMEVAL PERIL,IMG_4521.jpeg, +453845,Murder at the Manor,2021,boardgame,,,Murder at the Manor,IMG_4522.jpeg, +329230,Bluffaneer,2021,boardgame,,,Bluffaneer,IMG_4522.jpeg, +358320,Sleeping Gods: Distant Skies,2023,boardgame,,,Sleeping Gods DISTANT SKIES,IMG_4523.jpeg, +389113,Rivals,2025,boardgame,,,THE RIVALS FOR CATAN CARD GAME,IMG_4523.jpeg, +324937,Wiz-War (9th Edition),2023,boardgame,,,WIZ-WAR,IMG_4528.jpeg, +295770,Frosthaven,2022,boardgame,,,FROSTHAVEN,IMG_4531.jpeg, +174430,Gloomhaven,2017,boardgame,,,GLOOMHAVEN,IMG_4532.jpeg, +442312,Deadly Doodles,2025,boardgame,,,DEADLY DOODLES,IMG_4533.jpeg, +332398,Everdell: The Complete Collection,2022,boardgame,,,Everdell The Complete Collection,IMG_4533.jpeg, +334065,Verdant,2022,boardgame,,,Verdant,IMG_4534.jpeg, +283155,Calico,2020,boardgame,,,Calico,IMG_4534.jpeg, +291457,Gloomhaven: Jaws of the Lion,2020,boardgame,,,GLOOMHAVEN - Jaws of the Lion,IMG_4538.jpeg, +150925,Hold Your Breath!,2014,boardgame,,,Hold your Breath!,IMG_4547.jpeg, +2980,The Simpsons Trivia Game,2000,boardgame,,,The Simpsons Trivia Game,shelf-20260803-213735.jpg, +1197,Blink,1995,boardgame,,,BLINK,shelf-20260803-215650.jpg, +352819,The Office Trivia Game,2019,boardgame,,,The Office Trivia Game,shelf-20260803-215703.jpg, +163412,Patchwork,2014,boardgame,,,Patchwork,IMG_4501.jpeg, +291847,Mantis Falls,2021,boardgame,,,MANTIS FALLS,IMG_4505.jpeg, +2058,Civilization: West Extension Map,1986,boardgameexpansion,,,Civilization: West Extension Map,, +452833,Artistry: Delightful Doorways Mini Expansion,2025,boardgameexpansion,,,Artistry: Delightful Doorways Mini Expansion,, diff --git a/data/to_update.csv b/data/to_update.csv index a7cb84a..1a2e7b7 100644 --- a/data/to_update.csv +++ b/data/to_update.csv @@ -1 +1,35 @@ collid,bgg_id,bgg_name,version_id,version_name +53429559,240,Britannia,24621,Avalon Hill second edition +53429530,71,Civilization,24006,Avalon Hill first edition 1981 +53429542,177,Advanced Civilization,24972,English edition +53429504,3090,Doctor Who: The Game of Time & Space,25782,English edition +53429482,3585,Sorcerer: The Game of Magical Conflict,211154,SPI Designer's Edition +53429367,2524,StarForce 'Alpha Centauri': Interstellar Conflict in the 25th Century,219137,SPI boxed designer's edition +53429816,224,History of the World,20727,Avalon Hill/Hasbro edition +53429636,9209,Ticket to Ride,294188,English edition 2012 with Spiel des Jahres logo +53430595,13,Catan,347121,English edition 2016 +53430485,1219,Labyrinth,488621,English edition 2017 +53429649,137909,Bugs in the Kitchen,216474,English first edition +53430142,27710,Catan Dice Game,606657,English edition 2018 +53429953,169784,Castle Panic: The Dark Titan,260454,English first edition +53429666,147370,Robot Turtles,231664,English second edition +53430559,43443,Castle Panic,103068,"English edition, fourth printing" +53429632,24310,The Red Dragon Inn,374258,English fifth edition +53429748,39856,Dixit,296529,Asmodee/Libellud English edition 2015 +53430257,35505,Walk the Plank!,781669,English MDG-4311 edition +53430020,164,"Before I Kill You, Mister Bond",28465,"Cheapass black and white ""Better Edition"" edition" +53429887,65244,Forbidden Island,31208,English edition 051210 +53429908,95386,Tempurra,290572,English edition +53430200,258,Fluxx,20840,Looney Labs Version v2.1 +53430332,188614,Simon's Cat Card Game,779792,"English edition, second printing" +53429850,4324,Risk: The Lord of the Rings,26859,English edition 2002 +53429933,1927,Munchkin,28144,"English edition 2009, 15th printing" +53430007,1784,Dark Cults,110926,First edition +53429986,176,Give Me the Brain!,27673,Czech edition +53430040,257,Kill Doctor Lucky,520364,"Cheapass envelope edition, second printing" +53612880,153999,"...and then, we held hands.",280845,English edition +53612866,166976,Consentacle,410382,English Kickstarter edition +53430652,231302,The Cat Game,361880,English/French edition +53430517,40692,Small World,294178,English third edition +53429718,172503,Mage Wars Academy,265107,English edition +53429642,104710,Wiz-War (Eighth Edition),117685,English first edition diff --git a/data/upload_log.csv b/data/upload_log.csv new file mode 100644 index 0000000..c4f96f6 --- /dev/null +++ b/data/upload_log.csv @@ -0,0 +1,4 @@ +action,bgg_id,collid,name,version_id,second_copy,status,timestamp,error +add,334011,,A Gentle Rain,701315,,failed,2026-08-06T02:15:34+00:00,"TimeoutError: 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" +add,589,,Wiz-War,27352,,failed,2026-08-06T02:20:33+00:00,"Error: Locator.check: Error: strict mode violation: get_by_role(""dialog"").get_by_label(""Own"") resolved to 2 elements: 1) aka get_by_role(""checkbox"", name=""Own"", exact=True) 2) aka get_by_role(""checkbox"", name=""Prev. Owned"") Call log: - waiting for get_by_role(""dialog"").get_by_label(""Own"")" +add,334011,,A Gentle Rain,701315,,added,2026-08-06T02:21:32+00:00, diff --git a/src/bggpipe/upload.py b/src/bggpipe/upload.py index 478c6c4..dd939ca 100644 --- a/src/bggpipe/upload.py +++ b/src/bggpipe/upload.py @@ -213,12 +213,13 @@ def build_queue( def _scrub(text: str) -> str: """Credentials must never reach the log, even via a selector error that - echoes filled form values.""" + echoes filled form values. Playwright errors carry multi-line call + logs; a CSV cell keeps one line.""" for key in ("BGG_PASSWORD", "BGG_USERNAME"): value = os.environ.get(key) if value: text = text.replace(value, "***") - return text + return " ".join(text.split()) class LoginError(RuntimeError): @@ -275,11 +276,32 @@ class PlaywrightUploader: # plus per-element auto-waiting is the reliable pattern. self._page.goto(url, wait_until="domcontentloaded") + # BGG's Sign In control is an with NO href, so it has + # no implicit link role — a role="link" query never matched it in any + # state, and "no Sign In link" silently meant "already logged in". + _SIGN_IN = 'a:has-text("Sign In"), button:has-text("Sign In")' + _SIGNED_IN = ':text-is("Sign Out"), :text-is("Log Out")' + def _signed_out(self) -> bool: - # Heuristic: the header shows a "Sign In" link only when logged out. - return ( - self._page.get_by_role("link", name=re.compile(r"^sign in$", re.I)).count() - > 0 + """True = signed out. Waits for the header to prove ONE state or + the other: BGG hydrates it after domcontentloaded, so an early read + finds NEITHER control — and any check resting on a single absence + (the original bug) then guesses, silently, in the unsafe direction. + Undeterminable state raises rather than assumes.""" + page = self._page + deadline = time.monotonic() + 30 + while time.monotonic() < deadline: + out = page.locator(self._SIGN_IN).count() + inside = page.locator(self._SIGNED_IN).count() + if out and not inside: + return True + if inside and not out: + return False + page.wait_for_timeout(250) + raise LoginError( + "could not tell whether this browser is signed in (neither a " + "Sign In nor a Sign Out control appeared in 30s) — BGG's header " + "may have changed; see docs/bgg-upload-flow.md" ) def _ensure_logged_in(self) -> None: @@ -313,6 +335,15 @@ class PlaywrightUploader: "login did not complete (wrong credentials, or the login " "page changed — see docs/bgg-upload-flow.md)" ) from err + # Verify the TRANSITION: the Sign In control was visible a + # moment ago, so its disappearance is evidence, not inference. + self._goto(f"{BGG}/") + if self._signed_out(): + raise LoginError( + "the login form was submitted but the site still offers " + "Sign In — credentials rejected, or a challenge is " + "pending in the browser window" + ) self._context.storage_state(path=str(self._storage_state)) self._storage_state.chmod(0o600) # session cookies: owner-only self._authed = True @@ -382,7 +413,9 @@ class PlaywrightUploader: dialog.get_by_role( "heading", name=re.compile(re.escape(job.name), re.I) ).wait_for(timeout=15_000) - dialog.get_by_label("Own").check() + # exact: "Own" is a substring of "Prev. Owned", and a loose label + # match resolves to both checkboxes (strict-mode violation) + dialog.get_by_role("checkbox", name="Own", exact=True).check() status, note = "added", "" if job.version_name and not self._select_version(dialog, job.version_name): status = "added_no_version" diff --git a/tests/test_upload.py b/tests/test_upload.py index aa9d818..7870fb7 100644 --- a/tests/test_upload.py +++ b/tests/test_upload.py @@ -491,3 +491,57 @@ def test_drift_warning_suppressed_for_multi_edition_partial_run(tmp_path, capsys ) run_upload(cfg, uploader=FakeUploader(), sleep=lambda s: None, now=_now) assert "manual correction" not in capsys.readouterr().out + + +# -- sign-in detection: never guess from a single absence ---------------- + + +class _FakePage: + """Counts per selector, replayed one poll at a time — the header + hydrates late, so the first reads legitimately see nothing.""" + + def __init__(self, script): + self.script = list(script) + self.polls = 0 + + def locator(self, selector): + counts = self.script[min(self.polls, len(self.script) - 1)] + + class _Loc: + def count(self): + return counts["out" if "Sign In" in selector else "in"] + + return _Loc() + + def wait_for_timeout(self, ms): + self.polls += 1 + + +def _uploader_with(script): + from bggpipe.upload import PlaywrightUploader + + up = PlaywrightUploader("someone") + up._page = _FakePage(script) + return up + + +def test_signed_out_waits_through_hydration(): + # neither control for two polls (the window the old check misread as + # "already signed in"), then the Sign In control appears + up = _uploader_with([{"out": 0, "in": 0}, {"out": 0, "in": 0}, {"out": 1, "in": 0}]) + assert up._signed_out() is True + + +def test_signed_in_is_detected_positively(): + up = _uploader_with([{"out": 0, "in": 0}, {"out": 0, "in": 1}]) + assert up._signed_out() is False + + +def test_undeterminable_state_raises_instead_of_guessing(monkeypatch): + from bggpipe.upload import LoginError + + ticks = iter([0, 1, 2, 31]) # force the deadline to pass + monkeypatch.setattr("time.monotonic", lambda: next(ticks)) + up = _uploader_with([{"out": 0, "in": 0}]) + with pytest.raises(LoginError, match="could not tell"): + up._signed_out()