import random def randomly_select_from_json(world_data): world_name = world_data["name"] world_description = world_data["description"] valid_kingdoms = { k_name: k_data for k_name, k_data in world_data["kingdoms"].items() if any("npcs" in town_data and town_data["npcs"] for town_data in k_data["towns"].values()) } if not valid_kingdoms: raise ValueError("No kingdoms with valid towns and NPCs found.") kingdom_name, kingdom_data = random.choice(list(valid_kingdoms.items())) kingdom_description = kingdom_data["description"] valid_towns = { t_name: t_data for t_name, t_data in kingdom_data["towns"].items() if "npcs" in t_data and t_data["npcs"] } if not valid_towns: raise ValueError(f"No towns with NPCs found in kingdom: {kingdom_name}") town_name, town_data = random.choice(list(valid_towns.items())) town_description = town_data["description"] npcs = town_data["npcs"] character_name, character_data = random.choice(list(npcs.items())) character_description = character_data["description"] return { "world": {"name": world_name, "description": world_description}, "kingdom": {"name": kingdom_name, "description": kingdom_description}, "town": {"name": town_name, "description": town_description}, "character": {"name": character_name, "description": character_description}, }