diff --git a/src/FileHandler.py b/src/FileHandler.py new file mode 100644 index 0000000..68e5e24 --- /dev/null +++ b/src/FileHandler.py @@ -0,0 +1,55 @@ +import os +import json + +from dotenv import load_dotenv + +load_dotenv() + +file_path = os.getenv("file_path") + +def read_json() -> dict: + try: + with open("./src/json/ingredients.json", "rt") as file: + return json.load(file) + except: + print("Could not find or read file.") + +def get_selected_meals(meals: dict) -> dict: + meal_json = read_json() + selected_meals = {} + for meal in meals: + if meal in meal_json: + selected_meals[meal] = meal_json[meal] + return selected_meals + +def combine_ingredients(meals: dict) -> dict: + combined_ingredients = {} + + for meal, ingredients in meals.items(): + for ingredient, detail in ingredients.items(): + if ingredient in combined_ingredients: + combined_ingredients[ingredient]['quantity'] += detail['quantity'] + else: + combined_ingredients[ingredient] = detail + return combined_ingredients + +def write_checklist(data: dict) -> None: + if os.path.exists(file_path): + os.remove(file_path) + + try: + with open(file_path, 'w') as checklist: + for ingredient, details in data.items(): + s = ingredient + " - " + str(details['quantity']) + if details['units'] != None: + s += " " + details['units'] + checklist.write(f"- [ ] {s}\n") + except Exception as e: + print(f"Unable to write data to file. {e}") + + +if __name__ == "__main__": + meals = read_json() + if meals: + combined_ingredients = combine_ingredients(meals) + write_checklist(combined_ingredients) \ No newline at end of file