from anytree import Node, RenderTree from anytree.exporter import JsonExporter def print_ingredients(): for i, node in ingredients.items(): print(f" {i}.) {node.result}") ingredients = {} i = 0 node = "start" while node: print_ingredients() node = input("Add node: ") if node: needs = input("List needs (comma-separated): ") description = input("Detailed description: ") if needs: result = input("Result of node (e.g. chopped carrots): ") new_node = Node(node, description=description, result=result) for e in [int(key.strip()) for key in needs.split(",")]: ingredients.pop(e).parent = new_node else: new_node = Node(node, description=description, result=node) ingredients[i] = new_node i += 1 for pre, _, node in RenderTree(new_node): print(f"{pre}{node.name}") name = input("Recipe name: ") if name: name = name.replace(" ", "_") with open(f"{name}.json", 'w') as f: JsonExporter(indent=2).write(new_node, f)