def read_chowdown_file(recipe_file: Path) -> Recipe: with open(recipe_file, "r") as stream: recipe_description: str = str recipe_data: dict = {} try: for x, item in enumerate(yaml.load_all(stream, Loader=Loader)): print(item) if x == 0: recipe_data = item elif x == 1: recipe_description = str(item) except yaml.YAMLError as exc: print(exc) return reformat_data = { "name": recipe_data.get("title"), "description": recipe_description, "image": recipe_data.get("image", ""), "recipeIngredient": recipe_data.get("ingredients"), "recipeInstructions": recipe_data.get("directions"), "tags": recipe_data.get("tags").split(","), } new_recipe = Recipe(**reformat_data) reformated_list = [] for instruction in new_recipe.recipeInstructions: reformated_list.append({"text": instruction}) new_recipe.recipeInstructions = reformated_list return new_recipe
def read_chowdown_file(recipe_file: Path) -> Recipe: """Parse through the yaml file to try and pull out the relavent information. Some issues occur when ":" are used in the text. I have no put a lot of effort into this so there may be better ways of going about it. Currently, I get about 80-90% of recipes from repos I've tried. Args: recipe_file (Path): Path to the .yml file Returns: Recipe: Recipe class object """ with open(recipe_file, "r") as stream: recipe_description: str = str recipe_data: dict = {} try: for x, item in enumerate(yaml.load_all(stream, Loader=Loader)): print(item) if x == 0: recipe_data = item elif x == 1: recipe_description = str(item) except yaml.YAMLError as exc: print(exc) return reformat_data = { "name": recipe_data.get("title"), "description": recipe_description, "image": recipe_data.get("image", ""), "recipeIngredient": recipe_data.get("ingredients"), "recipeInstructions": recipe_data.get("directions"), "tags": recipe_data.get("tags").split(","), } new_recipe = Recipe(**reformat_data) reformated_list = [] for instruction in new_recipe.recipeInstructions: reformated_list.append({"text": instruction}) new_recipe.recipeInstructions = reformated_list return new_recipe