import json import re import os from config import * def normalize_ingredients(recipe): if "recipeIngredient" in recipe: recipe["recipeIngredient"] = [ ingredient.replace("g / Gramm", "g") for ingredient in recipe["recipeIngredient"] ] recipe["recipeIngredient"] = [ ingredient.replace("kg / Kilogramm", "kg") for ingredient in recipe["recipeIngredient"] ] recipe["recipeIngredient"] = [ ingredient.replace(".0 ", " ") for ingredient in recipe["recipeIngredient"] ] recipe["recipeIngredient"] = [ re.sub("^0 (g|kg|Milliliter|None) ", "", ingredient) for ingredient in recipe["recipeIngredient"] ] recipe["recipeIngredient"] = [ ingredient for ingredient in recipe["recipeIngredient"] if ingredient != "None" ] return recipe def normalize_instructions(recipe): if "recipeInstructions" in recipe: recipe["recipeInstructions"] = [ instruction for instruction in recipe["recipeInstructions"] if instruction.get("text") ] if not recipe["recipeInstructions"]: del recipe["recipeInstructions"] return recipe def normalize_recipe(recipe): cleaned_recipe = recipe cleaned_recipe = normalize_ingredients(cleaned_recipe) cleaned_recipe = normalize_instructions(cleaned_recipe) return cleaned_recipe # TODO: functions oben sind so nicht mehr funktional def check_recipe(recipe) -> list: md = [] if "steps" in recipe: steps = recipe["steps"] else: steps = [] md.append("No steps?") for i, step in enumerate(steps, 1): md += check_ingredients(step) return md def normalize_amount(a): if a == round(a): return round(a) else: return a def check_ingredients(step): md = [] for ingredient in step["ingredients"]: i_amount = ingredient["amount"] i_amount = normalize_amount(i_amount) if not ingredient.get("unit"): i_unit = "" if i_amount: md.append("- Amount but no unit?") else: i_unit = ingredient["unit"]["name"] if i_unit and i_unit not in VALID_UNITS: md.append(f"- Invalid unit {i_unit}") if not ingredient.get("food"): md.append("- No food element in ingredient?") continue return md def make_link(recipe): return f"[{recipe["name"]}]({TANDOOR_URL + "/view/recipe/" + str(recipe["id"])})" def main(): 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: md = check_recipe(recipe) if not md: print(f"## 💚 {make_link(recipe)}") else: print(f"## 💔 {make_link(recipe)}") for line in md: print(line) if __name__ == "__main__": main()