fix: group title on first ingredient + multi-site parser registry

- Fix ingredient groups creating empty entries in Mealie: set title
  field on the first ingredient after the group marker instead
- Refactor scraper with @_register decorator for URL-based site dispatch
- Update README with structured ingredients, groups, MEALIE_INTERNAL_URL

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-24 08:51:14 +01:00
parent c235d5caa7
commit a27b322409
3 changed files with 52 additions and 22 deletions
+11 -12
View File
@@ -145,27 +145,26 @@ class MealieClient:
def _build_payload(self, recipe: dict) -> dict:
ingredients = []
pending_group = ""
for item in recipe.get("ingredients", []):
if isinstance(item, dict):
# Group header marker
# Group header marker — apply title to the next real ingredient
if "group" in item and "food" not in item:
ingredients.append({
"referenceId": str(uuid.uuid4()),
"title": item["group"],
"note": "",
"isFood": False,
"disableAmount": True,
})
else:
ingredients.append(self._build_ingredient(item))
pending_group = item["group"]
continue
ing = self._build_ingredient(item)
else:
# Legacy: plain string
ingredients.append({
ing = {
"referenceId": str(uuid.uuid4()),
"note": str(item),
"isFood": False,
"disableAmount": True,
})
}
if pending_group:
ing["title"] = pending_group
pending_group = ""
ingredients.append(ing)
instructions = []
for text in recipe.get("instructions", []):