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}"
|
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:
|
class HelloFreshClient:
|
||||||
def __init__(self, token: str | None = None):
|
def __init__(self, token: str | None = None):
|
||||||
self._ep = _load_endpoints()
|
self._ep = _load_endpoints()
|
||||||
@@ -129,7 +146,7 @@ class HelloFreshClient:
|
|||||||
rid = (c.get("recipe") or {}).get("id")
|
rid = (c.get("recipe") or {}).get("id")
|
||||||
if rid and rid not in ids:
|
if rid and rid not in ids:
|
||||||
ids.append(rid)
|
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]:
|
def _fetch_details(self, ids: list[str]) -> list[Recipe]:
|
||||||
"""Récupère les recettes complètes par batch d'ids."""
|
"""Récupère les recettes complètes par batch d'ids."""
|
||||||
|
|||||||
Reference in New Issue
Block a user