diff --git a/vrobbler/apps/boardgames/models.py b/vrobbler/apps/boardgames/models.py index a1403cd..17cdcb4 100644 --- a/vrobbler/apps/boardgames/models.py +++ b/vrobbler/apps/boardgames/models.py @@ -321,6 +321,8 @@ class BoardGame(ScrobblableMixin): ) -> "BoardGame": """Given a Lookup ID (either BGG or BGA ID), return a board game object""" game = cls.objects.filter(bggeek_id=lookup_id).first() + if not game: + game = cls.objects.filter(title=lookup_id).first() if game: logger.info( @@ -329,17 +331,18 @@ class BoardGame(ScrobblableMixin): ) return game - if data.get("name"): + if data.get("bggId"): + bgg_data = lookup_boardgame_from_bgg(lookup_id=data.get("bggId")) + elif data.get("name"): bgg_data = lookup_boardgame_from_bgg(title=data.get("name")) - if data.get("bgg_id"): - bgg_data = lookup_boardgame_from_bgg(lookup_id=data.get("bgg_id")) else: - bgg_data = lookup_boardgame_from_bgg(lookup_id=lookup_id) + bgg_data = lookup_boardgame_from_bgg(title=lookup_id) mechanics = bgg_data.pop("mechanics", []) designers = bgg_data.pop("designers", []) categories = bgg_data.pop("categories", []) publishers = bgg_data.pop("publishers", []) + publisher = bgg_data.pop("publisher", []) cover_url = bgg_data.pop("cover_url") game = cls.objects.create(**bgg_data) @@ -350,6 +353,11 @@ class BoardGame(ScrobblableMixin): game.no_points = data.get("noPoints", False) game.uses_teams = data.get("useTeams", False) game.bgstats_id = data.get("uuid", None) + if publisher: + publisher, _ = BoardGamePublisher.objects.get_or_create( + name=publisher + ) + game.publisher = publisher game.save() if designers: diff --git a/vrobbler/apps/boardgames/sources/bgg.py b/vrobbler/apps/boardgames/sources/bgg.py index 1813daf..7330863 100644 --- a/vrobbler/apps/boardgames/sources/bgg.py +++ b/vrobbler/apps/boardgames/sources/bgg.py @@ -14,7 +14,7 @@ def lookup_boardgame_from_bgg( if lookup_id: game = bgg.game(game_id=lookup_id) else: - game = bgg.game(lookup_id) + game = bgg.game(title) if game: game_dict["title"] = game.name @@ -34,5 +34,7 @@ def lookup_boardgame_from_bgg( game_dict["categories"] = game.categories game_dict["designers"] = game.designers game_dict["publishers"] = game.publishers + if game.publishers: + game_dict["publisher"] = game.publishers[0] return game_dict