Functionality to read and write JSON files

This commit is contained in:
Nicholas
2025-11-21 12:41:56 -05:00
parent 120ba14e6a
commit 65150568ae

55
src/FileHandler.py Normal file
View File

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