stove fix3
This commit is contained in:
+22
-1
@@ -637,7 +637,7 @@ def fetch_stove_free():
|
|||||||
return "https://store.onstove.com/ko/games/" + str(game_id)
|
return "https://store.onstove.com/ko/games/" + str(game_id)
|
||||||
|
|
||||||
def _build_game(data):
|
def _build_game(data):
|
||||||
game_id = _pick(data, ["productNo", "productId", "product_id", "id", "no"])
|
game_id = _pick(data, ["productNo", "productId", "product_id"])
|
||||||
if game_id in (None, ""):
|
if game_id in (None, ""):
|
||||||
return None
|
return None
|
||||||
game_id = str(game_id).strip()
|
game_id = str(game_id).strip()
|
||||||
@@ -673,6 +673,27 @@ def fetch_stove_free():
|
|||||||
|
|
||||||
def _collect_games(payload, seen):
|
def _collect_games(payload, seen):
|
||||||
games = []
|
games = []
|
||||||
|
items = None
|
||||||
|
if isinstance(payload, dict):
|
||||||
|
candidate_lists = [value for value in payload.values() if isinstance(value, list)]
|
||||||
|
if candidate_lists:
|
||||||
|
items = max(candidate_lists, key=len)
|
||||||
|
elif isinstance(payload, list):
|
||||||
|
items = payload
|
||||||
|
|
||||||
|
if items is not None:
|
||||||
|
for item in items:
|
||||||
|
if not isinstance(item, dict):
|
||||||
|
continue
|
||||||
|
game = _build_game(item)
|
||||||
|
if not game:
|
||||||
|
continue
|
||||||
|
if game["external_id"] in seen:
|
||||||
|
continue
|
||||||
|
seen.add(game["external_id"])
|
||||||
|
games.append(game)
|
||||||
|
return games
|
||||||
|
|
||||||
for item in _iter_dicts(payload):
|
for item in _iter_dicts(payload):
|
||||||
game = _build_game(item)
|
game = _build_game(item)
|
||||||
if not game:
|
if not game:
|
||||||
|
|||||||
Reference in New Issue
Block a user