From 594dc6ede4af8b810dff933f4f5c8bbfa0920227 Mon Sep 17 00:00:00 2001 From: neingeist Date: Tue, 10 Jun 2025 12:34:14 +0200 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20allergens?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- report_allergene.md | 192 ++++++++++++++++++++ report_allergene.py | 93 ++++++++++ report_allergene_korrektur.csv | 317 +++++++++++++++++++++++++++++++++ 3 files changed, 602 insertions(+) create mode 100644 report_allergene.md create mode 100644 report_allergene.py create mode 100644 report_allergene_korrektur.csv diff --git a/report_allergene.md b/report_allergene.md new file mode 100644 index 0000000..711184b --- /dev/null +++ b/report_allergene.md @@ -0,0 +1,192 @@ +Mungobohnenhummus mit Jalapenos und Zatar + +https://entropia.de/GPN23:Mungobohnenhummus_mit_Jalapenos_und_Zatar + +Mungobohnen, Tahini (**Sesam**), Olivenöl, Zitronensaft, Knoblauch, Kreuzkümmel (Cumin), Jalapenoringe, eingelegt, fein gehackt, Zatar (**Sesam, mgw. Senf und Sellerie**), Olivenöl, Jalapenoringe, eingelegt, fein gehackt + + + +Vegane Aioli + +https://entropia.de/GPN23:Vegane_Aioli + +Sojamilch (**Soja**), Rapsöl, Knoblauch, Senf, mittelscharf (**Senf**), Zitronensaft + + + +Salsa + +https://entropia.de/GPN23:Salsa + +Tomaten, gestückelt, Paprika, Zwiebeln, Tomatenmark, Kreuzkümmel (Cumin), Koriandersamen (gemahlen) + + + +Veganes Pizzabaguette Ofengemüse + +https://entropia.de/GPN23:Veganes_Pizzabaguette_Ofengemüse + +passierte Tomaten, Oregano, Basilikum, Knoblauchpulver, Paprika, Zucchini, Zwiebeln, veganer Reibekäse (**⁉️ Produkt prüfen**), Salz & Pfeffer, Aufbackbrötchen (**Gluten**) + + + +Rauchige Schwarze Bohnencreme + +https://entropia.de/GPN23:Rauchige_Schwarze_Bohnencreme + +Zwiebeln, Knoblauch, Pflanzenöl, Schwarze Bohnen, gekocht, Erdnussmus (**Erdnuss**), Rauchpaprika (Pimentón de la Vera), Pfeffer (schwarz), Majoran, Salz, Hefeflocken, Tomatenmark, Wasser + + + +Gulaschmarmelade + +https://entropia.de/GPN23:Gulaschmarmelade + +Paprika, rot oder gemischt, Chilischoten, Gelierzucker 3:1, Branntweinessig, Salz + + + +Bagel + +https://entropia.de/GPN23:Bagel + +Mehl (**Gluten**), Wasser, Trockenhefe, Mehl (**Gluten**), Trockenhefe, Salz, Malzsirup (**Gluten**), Wasser, Wasser, Malzsirup (**Gluten**) + + + +Salatdressing GPN + +https://entropia.de/GPN23:Salatdressing_GPN + +Olivenöl, Balsamico-Essig (**⁉️Produkt prüfen (Sulfite?)**), Wasser, Senf, mittelscharf (**Senf**), Erdbeermarmelade, Salatkräuter (**⁉️ Produkt prüfen**) + + + +Granatapfelcreme + +https://entropia.de/GPN23:Granatapfelcreme + +Cashewkerne (**Nüsse (Cashew)**), Paniermehl (**Gluten**), Paprika, Salz, Pfeffer (schwarz), Tomatenmark, Paprikapulver, Granatapfelsirup, Knoblauch, Harissa + + + +Soja-Gulasch + +https://entropia.de/GPN23:Soja-Gulasch + +Sojaschnetzel (**Soja**), Gemüsebrühe (**⁉️ Verwendetes Produkt prüfen**), Majoran, Thymian, Oregano, Pfeffer (schwarz), Paprika edelsüß, Zucker, Zwiebeln, gewürfelt, Tomatenmark, Zucker, Karotten, gewürfelt, Paprikastreifen, rot, Knoblauch, Tomaten, gestückelt, passierte Tomaten, Gemüsebrühe (**⁉️ Verwendetes Produkt prüfen**), Rotwein (**Sulfite**), Kartoffel, Paprika edelsüß, Paprika rosenscharf, Pfeffer (schwarz), Majoran, Oregano, Thymian, Raucharoma + + + +Kartoffelgulasch + +https://entropia.de/GPN23:Kartoffelgulasch + +Zwiebeln, gewürfelt, Tomatenmark, Zucker, Karotten, gewürfelt, Paprikastreifen, rot, Knoblauch, Tomaten, gestückelt, passierte Tomaten, Gemüsebrühe (**⁉️ Verwendetes Produkt prüfen**), Rotwein (**Sulfite**), Kartoffel, Paprika edelsüß, Paprika rosenscharf, Pfeffer (schwarz), Majoran, Oregano, Thymian, Raucharoma + + + +Kattis Hummus + +https://entropia.de/GPN23:Kattis_Hummus + +Kichererbsen, Tahini (**Sesam**), Olivenöl, Zitronensaft, Knoblauch, Kreuzkümmel (Cumin), Salz, Pfeffer (schwarz), Petersilie, glatt + + + +GPN-Tomatenbutter + +https://entropia.de/GPN23:GPN-Tomatenbutter + +Margarine (**⁉️ verwendetes Produkt prüfen**), Knoblauch, Getrocknete Tomaten, Rosmarin, Salz, Pfeffer (schwarz), Cayennepfeffer + + + +Erbsenhummus + +https://entropia.de/GPN23:Erbsenhummus + +Erbsen, Knoblauch, Petersilie, Zitronenschale, Zitronensaft, Tahini (**Sesam**), Salz, Kreuzkümmel (Cumin), Cayennepfeffer, Olivenöl + + + +Ofenkartoffeln + +https://entropia.de/GPN23:Ofenkartoffeln + +Pflanzenöl, Kartoffelspalten (vorgegart) + + + +Cashew-Streichkäse + +https://entropia.de/GPN23:Cashew-Streichkäse + +Cashewkerne (**Nüsse (Cashew)**), Wasser, Getrocknete Tomaten, Chiliflocken, Paprikapulver, Salz, Hefeflocken + + + +Kräuterquark + +https://entropia.de/GPN23:Kräuterquark + +Magerquark (**Milch**), Milch (**Milch**), Zwiebeln, gewürfelt, Kräuter gemischt (8-Kräuter) + + + +Erbsensuppe mit Räuchertofu + +https://entropia.de/GPN23:Erbsensuppe_mit_Räuchertofu + +Zwiebeln, gewürfelt, Suppengrün (**Sellerie**), Kartoffel, Gemüsebrühe (**⁉️ Verwendetes Produkt prüfen**), Salz, Pfeffer (schwarz), Senf (**Senf**), Erbsen, Räuchertofu (**Soja**), Zucker, Zwiebeln, Petersilie, Raucharoma + + + +Veganes Pizzabaguette Tomate-Käse + +https://entropia.de/GPN23:Veganes_Pizzabaguette_Tomate-Käse + +passierte Tomaten, Knoblauchpulver, Oregano, Basilikum, Tomate, veganer Reibekäse (**⁉️ Produkt prüfen**), veganer Mozarella (**⁉️Produkt prüfen**), Salz & Pfeffer, Aufbackbrötchen (**Gluten**) + + + +Schwarzwaldbutter + +https://entropia.de/GPN23:Schwarzwaldbutter + +Margarine (**⁉️ verwendetes Produkt prüfen**), Knoblauch, Kräuter gemischt (8-Kräuter), Salz, Pfeffer (schwarz), Fichtenspitzen + + + +Matelade Apfel + +https://entropia.de/GPN23:Matelade_Apfel + +Äpfel, Zitrone, Limetten, Club Mate, Matetee, Gelierzucker 1:1 + + + +Veganes Pizzabaguette Käse-Räuchertofu + +https://entropia.de/GPN23:Veganes_Pizzabaguette_Käse-Räuchertofu + +vegane Creme Fraiche (**⁉️Produkt prüfen**), Knoblauchpulver, Zwiebeln, rot, Räuchertofu (**Soja**), veganer Reibekäse (**⁉️ Produkt prüfen**), Salz & Pfeffer, Aufbackbrötchen (**Gluten**) + + + +Levervurst + +https://entropia.de/GPN23:Levervurst + +Zwiebeln, Knoblauch, Räuchertofu (**Soja**), Kidneybohnen, Senf (**Senf**), Paprikapulver, Petersilie, Majoran, Salz, Pfeffer (schwarz) + + + +Rotes Thai Spinat Süßkartoffel-Curry + +https://entropia.de/GPN23:Rotes_Thai__Spinat_Süßkartoffel-Curry + +Zwiebeln, rot, Süßkartoffeln, Rote Thai-Curry-Paste (**⁉️ Produkt prüfen**), Kokosmilch, Kokosöl, Gemüsebrühe (**⁉️ Verwendetes Produkt prüfen**), Spitzpaprika, rot, Spinat, Limettensaft, Erdnüsse, ungesalzen, geröstet (**Erdnuss**), Couscous (**Gluten**), Gemüsebrühe (**⁉️ Verwendetes Produkt prüfen**), Limettensaft + + + diff --git a/report_allergene.py b/report_allergene.py new file mode 100644 index 0000000..7590100 --- /dev/null +++ b/report_allergene.py @@ -0,0 +1,93 @@ +import json +import sys +from pathlib import Path +from datetime import timedelta +import re +import os +from tqdm import tqdm + +from config import * + + + + +def allergens_for_step_ingredients(step): + l = [] + for ingredient in step["ingredients"]: + if not ingredient.get("food"): + raise ValueError("No food in ingredient") + continue + i_name = ingredient["food"]["name"] + i_description = ingredient["food"]["description"] + + if match := re.search(r"^Allergene: (.*)$", i_description, re.MULTILINE): + i_allergens = match.group(1) + else: + i_allergens = "❗ keine Allergene hinterlegt" + + l.append((i_name, i_allergens)) + + return l + + +def allergens_for_recipe(recipe): + l = [] + for step in recipe["steps"]: + l += allergens_for_step_ingredients(step) + return l + + +def link(recipe): + return f"{TANDOOR_URL + "/view/recipe/" + str(recipe["id"])}" + +def wiki_link(recipe): + wiki_slug = recipe["name"] + wiki_slug = re.sub(" ", "_", wiki_slug) + return f"{WIKI_URL + WIKI_ARTICLE_PREFIX + wiki_slug}" + + +def decruft_ingredient(i_name: str): + i_name = i_name.replace(" (trocken)", "") + i_name = i_name.replace(" (frisch)", "") + i_name = i_name.replace(" (TK)", "") + i_name = i_name.replace(" (Dose)", "") + i_name = i_name.replace(" (getrocknet)", "") + return i_name + +def main(): + + Path("report_allergene_korrektur.csv").unlink(missing_ok=True) + Path("report_allergene.md").unlink(missing_ok=True) + + recipes = [] + for json_file in os.listdir(OUTDIR_JSON): + with open(os.path.join(OUTDIR_JSON, json_file), "r", encoding="utf-8") as f: + data = json.load(f) + recipes.append(data) + + for recipe in recipes: + with open("report_allergene_korrektur.csv", "a") as f: + f.write(recipe["name"] + "\n") + f.write(link(recipe) + "\n") + f.write(wiki_link(recipe) + "\n") + for i_name, i_allergens in allergens_for_recipe(recipe): + f.write(f"{i_name};{i_allergens}\n") + f.write("\n") + + for recipe in recipes: + with open("report_allergene.md", "a") as f: + f.write(recipe["name"] + "\n\n") + f.write(wiki_link(recipe) + "\n\n") + + zutaten = "" + for i_name, i_allergens in allergens_for_recipe(recipe): + if zutaten: + zutaten += ", " + zutaten += decruft_ingredient(i_name) + if i_allergens != "(keine)": + zutaten += f" (**{i_allergens}**)" + f.write(zutaten + "\n") + f.write("\n\n\n") + +if __name__ == "__main__": + main() diff --git a/report_allergene_korrektur.csv b/report_allergene_korrektur.csv new file mode 100644 index 0000000..6db59cc --- /dev/null +++ b/report_allergene_korrektur.csv @@ -0,0 +1,317 @@ +Mungobohnenhummus mit Jalapenos und Zatar +https://recipes.entropia.de/view/recipe/26 +https://entropia.de/GPN23:Mungobohnenhummus_mit_Jalapenos_und_Zatar +Mungobohnen (trocken);(keine) +Tahini;Sesam +Olivenöl;(keine) +Zitronensaft;(keine) +Knoblauch (frisch);(keine) +Kreuzkümmel (Cumin);(keine) +Jalapenoringe, eingelegt, fein gehackt;(keine) +Zatar;Sesam, mgw. Senf und Sellerie +Olivenöl;(keine) +Jalapenoringe, eingelegt, fein gehackt;(keine) + +Vegane Aioli +https://recipes.entropia.de/view/recipe/65 +https://entropia.de/GPN23:Vegane_Aioli +Sojamilch;Soja +Rapsöl;(keine) +Knoblauch (TK);(keine) +Senf, mittelscharf;Senf +Zitronensaft;(keine) + +Salsa +https://recipes.entropia.de/view/recipe/66 +https://entropia.de/GPN23:Salsa +Tomaten, gestückelt (Dose);(keine) +Paprika (frisch);(keine) +Zwiebeln (frisch);(keine) +Tomatenmark;(keine) +Kreuzkümmel (Cumin);(keine) +Koriandersamen (gemahlen);(keine) + +Veganes Pizzabaguette Ofengemüse +https://recipes.entropia.de/view/recipe/62 +https://entropia.de/GPN23:Veganes_Pizzabaguette_Ofengemüse +passierte Tomaten (Dose);(keine) +Oregano (getrocknet);(keine) +Basilikum (getrocknet);(keine) +Knoblauchpulver;(keine) +Paprika (frisch);(keine) +Zucchini;(keine) +Zwiebeln (frisch);(keine) +veganer Reibekäse;⁉️ Produkt prüfen +Salz & Pfeffer;(keine) +Aufbackbrötchen;Gluten + +Rauchige Schwarze Bohnencreme +https://recipes.entropia.de/view/recipe/25 +https://entropia.de/GPN23:Rauchige_Schwarze_Bohnencreme +Zwiebeln (frisch);(keine) +Knoblauch (frisch);(keine) +Pflanzenöl;(keine) +Schwarze Bohnen, gekocht;(keine) +Erdnussmus;Erdnuss +Rauchpaprika (Pimentón de la Vera);(keine) +Pfeffer (schwarz);(keine) +Majoran (getrocknet);(keine) +Salz;(keine) +Hefeflocken;(keine) +Tomatenmark;(keine) +Wasser;(keine) + +Gulaschmarmelade +https://recipes.entropia.de/view/recipe/59 +https://entropia.de/GPN23:Gulaschmarmelade +Paprika, rot oder gemischt;(keine) +Chilischoten;(keine) +Gelierzucker 3:1;(keine) +Branntweinessig;(keine) +Salz;(keine) + +Bagel +https://recipes.entropia.de/view/recipe/69 +https://entropia.de/GPN23:Bagel +Mehl;Gluten +Wasser;(keine) +Trockenhefe;(keine) +Mehl;Gluten +Trockenhefe;(keine) +Salz;(keine) +Malzsirup;Gluten +Wasser;(keine) +Wasser;(keine) +Malzsirup;Gluten + +Salatdressing GPN +https://recipes.entropia.de/view/recipe/40 +https://entropia.de/GPN23:Salatdressing_GPN +Olivenöl;(keine) +Balsamico-Essig;⁉️Produkt prüfen (Sulfite?) +Wasser;(keine) +Senf, mittelscharf;Senf +Erdbeermarmelade;(keine) +Salatkräuter (trocken);⁉️ Produkt prüfen + +Granatapfelcreme +https://recipes.entropia.de/view/recipe/28 +https://entropia.de/GPN23:Granatapfelcreme +Cashewkerne;Nüsse (Cashew) +Paniermehl;Gluten +Paprika (frisch);(keine) +Salz;(keine) +Pfeffer (schwarz);(keine) +Tomatenmark;(keine) +Paprikapulver;(keine) +Granatapfelsirup;(keine) +Knoblauch (frisch);(keine) +Harissa;(keine) + +Soja-Gulasch +https://recipes.entropia.de/view/recipe/3 +https://entropia.de/GPN23:Soja-Gulasch +Sojaschnetzel;Soja +Gemüsebrühe;⁉️ Verwendetes Produkt prüfen +Majoran (getrocknet);(keine) +Thymian;(keine) +Oregano (getrocknet);(keine) +Pfeffer (schwarz);(keine) +Paprika edelsüß;(keine) +Zucker;(keine) +Zwiebeln, gewürfelt (TK);(keine) +Tomatenmark;(keine) +Zucker;(keine) +Karotten, gewürfelt (TK);(keine) +Paprikastreifen, rot (TK);(keine) +Knoblauch (TK);(keine) +Tomaten, gestückelt (Dose);(keine) +passierte Tomaten (Dose);(keine) +Gemüsebrühe;⁉️ Verwendetes Produkt prüfen +Rotwein;Sulfite +Kartoffel (frisch);(keine) +Paprika edelsüß;(keine) +Paprika rosenscharf;(keine) +Pfeffer (schwarz);(keine) +Majoran (getrocknet);(keine) +Oregano (getrocknet);(keine) +Thymian;(keine) +Raucharoma;(keine) + +Kartoffelgulasch +https://recipes.entropia.de/view/recipe/4 +https://entropia.de/GPN23:Kartoffelgulasch +Zwiebeln, gewürfelt (TK);(keine) +Tomatenmark;(keine) +Zucker;(keine) +Karotten, gewürfelt (TK);(keine) +Paprikastreifen, rot (TK);(keine) +Knoblauch (TK);(keine) +Tomaten, gestückelt (Dose);(keine) +passierte Tomaten (Dose);(keine) +Gemüsebrühe;⁉️ Verwendetes Produkt prüfen +Rotwein;Sulfite +Kartoffel (frisch);(keine) +Paprika edelsüß;(keine) +Paprika rosenscharf;(keine) +Pfeffer (schwarz);(keine) +Majoran (getrocknet);(keine) +Oregano (getrocknet);(keine) +Thymian;(keine) +Raucharoma;(keine) + +Kattis Hummus +https://recipes.entropia.de/view/recipe/24 +https://entropia.de/GPN23:Kattis_Hummus +Kichererbsen (Dose);(keine) +Tahini;Sesam +Olivenöl;(keine) +Zitronensaft;(keine) +Knoblauch (frisch);(keine) +Kreuzkümmel (Cumin);(keine) +Salz;(keine) +Pfeffer (schwarz);(keine) +Petersilie, glatt (frisch);(keine) + +GPN-Tomatenbutter +https://recipes.entropia.de/view/recipe/56 +https://entropia.de/GPN23:GPN-Tomatenbutter +Margarine;⁉️ verwendetes Produkt prüfen +Knoblauch (frisch);(keine) +Getrocknete Tomaten;(keine) +Rosmarin (frisch);(keine) +Salz;(keine) +Pfeffer (schwarz);(keine) +Cayennepfeffer;(keine) + +Erbsenhummus +https://recipes.entropia.de/view/recipe/57 +https://entropia.de/GPN23:Erbsenhummus +Erbsen (TK);(keine) +Knoblauch (frisch);(keine) +Petersilie;(keine) +Zitronenschale;(keine) +Zitronensaft;(keine) +Tahini;Sesam +Salz;(keine) +Kreuzkümmel (Cumin);(keine) +Cayennepfeffer;(keine) +Olivenöl;(keine) + +Ofenkartoffeln +https://recipes.entropia.de/view/recipe/67 +https://entropia.de/GPN23:Ofenkartoffeln +Pflanzenöl;(keine) +Kartoffelspalten (vorgegart);(keine) + +Cashew-Streichkäse +https://recipes.entropia.de/view/recipe/27 +https://entropia.de/GPN23:Cashew-Streichkäse +Cashewkerne;Nüsse (Cashew) +Wasser;(keine) +Getrocknete Tomaten;(keine) +Chiliflocken;(keine) +Paprikapulver;(keine) +Salz;(keine) +Hefeflocken;(keine) + +Kräuterquark +https://recipes.entropia.de/view/recipe/64 +https://entropia.de/GPN23:Kräuterquark +Magerquark;Milch +Milch;Milch +Zwiebeln, gewürfelt (TK);(keine) +Kräuter gemischt (8-Kräuter);(keine) + +Erbsensuppe mit Räuchertofu +https://recipes.entropia.de/view/recipe/31 +https://entropia.de/GPN23:Erbsensuppe_mit_Räuchertofu +Zwiebeln, gewürfelt (TK);(keine) +Suppengrün (frisch);Sellerie +Kartoffel (frisch);(keine) +Gemüsebrühe;⁉️ Verwendetes Produkt prüfen +Salz;(keine) +Pfeffer (schwarz);(keine) +Senf;Senf +Erbsen (trocken);(keine) +Räuchertofu;Soja +Zucker;(keine) +Zwiebeln (frisch);(keine) +Petersilie (frisch);(keine) +Raucharoma;(keine) + +Veganes Pizzabaguette Tomate-Käse +https://recipes.entropia.de/view/recipe/54 +https://entropia.de/GPN23:Veganes_Pizzabaguette_Tomate-Käse +passierte Tomaten (Dose);(keine) +Knoblauchpulver;(keine) +Oregano (getrocknet);(keine) +Basilikum (getrocknet);(keine) +Tomate;(keine) +veganer Reibekäse;⁉️ Produkt prüfen +veganer Mozarella;⁉️Produkt prüfen +Salz & Pfeffer;(keine) +Aufbackbrötchen;Gluten + +Schwarzwaldbutter +https://recipes.entropia.de/view/recipe/60 +https://entropia.de/GPN23:Schwarzwaldbutter +Margarine;⁉️ verwendetes Produkt prüfen +Knoblauch;(keine) +Kräuter gemischt (8-Kräuter);(keine) +Salz;(keine) +Pfeffer (schwarz);(keine) +Fichtenspitzen;(keine) + +Matelade Apfel +https://recipes.entropia.de/view/recipe/29 +https://entropia.de/GPN23:Matelade_Apfel +Äpfel (frisch);(keine) +Zitrone;(keine) +Limetten;(keine) +Club Mate;(keine) +Matetee;(keine) +Gelierzucker 1:1;(keine) + +Veganes Pizzabaguette Käse-Räuchertofu +https://recipes.entropia.de/view/recipe/52 +https://entropia.de/GPN23:Veganes_Pizzabaguette_Käse-Räuchertofu +vegane Creme Fraiche;⁉️Produkt prüfen +Knoblauchpulver;(keine) +Zwiebeln, rot (frisch);(keine) +Räuchertofu;Soja +veganer Reibekäse;⁉️ Produkt prüfen +Salz & Pfeffer;(keine) +Aufbackbrötchen;Gluten + +Levervurst +https://recipes.entropia.de/view/recipe/7 +https://entropia.de/GPN23:Levervurst +Zwiebeln (frisch);(keine) +Knoblauch (frisch);(keine) +Räuchertofu;Soja +Kidneybohnen (Dose);(keine) +Senf;Senf +Paprikapulver;(keine) +Petersilie (getrocknet);(keine) +Majoran (getrocknet);(keine) +Salz;(keine) +Pfeffer (schwarz);(keine) + +Rotes Thai Spinat Süßkartoffel-Curry +https://recipes.entropia.de/view/recipe/37 +https://entropia.de/GPN23:Rotes_Thai__Spinat_Süßkartoffel-Curry +Zwiebeln, rot (frisch);(keine) +Süßkartoffeln (TK);(keine) +Rote Thai-Curry-Paste;⁉️ Produkt prüfen +Kokosmilch;(keine) +Kokosöl;(keine) +Gemüsebrühe;⁉️ Verwendetes Produkt prüfen +Spitzpaprika, rot;(keine) +Spinat (TK);(keine) +Limettensaft;(keine) +Erdnüsse, ungesalzen, geröstet;Erdnuss +Couscous;Gluten +Gemüsebrühe;⁉️ Verwendetes Produkt prüfen +Limettensaft;(keine) +