Files
pipecat/examples/word-wrangler-gemini-live/server/word_list.py
2025-04-24 14:31:48 -04:00

670 lines
13 KiB
Python

import random
# Define categories and words for the Word Wrangler game
WORD_CATEGORIES = {
"animals": [
"elephant",
"penguin",
"giraffe",
"dolphin",
"kangaroo",
"octopus",
"panda",
"tiger",
"koala",
"flamingo",
"hedgehog",
"turtle",
"zebra",
"eagle",
"sloth",
"raccoon",
"chameleon",
"squirrel",
"hamster",
"cheetah",
"platypus",
"jellyfish",
"parrot",
"wolf",
"hippo",
"porcupine",
"ostrich",
"peacock",
"alligator",
"gorilla",
"armadillo",
"chipmunk",
"walrus",
"weasel",
"skunk",
"llama",
"badger",
"mongoose",
"lemur",
"otter",
"bison",
"falcon",
"meerkat",
"pelican",
"cobra",
"salamander",
"lobster",
"seal",
"narwhal",
"iguana",
"piranha",
"toucan",
"moose",
"lynx",
"stingray",
"starfish",
"beaver",
"vulture",
"antelope",
"jaguar",
"seahorse",
],
"food": [
"pizza",
"sushi",
"burrito",
"pancake",
"donut",
"lasagna",
"popcorn",
"chocolate",
"mango",
"pretzel",
"taco",
"waffle",
"cupcake",
"avocado",
"cookie",
"croissant",
"omelette",
"cheesecake",
"dumpling",
"hummus",
"gelato",
"risotto",
"ramen",
"salsa",
"kebab",
"brownie",
"guacamole",
"bagel",
"falafel",
"biscuit",
"churro",
"meatball",
"tiramisu",
"enchilada",
"couscous",
"gumbo",
"jambalaya",
"baklava",
"popsicle",
"cannoli",
"tofu",
"macaron",
"empanada",
"pho",
"casserole",
"porridge",
"granola",
"fritter",
"hazelnut",
"kiwi",
"pomegranate",
"artichoke",
"edamame",
"zucchini",
"cashew",
"brisket",
"custard",
"nutmeg",
"ginger",
],
"household": [
"chair",
"pillow",
"mirror",
"blanket",
"lamp",
"curtain",
"sofa",
"refrigerator",
"blender",
"bookshelf",
"dishwasher",
"carpet",
"microwave",
"table",
"clock",
"vase",
"ottoman",
"candle",
"drawer",
"cabinet",
"doorknob",
"silverware",
"bathtub",
"plunger",
"toaster",
"kettle",
"spatula",
"doormat",
"hanger",
"blinds",
"ladle",
"platter",
"coaster",
"napkin",
"sponge",
"thermostat",
"showerhead",
"coatrack",
"nightstand",
"cushion",
"windowsill",
"bedsheet",
"countertop",
"dustpan",
"footstool",
"flowerpot",
"trashcan",
"colander",
"detergent",
"chandelier",
"laundry",
"vacuum",
"teapot",
"duster",
"lightbulb",
"corkscrew",
"paperweight",
"doorstop",
"radiator",
],
"activities": [
"swimming",
"painting",
"dancing",
"gardening",
"skiing",
"cooking",
"hiking",
"reading",
"yoga",
"fishing",
"jogging",
"biking",
"baking",
"singing",
"camping",
"knitting",
"surfing",
"photography",
"bowling",
"archery",
"horseback",
"meditation",
"gymnastics",
"volleyball",
"tennis",
"skating",
"kayaking",
"climbing",
"juggling",
"rowing",
"snorkeling",
"embroidery",
"canoeing",
"paddleboarding",
"pottery",
"birdwatching",
"karaoke",
"sailing",
"pilates",
"calligraphy",
"skateboarding",
"crossword",
"origami",
"beekeeping",
"stargazing",
"snowboarding",
"woodworking",
"fencing",
"quilting",
"foraging",
"geocaching",
"scrapbooking",
"welding",
"glassblowing",
"whittling",
"ziplining",
],
"places": [
"beach",
"library",
"mountain",
"airport",
"stadium",
"museum",
"hospital",
"castle",
"garden",
"hotel",
"island",
"desert",
"university",
"restaurant",
"forest",
"aquarium",
"theater",
"canyon",
"lighthouse",
"waterfall",
"vineyard",
"cathedral",
"rainforest",
"farmhouse",
"greenhouse",
"observatory",
"marketplace",
"boardwalk",
"temple",
"courtyard",
"plantation",
"lagoon",
"volcano",
"meadow",
"oasis",
"grotto",
"peninsula",
"aviary",
"chapel",
"coliseum",
"bazaar",
"marina",
"orchard",
"brewery",
"sanctuary",
"fortress",
"prairie",
"reservation",
"tavern",
"monument",
"manor",
"pavilion",
"boulevard",
"campground",
],
"objects": [
"umbrella",
"scissors",
"camera",
"wallet",
"bicycle",
"backpack",
"telescope",
"balloon",
"compass",
"notebook",
"keyboard",
"magnet",
"headphones",
"hammer",
"envelope",
"binoculars",
"tambourine",
"boomerang",
"megaphone",
"suitcase",
"pinwheel",
"kaleidoscope",
"microscope",
"hourglass",
"harmonica",
"trampoline",
"bubblegum",
"xylophone",
"typewriter",
"screwdriver",
"whistle",
"chessboard",
"handcuffs",
"stethoscope",
"stopwatch",
"parachute",
"blowtorch",
"calculator",
"thermometer",
"mousetrap",
"crowbar",
"paintbrush",
"metronome",
"surfboard",
"flipchart",
"dartboard",
"wrench",
"flippers",
"thimble",
"protractor",
"snorkel",
"doorbell",
"flashlight",
"pendulum",
"abacus",
],
"jobs": [
"teacher",
"doctor",
"chef",
"firefighter",
"pilot",
"astronaut",
"carpenter",
"musician",
"detective",
"scientist",
"farmer",
"architect",
"journalist",
"electrician",
"dentist",
"veterinarian",
"librarian",
"photographer",
"mechanic",
"attorney",
"barista",
"plumber",
"bartender",
"surgeon",
"therapist",
"animator",
"programmer",
"pharmacist",
"translator",
"accountant",
"florist",
"butcher",
"lifeguard",
"beekeeper",
"locksmith",
"choreographer",
"mortician",
"paramedic",
"blacksmith",
"surveyor",
"botanist",
"chiropractor",
"undertaker",
"acrobat",
"welder",
"hypnotist",
"zoologist",
"mime",
"sommelier",
"meteorologist",
"stuntman",
"diplomat",
"entomologist",
"puppeteer",
"archivist",
"cartographer",
"paleontologist",
],
"transportation": [
"helicopter",
"submarine",
"scooter",
"sailboat",
"train",
"motorcycle",
"airplane",
"canoe",
"tractor",
"limousine",
"escalator",
"skateboard",
"ambulance",
"ferry",
"rocket",
"hovercraft",
"gondola",
"segway",
"zeppelin",
"bulldozer",
"speedboat",
"unicycle",
"monorail",
"snowmobile",
"paddleboat",
"trolley",
"rickshaw",
"caboose",
"glider",
"bobsled",
"jetpack",
"forklift",
"dirigible",
"chariot",
"sidecar",
"tandem",
"battleship",
"catamaran",
"toboggan",
"dinghy",
"hydrofoil",
"sleigh",
"hatchback",
"kayak",
"stagecoach",
"tugboat",
"airship",
"skiff",
"carriage",
"rowboat",
"chairlift",
"steamroller",
],
"clothing": [
"sweater",
"sandals",
"tuxedo",
"poncho",
"sneakers",
"bikini",
"cardigan",
"overalls",
"kimono",
"mittens",
"suspenders",
"kilt",
"leggings",
"apron",
"bowtie",
"earmuffs",
"fedora",
"wetsuit",
"pajamas",
"sombrero",
"raincoat",
"beret",
"turtleneck",
"parka",
"tiara",
"toga",
"bandana",
"corset",
"sarong",
"tunic",
"visor",
"ascot",
"fez",
"moccasins",
"blazer",
"chaps",
"romper",
"waders",
"clogs",
"garter",
"camisole",
"galoshes",
"bolero",
"spats",
"pantyhose",
"onesie",
"stiletto",
"vest",
"windbreaker",
"scarf",
"bonnet",
],
"nature": [
"glacier",
"sequoia",
"geyser",
"avalanche",
"tornado",
"quicksand",
"stalactite",
"hurricane",
"asteroid",
"tundra",
"galaxy",
"nebula",
"earthquake",
"stalagmite",
"constellation",
"crystal",
"tributary",
"abyss",
"monsoon",
"magma",
"erosion",
"iceberg",
"mudslide",
"delta",
"aurora",
"gravity",
"humidity",
"sinkhole",
"wildfire",
"tropics",
"tsunami",
"eclipse",
"metabolism",
"mirage",
"hemisphere",
"spectrum",
"fossil",
"plateau",
"groundwater",
"undergrowth",
"oxygen",
"molecule",
"pollination",
"algae",
"carbon",
"nitrogen",
"organism",
"nucleus",
"equator",
"solstice",
"cocoon",
"germination",
"metamorphosis",
"nocturnal",
"symbiosis",
"ecosystem",
"biodiversity",
],
"emotions": [
"happiness",
"sadness",
"anxiety",
"surprise",
"anger",
"curiosity",
"embarrassment",
"nostalgia",
"envy",
"gratitude",
"remorse",
"boredom",
"excitement",
"loneliness",
"pride",
"jealousy",
"contentment",
"disgust",
"empathy",
"euphoria",
"melancholy",
"frustration",
"anticipation",
"amusement",
"serenity",
"disappointment",
"confidence",
"resentment",
"apathy",
"optimism",
"pessimism",
"bewilderment",
"exhilaration",
"indifference",
"enthusiasm",
"desperation",
"satisfaction",
"regret",
"determination",
"compassion",
"hopelessness",
"relief",
"infatuation",
"tranquility",
"impatience",
"exasperation",
"agitation",
"yearning",
"sympathy",
"admiration",
"astonishment",
"inspiration",
"dread",
"hope",
],
}
def generate_game_words(num_words=20):
"""Generate a random selection of words for the Word Wrangler game.
1. Create a flat list of all words
2. Remove any duplicates
3. Randomly select the requested number of words
Args:
num_words: Number of words to select for the game
Returns:
List of randomly selected words
"""
# Create a flat list of all words from all categories
all_words = []
for category_words in WORD_CATEGORIES.values():
all_words.extend(category_words)
# Remove duplicates by converting to a set and back to a list
all_words = list(set(all_words))
# Randomly select words
selected_words = random.sample(all_words, min(num_words, len(all_words)))
return selected_words