Spaces:
Build error
Build error
File size: 1,455 Bytes
bc13b33 86b25b7 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | 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},
}
|