This commit has no recorded session.
diff
commit f373e98e3dc46170ce834b0a33957b1d25d15698Author: Colin Powell <colin@unbl.ink>Date: Sat Jul 4 11:32:17 2026 -0400 [boardgames] Skip CCG games for auto expansion download@@ -88,7 +88,7 @@ fetching and simple saving. *** Metadata sources **** Scraper -* Backlog [1/26] :vrobbler:project:personal:+* Backlog [2/28] :vrobbler:project:personal: ** TODO [#C] After transition to linux add curl_cffi as webpage scrapper again :webpages:metadata: ** TODO [#C] Create small utility to clean up tracks scrobbled with wonky playback times :bug:music:scrobbles: :PROPERTIES:@@ -619,7 +619,34 @@ The Edit log form should have from top to bottom: - Expansion ids (which should a multi-select widget of expansions for this game) - Location (which should be a drop down of BoardGameLocations for this user) -** TODO Exclude some board games from auto-expansion imports :boardgames:+** TODO Board games should have genres extracted from family data :boardgames:metadata:+** TODO Fix bug in fetching expansions for board games :boardgames:+:PROPERTIES:+:ID: 17995312-e76e-4a50-b591-0eab78cb59ab+:END:++#+begin_src python+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^+ File "/usr/local/lib/python3.11/site-packages/vrobbler/apps/boardgames/management/commands/fetch_expansions.py", line 60, in handle+ fetch_and_link_expansions(game, expansions)+ File "/usr/local/lib/python3.11/site-packages/vrobbler/apps/boardgames/utils.py", line 51, in fetch_and_link_expansions+ expansion = BoardGame.find_or_create(str(exp_id))+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^+ File "/usr/local/lib/python3.11/site-packages/vrobbler/apps/boardgames/models.py", line 409, in find_or_create+ bgg_data = lookup_boardgame_from_bgg(lookup_id=lookup_id)+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^+ File "/usr/local/lib/python3.11/site-packages/vrobbler/apps/boardgames/sources/bgg.py", line 15, in lookup_boardgame_from_bgg+ game = bgg.game(game_id=lookup_id)+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^+ File "/usr/local/lib/python3.11/site-packages/boardgamegeek/api.py", line 1045, in game+ raise BGGApiError(msg)+boardgamegeek.exceptions.BGGApiError: invalid data for game id: 242117+#+end_src++** DONE Exclude some board games from auto-expansion imports :boardgames:+:PROPERTIES:+:ID: 51ffdf20-e732-4774-b781-c3501d26d46f+:END: *** Description @@ -28,8 +28,10 @@ class Command(BaseCommand): commit = options.get("commit", False) bggeek_id = options.get("bggeek_id") - games = BoardGame.objects.exclude(bggeek_id__isnull=True).exclude(- bggeek_id=""+ games = (+ BoardGame.objects.exclude(bggeek_id__isnull=True)+ .exclude(bggeek_id="")+ .exclude(skip_expansions=True) ) if bggeek_id: games = games.filter(bggeek_id=bggeek_id)@@ -0,0 +1,18 @@+# Generated by Django 4.2.29 on 2026-07-04 15:28++from django.db import migrations, models+++class Migration(migrations.Migration):++ dependencies = [+ ("boardgames", "0016_boardgamevariant"),+ ]++ operations = [+ migrations.AddField(+ model_name="boardgame",+ name="skip_expansions",+ field=models.BooleanField(default=False),+ ),+ ]@@ -300,6 +300,7 @@ class BoardGame(ScrobblableMixin): expansion_for_boardgame = models.ForeignKey( "self", **BNULL, on_delete=models.DO_NOTHING )+ skip_expansions = models.BooleanField(default=False) @property def subtitle(self) -> str:@@ -373,7 +374,8 @@ class BoardGame(ScrobblableMixin): from boardgames.utils import fetch_and_link_expansions - fetch_and_link_expansions(self, expansions)+ if not self.skip_expansions:+ fetch_and_link_expansions(self, expansions) def save_image_from_url(self, url): headers = {"User-Agent": "Vrobbler 0.11.12"}@@ -431,6 +433,18 @@ class BoardGame(ScrobblableMixin): if publisher: publisher, _ = BoardGamePublisher.objects.get_or_create(name=publisher) game.publisher = publisher++ skip_expansions = (+ game.bggeek_id+ and game.bggeek_id.isdigit()+ and int(game.bggeek_id) in settings.SKIP_AUTO_EXPANSION_DOWNLOAD+ ) or any(+ c == "Collectible Card Games" for c in categories+ )++ if skip_expansions:+ game.skip_expansions = True+ game.save() if designers:@@ -445,14 +459,15 @@ class BoardGame(ScrobblableMixin): publisher, _ = BoardGamePublisher.objects.get_or_create(name=name) game.publishers.add(publisher) - if defer_expansions:- from boardgames.tasks import fetch_board_game_expansions+ if expansions and not game.skip_expansions:+ if defer_expansions:+ from boardgames.tasks import fetch_board_game_expansions - fetch_board_game_expansions.delay(game.id, expansions)- else:- from boardgames.utils import fetch_and_link_expansions+ fetch_board_game_expansions.delay(game.id, expansions)+ else:+ from boardgames.utils import fetch_and_link_expansions - fetch_and_link_expansions(game, expansions)+ fetch_and_link_expansions(game, expansions) return game @@ -44,6 +44,13 @@ def fetch_and_link_expansions( """Given a board game and a list of expansion dicts (with 'id' and 'name'), find or create each expansion BoardGame and link it via expansion_for_boardgame. """+ if board_game.skip_expansions:+ logger.info(+ "Skipping expansion fetch for board game with skip_expansions=True",+ extra={"board_game_id": board_game.id, "title": board_game.title},+ )+ return+ for exp_data in expansions_data: exp_id = exp_data.get("id") if not exp_id:@@ -405,6 +405,12 @@ else: SCIHUB_DOMAIN = os.getenv("VROBBLER_SCIHUB_DOMAIN", "sci-hub.st") +SKIP_AUTO_EXPANSION_DOWNLOAD = [+ int(x.strip())+ for x in os.getenv("VROBBLER_SKIP_AUTO_EXPANSION_DOWNLOAD", "").split(",")+ if x.strip().isdigit()+]+ JSON_LOGGING = os.getenv("VROBBLER_JSON_LOGGING", "false").lower() in TRUTHY LOG_TYPE = "json" if JSON_LOGGING else "log"