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()