Dédoublonnage des variantes de recettes (même nom) dans get_menu
This commit is contained in:
@@ -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."""
|
||||
|
||||
Reference in New Issue
Block a user