diff --git a/hellofresh/api.py b/hellofresh/api.py index af80b29..212dbbd 100644 --- a/hellofresh/api.py +++ b/hellofresh/api.py @@ -62,6 +62,23 @@ def current_week(offset: int = 0) -> str: return f"{y}-W{w:02d}" +def _dedupe_by_name(recipes: list[Recipe]) -> list[Recipe]: + """Fusionne les variantes du même plat (même nom, ids différents : 2/4 pers., etc.). + + On garde la première occurrence ; les ids des variantes restent valides pour la + sélection puisqu'ils pointent vers la même recette. + """ + seen: set[str] = set() + out: list[Recipe] = [] + for r in recipes: + key = " ".join((r.name or "").lower().split()) + if key in seen: + continue + seen.add(key) + out.append(r) + return out + + class HelloFreshClient: def __init__(self, token: str | None = None): self._ep = _load_endpoints() @@ -129,7 +146,7 @@ class HelloFreshClient: rid = (c.get("recipe") or {}).get("id") if rid and rid not in ids: ids.append(rid) - return self._fetch_details(ids) + return _dedupe_by_name(self._fetch_details(ids)) def _fetch_details(self, ids: list[str]) -> list[Recipe]: """Récupère les recettes complètes par batch d'ids."""