📜 简介

这是一个使用 Python 编写的脚本,旨在生成独特、具有美感的、适合女性使用的英文昵称,尤其适用于 Telegram 等社交平台。它利用了精心挑选的、庞大的词汇库(形容词、名词、名字、Emoji),通过多种模式组合,创造出丰富多样的结果。

脚本的核心优势在于其可配置性低重复率。您可以轻松调整 Emoji 的出现概率、位置、数量,以及昵称的组合方式,并能生成大量几乎不重复的昵称列表,最终保存到文本文件中,方便您挑选和使用。

✨ 主要功能

  • 庞大且多样化的词库: 包含大量精选的形容词、女性化名词、可爱英文名以及风格匹配的 Emoji。
  • 低重复率: 利用 Python set 结构的特性,确保最终输出的昵称列表是独一无二的,即使生成成千上万个也能有效去重。
  • 可配置的 Emoji 集成:
    • 出现概率: 可自由设定昵称中包含 Emoji 的大致百分比(默认为 50% 左右)。
    • 出现位置: Emoji 可以随机出现在昵称的开头或末尾。
    • 出现数量: 可精确控制每次添加 Emoji 的数量(默认为 1 到 2 个)。
  • 多样的昵称结构: 随机组合词汇,如 形容词+名词, 形容词+名字, 名字+名词, 单独名字, 单独名词 等模式。
  • 灵活的格式: 单词间连接方式多样,包括空格、无空格(驼峰命名法),以及小概率使用 _, - 等符号。
  • 可选的独特性增强: 有极小概率在昵称末尾添加数字后缀,进一步降低重复的可能性。
  • 文件输出: 将所有生成的唯一昵称保存到一个 .txt 文件中,方便查阅和复制。
  • 进度提示: 在生成大量昵称时,会显示进度信息,包括已生成数量和当前的 Emoji 占比。

🐍 环境要求与依赖

  • 环境: Python 3.x (脚本在 Python 3.6 及以上版本测试通过)。
  • 依赖: 此脚本仅使用了 Python 的标准库 (random, time, string)。
    • 无需额外安装: 您不需要使用 pip 或其他包管理器来安装任何第三方库。只要您的 Python 环境是正常的,就可以直接运行。

🚀 如何使用

  1. 保存代码: 将下面的 完整代码 复制并保存为一个 .py 文件(例如:nickname_generator.py)。
  2. 打开终端: 打开您的命令行终端(Windows 下的 Command Prompt 或 PowerShell,macOS/Linux 下的 Terminal)。
  3. 切换目录: 使用 cd 命令切换到您保存 nickname_generator.py 文件的目录。
    cd /path/to/your/script/directory
    
    (请将 /path/to/your/script/directory 替换为实际路径)
  4. 运行脚本: 使用 Python 解释器执行脚本。
    python nickname_generator.py
    
  5. 输入数量: 脚本会提示您输入想要生成的 唯一 昵称数量。输入一个正整数(例如 500010000),然后按 Enter 键。
  6. 等待生成: 脚本将开始生成昵称,并根据设置的报告间隔显示进度。生成大量昵称可能需要一些时间,请耐心等待。
  7. 查看结果: 脚本执行完毕后,会在当前目录下生成一个文本文件(默认名为 generated_nicknames_final.txt),其中包含了所有不重复的昵称,每行一个。

⚙️ 参数配置指南

您可以非常方便地通过直接修改脚本 (.py 文件) 内的参数来定制生成器的行为。以下是关键的可配置项(请在下面的完整代码中找到对应位置进行修改):


1. Emoji 出现概率

  • 参数说明: 控制生成的昵称中,大约有多大比例(0.0 到 1.0 之间)会包含 Emoji。例如,0.5 表示约 50% 的昵称带 Emoji。
  • 修改位置: 在脚本主执行部分 (if __name__ == "__main__": 块内) 的 while 循环中,找到调用 generate_single_nickname 函数的那一行。修改 emoji_probability 的值。

2. Emoji 数量

  • 参数说明: 当一个昵称确定要添加 Emoji 时,具体添加多少个 Emoji。
  • 修改位置: 在 generate_single_nickname 函数内部,找到确定 Emoji 数量 (num_emojis = random.randint(1, 2)) 的那一行。

3. Emoji 位置

  • 参数说明: 控制 Emoji 是出现在昵称的开头(前缀)还是末尾(后缀)。
  • 修改位置: 在 generate_single_nickname 函数内部,选择并组合好 Emoji (emoji_str) 之后,决定最终昵称 (final_nickname) 结构的 if random.random() < 0.5: 语句块。修改 0.5 这个概率值。

4. 输出文件名

  • 参数说明: 指定保存生成的昵称列表的文本文件的名称。
  • 修改位置: 在脚本主执行部分 (if __name__ == "__main__": 块内) 靠近开头的位置,修改 output_filename 变量的值。

5. 单词连接符风格与概率

  • 参数说明: 控制昵称中单词(如形容词和名词)之间的连接方式(空格、无空格/驼峰式、或 _, - 等符号)及其出现概率。
  • 修改位置: 在 generate_single_nickname 函数内部,确定 separator 变量值的那一行(使用了 random.choices),修改 weights 列表中的概率分布。

6. 数字后缀概率

  • 参数说明: 控制在昵称末尾添加随机数字(1-99)以增加独特性的概率(默认为 2%)。
  • 修改位置: 在 generate_single_nickname 函数的末尾,if random.random() < 0.02: 这一行,修改 0.02 这个概率值。

✏️ 自定义词库

昵称生成的核心素材来源于脚本顶部定义的几个 Python 列表:

  • adjectives (形容词列表)
  • nouns_female (女性化名词列表)
  • names_short_cute (可爱英文名列表)
  • emojis_cute_sparkly (Emoji 列表)

您可以非常自由地修改这些列表:

  • 添加: 在方括号 [...] 内,按照格式(英文引号包裹,逗号分隔)添加新的词语或 Emoji 字符串。
  • 删除: 直接删除列表中您不喜欢的任何条目。
  • 注意事项: 确保每个添加的条目都用英文引号 "" 包裹,并且条目之间用英文逗号 , 分隔(列表最后一个条目后面可以省略逗号)。

重要提示: 修改完代码后,请务必保存 .py 文件,然后重新运行脚本才能使更改生效。

📄 输出结果

脚本成功运行后,会在其所在的目录下生成一个纯文本文件(默认是 generated_nicknames_final.txt)。文件内容是所有生成的、独一无二的昵称,每行一个,可以直接复制使用。

输出文件内容示例:

SparklingRose✨
🌙MoonbeamDreamer
SweetLilyPetal
GentleWhisper_7
FloraBloom
🌸CrystalDove
SunnySkye
... 以及成百上千更多 ...

📄 许可

您可以自由使用、修改和分发此脚本。如果方便,署名表示感谢,但非强制要求。


💻 完整代码

import random
import time
import string # 虽然string库在这里没直接用于复杂组合,但它是标准库

# --- !! 大幅扩展后的数据列表 !! ---

# 形容词
adjectives = list(set([
    "Sweet", "Lovely", "Sparkling", "Glittery", "Dreamy", "Sunny", "Happy",
    "Gentle", "Kind", "Bright", "Radiant", "Shining", "Blossom", "Cotton",
    "Silken", "Velvet", "Honey", "Golden", "Silver", "Crystal", "Cosmic",
    "Mystic", "Little", "Tiny", "Angel", "Fairy", "Rosy", "Peachy", "Azure",
    "Crimson", "Emerald", "Lavender", "Lilac", "Minty", "Pastel", "Plush",
    "Serene", "Starlight", "Sugar", "Twilight", "Whispering", "Zephyr",
    "Celestial", "Ethereal", "Glimmering", "Iridescent", "Luminous", "Melodic",
    "Opalescent", "Petite", "Pristine", "Sapphire", "Velvety", "Amber", "Aqua",
    "Arctic", "Autumn", "Balmy", "Beaming", "Beloved", "Blessed", "Blissful",
    "Blooming", "Blue", "Bonny", "Bouncy", "Breezy", "Candy", "Carefree",
    "Charming", "Cherished", "Cherry", "Chic", "Cinnamon", "Cloudy", "Coastal",
    "Coral", "Cozy", "Creamy", "Crisp", "Crystalline", "Cuddly", "Dainty",
    "Dancing", "Daring", "Darling", "Dazzling", "Dear", "Deep", "Delicate",
    "Delightful", "Dewy", "Diamond", "Divine", "Dove", "Ebony", "Echoing",
    "Ecstatic", "Electric", "Elegant", "Elfin", "Enchanted", "Endearing",
    "Eternal", "Exotic", "Exquisite", "Fabled", "Faint", "Fancy", "Fantastic",
    "Feathered", "Feathery", "Festive", "Fiery", "Flawless", "Fleecy", "Floating",
    "Floral", "Fluffy", "Fluttering", "Foamy", "Forest", "Fragrant", "Fresh",
    "Friendly", "Frilly", "Frosty", "Frozen", "Fuzzy", "Gala", "Garnet", "Gentle",
    "Gilded", "Ginger", "Glacial", "Glamorous", "Gleaming", "Glistening", "Glossy",
    "Glowing", "Gold", "Graceful", "Gracious", "Grand", "Grape", "Grass", "Green",
    "Groovy", "Halcyon", "Harmonious", "Heavenly", "Honest", "Hopeful", "Humble",
    "Hushed", "Icy", "Ideal", "Idyllic", "Illustrious", "Immaculate", "Incandescent",
    "Indigo", "Infinite", "Innocent", "Inspiring", "Ivory", "Jade", "Jaunty",
    "Jazzy", "Jolly", "Joyful", "Joyous", "Jubilant", "Juicy", "Keen", "Kindly",
    "Lacy", "Lagoon", "Lake", "Laughing", "Laurel", "Lemon", "Light", "Lime",
    "Limpid", "Lively", "Loyal", "Lucky", "Luscious", "Lush", "Lustrous", "Magic",
    "Magnetic", "Magnificent", "Majestic", "Maple", "Marble", "Marine", "Marvelous",
    "Mauve", "Meadow", "Mellow", "Melting", "Merry", "Metallic", "Midnight",
    "Milky", "Mirrored", "Misty", "Modest", "Moonbeam", "Moonlit", "Morning",
    "Mossy", "Mountain", "Musical", "Muted", "Mythic", "Naive", "Natural", "Neat",
    "Nectar", "Nice", "Nimble", "Noble", "Nocturnal", "Northern", "Nostalgic",
    "Nouveau", "Oaken", "Oceanic", "Olive", "Onyx", "Opal", "Orange", "Orchid",
    "Organic", "Ornamental", "Pacific", "Painted", "Paradise", "Patient", "Peaceful",
    "Pearly", "Peppermint", "Perfect", "Perky", "Persistent", "Pink", "Pious",
    "Placid", "Platinum", "Playful", "Pleasant", "Plucky", "Plump", "Polished",
    "Poppy", "Positive", "Precious", "Pretty", "Primal", "Princely", "Prosperous",
    "Proud", "Pure", "Purple", "Quaint", "Queenly", "Quick", "Quiet", "Quirky",
    "Rainbow", "Rapid", "Rare", "Raspberry", "Regal", "Relaxed", "Resonant",
    "Resplendent", "Rich", "Rippling", "Ritzy", "River", "Robin", "Rolling",
    "Romantic", "Rose", "Royal", "Ruby", "Rustic", "Sacred", "Saffron", "Sage",
    "Sandy", "Sanguine", "Sapphire", "Sassy", "Satin", "Savvy", "Scarlet", "Scented",
    "Seafoam", "Secret", "Sensitive", "Sequined", "Shadowy", "Shimmering", "Shiny",
    "Silent", "Silky", "Simple", "Singing", "Sky", "Sleek", "Sleepy", "Slender",
    "Slight", "Smiling", "Smooth", "Snappy", "Snowy", "Snug", "Soaring", "Sociable",
    "Soft", "Solar", "Solemn", "Solitary", "Soothing", "Sophisticated", "Sorbet",
    "Soulful", "Southern", "Spicy", "Spirited", "Splendid", "Sprightly", "Spring",
    "Spun", "Starry", "Steadfast", "Steady", "Still", "Strawberry", "Striped",
    "Strong", "Stylish", "Suave", "Sublime", "Subtle", "Sugarplum", "Summer",
    "Sunlit", "Supreme", "Surreal", "Swanky", "Swift", "Sylvan", "Sympathetic",
    "Taffy", "Talkative", "Tall", "Tame", "Tan", "Tangerine", "Tasteful", "Tasty",
    "Tender", "Thankful", "Thistle", "Thoughtful", "Thrilling", "Tidal", "Timber",
    "Timeless", "Topaz", "Tranquil", "Treasured", "Tropical", "True", "Trusting",
    "Trusty", "Turquoise", "Ultraviolet", "Uncommon", "Unique", "Untamed", "Unusual",
    "Upbeat", "Urban", "Valiant", "Vanilla", "Vast", "Verdant", "Vibrant", "Victorious",
    "Vigilant", "Violet", "Virtuous", "Vital", "Vivacious", "Vivid", "Warm", "Wavy",
    "Wee", "Western", "Whimsical", "Whirling", "White", "Whole", "Wild", "Willing",
    "Willow", "Windy", "Winged", "Winning", "Winter", "Wiry", "Wise", "Wistful",
    "Witty", "Wonderful", "Wondrous", "Wooden", "Woolly", "Worldly", "Worthy",
    "Woven", "Yellow", "Young", "Youthful", "Yummy", "Zany", "Zesty", "Zingy"
]))

# 名词 (女性化)
nouns_female = list(set([
    "Rose", "Lily", "Daisy", "Petal", "Blossom", "Flora", "Star", "Moon",
    "Sunbeam", "Cloud", "Sky", "Ocean", "Pearl", "Gem", "Jewel", "Melody",
    "Harmony", "Serenity", "Dream", "Glow", "Sparkle", "Angel", "Fae", "Pixie",
    "Sprite", "Muse", "Echo", "Whisper", "Kitten", "Bunny", "Dove", "Swan",
    "Butterfly", "Cupcake", "Cookie", "Berry", "Peach", "Aurora", "Belle",
    "Bloom", "Bubble", "Charm", "Dewdrop", "Feather", "Flame", "Frost",
    "Gardenia", "Glimmer", "Grace", "Haven", "Hazel", "Heart", "Ivy", "Lace",
    "Lagoon", "Lark", "Light", "Lotus", "Lullaby", "Maple", "Meadow", "Mist",
    "Nectar", "Orchid", "Pebble", "Poem", "Poppy", "Rain", "Ribbon", "Rune",
    "Secret", "Shadow", "Silk", "Snowflake", "Songbird", "Sorbet", "Spirit",
    "Spring", "Stream", "Summer", "Thistle", "Tulip", "Willow", "Wisp", "Wonder",
    "Acorn", "Albatross", "Alchemy", "Alley", "Almond", "Amber", "Amethyst",
    "Amulet", "Anchor", "Anthem", "Apple", "Apricot", "Aqua", "Arcade", "Arch",
    "Aroma", "Arrow", "Art", "Ash", "Aster", "Atlas", "Auburn", "Autumn", "Avenue",
    "Ballad", "Ballet", "Bamboo", "Banner", "Bangle", "Bay", "Beach", "Beacon",
    "Bead", "Beam", "Beauty", "Bee", "Bell", "Beret", "Birch", "Bird", "Bliss",
    "Bluebell", "Blush", "Bonbon", "Bonsai", "Book", "Bouquet", "Bow", "Bracelet",
    "Branch", "Breeze", "Briar", "Bridge", "Brook", "Brooch", "Bubblegum", "Bud",
    "Buttercup", "Cabana", "Cactus", "Cadence", "Calla", "Cameo", "Camellia",
    "Canary", "Candle", "Candy", "Cane", "Canvas", "Canyon", "Cape", "Caramel",
    "Carnation", "Carousel", "Cascade", "Cashmere", "Castle", "Catalina", "Catkin",
    "Cauldron", "Cave", "Cedar", "Celeste", "Chalice", "Chant", "Chapel", "Charisma",
    "Cherry", "Chime", "Chocolate", "Chorus", "Chrysalis", "Cider", "Cinnamon",
    "Citrine", "Citrus", "Clarity", "Clay", "Clef", "Cliff", "Clock", "Clover",
    "Coast", "Cobalt", "Cobweb", "Cocoa", "Cocoon", "Coffee", "Coin", "Colibri",
    "Comet", "Compass", "Conch", "Confetti", "Coral", "Cosmos", "Cottage", "Cove",
    "Creek", "Crescent", "Crest", "Cricket", "Crown", "Cruise", "Crypt", "Cub",
    "Curio", "Curl", "Current", "Cyan", "Cypress", "Daffodil", "Dahlia", "Dawn",
    "Daydream", "Delta", "Desert", "Destiny", "Diamond", "Diary", "Dimple", "Ditty",
    "Dolphin", "Domino", "Dragonfly", "Droplet", "Drum", "Dune", "Dusk", "Dust",
    "Eagle", "Earth", "Ebony", "Eclipse", "Elegance", "Elixir", "Elm", "Ember",
    "Emerald", "Enigma", "Epiphany", "Era", "Essence", "Estate", "Estuary", "Eternity",
    "Evening", "Fable", "Fairy", "Falcon", "Fantasy", "Fawn", "Fern", "Festival",
    "Fiddle", "Field", "Fig", "Filigree", "Finch", "Firefly", "Fir", "Flax", "Fleur",
    "Flint", "Flock", "Flute", "Fog", "Folio", "Folly", "Font", "Forest", "Fortune",
    "Fossil", "Fountain", "Fox", "Foxglove", "Fragment", "Frankincense", "Fresco",
    "Frill", "Fringe", "Fuchsia", "Fur", "Gala", "Galaxy", "Gale", "Gallop", "Garden",
    "Garland", "Garnet", "Gazebo", "Geode", "Geranium", "Geyser", "Ghost", "Gift",
    "Ginger", "Glacier", "Glade", "Glass", "Glee", "Glen", "Globe", "Gnome", "Gold",
    "Goldfinch", "Gossamer", "Grail", "Grain", "Granite", "Grape", "Grass", "Gratitude",
    "Gravity", "Gremlin", "Griffin", "Grove", "Guitar", "Gulf", "Gull", "Gumdrop",
    "Gypsy", "Hail", "Halo", "Hamlet", "Hammock", "Harbor", "Harp", "Harvest", "Haze",
    "Heather", "Hedge", "Heirloom", "Helix", "Hemlock", "Herb", "Heron", "Hideaway",
    "Highland", "Hill", "Hint", "Holly", "Home", "Honesty", "Honeycomb", "Honeysuckle",
    "Hope", "Horizon", "Horn", "Hourglass", "Hummingbird", "Hurricane", "Hush",
    "Hyacinth", "Hydrangea", "Hymn", "Ice", "Icon", "Idol", "Idyll", "Illusion",
    "Image", "Incense", "Indigo", "Infinity", "Ingot", "Ink", "Inlet", "Inspiration",
    "Interlude", "Iris", "Island", "Isle", "Ivory", "Jasmine", "Jasper", "Jellybean",
    "Jet", "Journey", "Joy", "Jubilee", "Julep", "Jungle", "Juniper", "Karma",
    "Kestrel", "Key", "Keystone", "Kindness", "Kingdom", "Kiss", "Kite", "Kiwi",
    "Knight", "Knot", "Labyrinth", "Ladybug", "Lake", "Lamp", "Lantern", "Lapis",
    "Larch", "Laurel", "Leaf", "Leap", "Legend", "Lemon", "Lens", "Leopard", "Letter",
    "Liberty", "Lichen", "Lighthouse", "Lilac", "Lime", "Locket", "Locust", "Lodge",
    "Log", "Loom", "Lore", "Love", "Loyalty", "Luck", "Lumber", "Lumin", "Lute",
    "Lynx", "Lyre", "Lyric", "Macaroon", "Madrigal", "Magenta", "Magic", "Magma",
    "Magnolia", "Magpie", "Mahogany", "Maiden", "Maize", "Mallow", "Mandarin",
    "Mandolin", "Mandrake", "Mansion", "Mantra", "Manuscript", "Marble", "Marigold",
    "Marina", "Marionette", "Market", "Marmalade", "Marsh", "Marshmallow", "Marvel",
    "Mask", "Masquerade", "Mast", "Mead", "Medal", "Medallion", "Melon", "Memento",
    "Memory", "Meridian", "Mermaid", "Mesa", "Message", "Metal", "Meteor", "Mica",
    "Microcosm", "Midnight", "Milk", "Mill", "Mimosa", "Minaret", "Mineral", "Mint",
    "Minuet", "Miracle", "Mirage", "Mirror", "Mirth", "Moccasin", "Mocha", "Mole",
    "Moment", "Monarch", "Monastery", "Monocle", "Monsoon", "Monster", "Monument",
    "Moonstone", "Moor", "Morass", "Morning", "Mosaic", "Moss", "Moth", "Motion",
    "Motto", "Mountain", "Mouse", "Mousse", "Mulberry", "Mural", "Murmur", "Mushroom",
    "Music", "Myrrh", "Myrtle", "Mystery", "Myth", "Naiad", "Nap", "Narcissus",
    "Nature", "Nautilus", "Navigator", "Nebula", "Needle", "Nest", "Nettle", "Night",
    "Nightingale", "Nimbus", "Nocturne", "Nomad", "Nook", "Noon", "Nostalgia", "Note",
    "Novel", "Nugget", "Nutmeg", "Nymph", "Oasis", "Oath", "Oatmeal", "Obsidian",
    "Ocelot", "Octave", "Ode", "Odyssey", "Olive", "Omen", "Onyx", "Opal", "Opera",
    "Oracle", "Orange", "Orbit", "Origami", "Oriole", "Ornament", "Osprey", "Otter",
    "Ovation", "Owl", "Oyster", "Page", "Pagoda", "Paint", "Palace", "Palette", "Palm",
    "Pampas", "Panda", "Panorama", "Pansy", "Panther", "Papaya", "Paper", "Papyrus",
    "Parable", "Parade", "Paradise", "Paradox", "Parchment", "Park", "Parody", "Parrot",
    "Parsley", "Passion", "Pastel", "Pastry", "Patch", "Path", "Patience", "Patina",
    "Patio", "Pattern", "Pause", "Peace", "Peak", "Pecan", "Pegasus", "Pendant",
    "Pendulum", "Pen", "Penny", "Peony", "Pepper", "Peppermint", "Perfume", "Peridot",
    "Periwinkle", "Persimmon", "Petunia", "Pewter", "Phantom", "Phial", "Philter",
    "Phoenix", "Phrase", "Piano", "Piazza", "Picture", "Pier", "Pilgrim", "Pillow",
    "Pilot", "Pine", "Pineapple", "Pinnacle", "Pinwheel", "Pioneer", "Pipe", "Pirate",
    "Pistachio", "Pixy", "Placard", "Plain", "Planet", "Plank", "Plant", "Plaster",
    "Plateau", "Plaza", "Pleasure", "Plum", "Plume", "Pocket", "Poetry", "Poise",
    "Polaris", "Pollen", "Pond", "Pony", "Pool", "Poplar", "Porcelain", "Porch",
    "Portal", "Portrait", "Posy", "Potion", "Pottery", "Prairie", "Prayer", "Prelude",
    "Presence", "Present", "Pride", "Primrose", "Prince", "Princess", "Prism", "Prize",
    "Prodigy", "Promise", "Prophecy", "Prospect", "Proverb", "Psalm", "Pulse", "Puma",
    "Pumpkin", "Pup", "Puppet", "Puzzle", "Pyramid", "Quail", "Quarry", "Quartz",
    "Quasar", "Queen", "Quest", "Quill", "Quilt", "Quince", "Quiver", "Quote",
    "Rabbit", "Racer", "Radian", "Radius", "Raft", "Rainbow", "Ram", "Ranch", "Rapid",
    "Raven", "Ray", "Realm", "Rebel", "Recipe", "Recital", "Record", "Redwood", "Reed",
    "Reef", "Reflection", "Refrain", "Regalia", "Reign", "Relic", "Remedy", "Rendezvous",
    "Requiem", "Reserve", "Resin", "Resort", "Rest", "Retreat", "Reverie", "Reward",
    "Rhapsody", "Rhythm", "Riddle", "Ridge", "Rime", "Ring", "Ripple", "Rite", "Ritual",
    "River", "Rivulet", "Road", "Robin", "Rock", "Rocket", "Romance", "Roof", "Root",
    "Rope", "Rosary", "Rosebud", "Rosemary", "Rouge", "Round", "Rowan", "Royal", "Rubric",
    "Rudder", "Rumble", "Rumor", "Runaway", "Rune", "Rush", "Rustle", "Saber", "Sable",
    "Sacrament", "Saddle", "Saga", "Sage", "Sail", "Salad", "Salamander", "Salmon",
    "Salon", "Salt", "Salute", "Sanctuary", "Sandalwood", "Sand", "Sandpiper", "Sapphire",
    "Satin", "Savanna", "Scale", "Scallop", "Scarab", "Scarf", "Scent", "Scepter",
    "Scheme", "Scholar", "Schooner", "Science", "Scimitar", "Scoop", "Score", "Scout",
    "Scrapbook", "Screen", "Scribe", "Scroll", "Sculpture", "Scythe", "Sea", "Seagull",
    "Seal", "Seam", "Seashell", "Season", "Seaweed", "Seed", "Seer", "Semaphore",
    "Senorita", "Sensation", "Sentiment", "Sentinel", "Sepal", "Sepia", "Sequin",
    "Sequoi", "Sermon", "Serpent", "Serum", "Serval", "Session", "Shade", "Shaft",
    "Shamrock", "Shard", "Shawl", "Sheen", "Shell", "Shelter", "Sherbet", "Shield",
    "Shift", "Ship", "Shoal", "Shore", "Shrine", "Shroud", "Shuttle", "Sigh", "Sign",
    "Signal", "Signet", "Silhouette", "Silver", "Simplicity", "Siren", "Sketch", "Skipper",
    "Slate", "Sleet", "Sleigh", "Slice", "Slipper", "Slope", "Smile", "Smoke", "Snack",
    "Snapdragon", "Snare", "Snow", "Snowdrop", "Snuggle", "Soap", "Solace", "Solarium",
    "Soldier", "Solitaire", "Solitude", "Solstice", "Sonata", "Sonnet", "Soot", "Soprano",
    "Sorcery", "Sorrow", "Soul", "Sound", "Souvenir", "Spa", "Space", "Spade", "Spaniel",
    "Sparrow", "Spear", "Speck", "Spectacle", "Specter", "Spectrum", "Spell", "Sphere",
    "Sphinx", "Spice", "Spider", "Spike", "Spindle", "Spine", "Spiral", "Spire", "Splash",
    "Splendor", "Spool", "Spoon", "Spore", "Spot", "Spray", "Spruce", "Spur", "Spyglass",
    "Squadron", "Square", "Squid", "Squirrel", "Stable", "Stack", "Staff", "Stag", "Stage",
    "Stain", "Stair", "Stalactite", "Stalagmite", "Stallion", "Stamen", "Stamp", "Stanza",
    "Staple", "Starfish", "Stardust", "Statue", "Steed", "Steel", "Steeple", "Stem",
    "Stencil", "Step", "Stereo", "Sterling", "Steward", "Stick", "Stigma", "Stiletto",
    "Stirrup", "Stitch", "Stocking", "Stone", "Stool", "Stoop", "Story", "Stove", "Stowaway",
    "Strait", "Strand", "Strap", "Stratagem", "Straw", "Strawberry", "Streak", "Street",
    "Strength", "Strip", "Stroll", "Structure", "Stucco", "Studio", "Study", "Style",
    "Stylet", "Stylus", "Sugar", "Suit", "Suite", "Sultan", "Summit", "Sun", "Sundae",
    "Sundial", "Sunflower", "Sunrise", "Sunset", "Sunshine", "Surf", "Surprise", "Swallow",
    "Swamp", "Swarm", "Sway", "Sweater", "Sweetpea", "Swift", "Sword", "Sycamore", "Syllable",
    "Symbol", "Symmetry", "Symphony", "Synonym", "Syrup", "System", "Tablet", "Taffeta",
    "Tale", "Talisman", "Tambourine", "Tangle", "Tango", "Tankard", "Tapestry", "Tarot",
    "Tassel", "Tattoo", "Tavern", "Tea", "Teacup", "Tear", "Technique", "Teddy", "Telescope",
    "Temple", "Tempo", "Temptation", "Tenacity", "Tendril", "Tent", "Tenor", "Terrace",
    "Terrain", "Terrier", "Testament", "Texture", "Thatch", "Thaw", "Theater", "Theme",
    "Theory", "Thermos", "Thesaurus", "Thicket", "Thimble", "Thorn", "Thought", "Thread",
    "Throne", "Thrush", "Thunder", "Thyme", "Tiara", "Ticket", "Tide", "Tiger", "Tile",
    "Timber", "Time", "Tincture", "Tinsel", "Tip", "Toast", "Token", "Tome", "Tone",
    "Tonic", "Topaz", "Topic", "Torch", "Tornado", "Torrent", "Torso", "Tortoise", "Totem",
    "Touch", "Tour", "Tournament", "Tower", "Town", "Toy", "Trace", "Track", "Tract", "Trade",
    "Tradition", "Trail", "Train", "Trait", "Trance", "Tranquility", "Trap", "Traveler",
    "Treasure", "Treatise", "Treaty", "Tree", "Trefoil", "Trellis", "Tremor", "Trend",
    "Tress", "Trial", "Triangle", "Tribe", "Tribute", "Trick", "Trident", "Trifle",
    "Trill", "Trillium", "Trinket", "Trio", "Trip", "Triumph", "Troll", "Trophy", "Tropic",
    "Trout", "Trove", "Truce", "Trumpet", "Trunk", "Trust", "Truth", "Tuber", "Tugboat",
    "Tulle", "Tundra", "Tune", "Tunic", "Tunnel", "Turban", "Turf", "Turnip", "Turquoise",
    "Turret", "Turtle", "Tusk", "Tutu", "Tweed", "Twig", "Twine", "Twinkle", "Twirl",
    "Twist", "Typhoon", "Umbrella", "Undertow", "Uniform", "Union", "Unity", "Universe",
    "Urchin", "Urn", "Vale", "Valise", "Valley", "Valor", "Vampire", "Vanilla", "Vanity",
    "Vapor", "Variety", "Varnish", "Vase", "Vassal", "Vault", "Vector", "Veil", "Vein",
    "Velour", "Velvet", "Veneer", "Venture", "Veranda", "Verbena", "Verse", "Vessel", "Vest",
    "Vestige", "Vetch", "Vial", "Vibe", "Vicar", "Victory", "View", "Vigil", "Villa",
    "Village", "Vine", "Vinegar", "Vineyard", "Vintage", "Viola", "Violet", "Violin",
    "Viper", "Virago", "Virtue", "Visa", "Visage", "Vision", "Visitor", "Vista", "Vitality",
    "Vixen", "Voice", "Void", "Volcano", "Volume", "Vortex", "Vow", "Voyage", "Voyager",
    "Waffle", "Wagon", "Waif", "Wake", "Walk", "Wall", "Wallet", "Walnut", "Waltz", "Wand",
    "Wanderer", "Warbler", "Warmth", "Warning", "Warp", "Warrior", "Wasp", "Watch", "Water",
    "Waterfall", "Waterlily", "Wave", "Wax", "Way", "Wealth", "Weapon", "Weasel", "Weather",
    "Weave", "Web", "Wedding", "Wedge", "Weed", "Weekend", "Weight", "Well", "Wetland",
    "Whale", "Wheat", "Wheel", "Whelp", "Whiff", "Whim", "Whirl", "Whirlpool", "Whirlwind",
    "Whisk", "Whisper", "Whistle", "Wicker", "Widget", "Wigwam", "Wilderness", "Wildfire",
    "Will", "Wind", "Windchime", "Window", "Wine", "Wing", "Wink", "Winner", "Winter",
    "Wire", "Wish", "Wisteria", "Witch", "Wit", "Wizard", "Wolf", "Woman", "Wood", "Woodbine",
    "Woodland", "Woodpecker", "Wool", "Word", "Work", "World", "Worm", "Worry", "Worship",
    "Wreath", "Wren", "Writer", "Xylophone", "Yacht", "Yard", "Yarn", "Yarrow", "Year",
    "Yearning", "Yeast", "Yellow", "Yew", "Yoga", "Yogurt", "Yoke", "Yolk", "Youth", "Yule",
    "Zebra", "Zenith", "Zephyr", "Zest", "Zigzag", "Zinc", "Zinnia", "Zither", "Zodiac",
    "Zone", "Zoo"
]))

# 名字 (可爱简称)
names_short_cute = list(set([
    "Lily", "Mia", "Ella", "Luna", "Chloe", "Zoe", "Ava", "Sophie", "Grace",
    "Ruby", "Skye", "Jade", "Rose", "Belle", "Faye", "Hope", "Joy", "Lucy",
    "Nora", "Ivy", "Aria", "Maya", "Anna", "Emma", "Isla", "Olivia", "Sophia",
    "Alice", "Clara", "Cora", "Eliza", "Flora", "Freya", "Gemma", "Hazel",
    "Iris", "Layla", "Leah", "Mila", "Nina", "Paige", "Quinn", "Stella",
    "Thea", "Violet", "Willa", "Zara", "Daisy", "Poppy", "Ruby", "Willow",
    "Abby", "Ada", "Addie", "Aimee", "Aisha", "Alana", "Alexa", "Ali", "Alia",
    "Alma", "Amber", "Amelia", "Amy", "Ana", "Anika", "Anya", "April", "Ariel",
    "Ashley", "Asia", "Aspen", "Astrid", "Audrey", "Autumn", "Ayla", "Bea",
    "Becky", "Bella", "Beth", "Betty", "Bianca", "Blair", "Blake", "Bliss",
    "Blossom", "Blythe", "Bonnie", "Bree", "Briar", "Bridie", "Brin", "Brooke",
    "Brynn", "Calla", "Callie", "Cara", "Carly", "Carmen", "Carol", "Cassie",
    "Cate", "Cece", "Celeste", "Celia", "Chana", "Chara", "Charli", "Cher",
    "Cherry", "Cleo", "Coco", "Colby", "Connie", "Coral", "Court", "Dana",
    "Daphne", "Darcy", "Darla", "Dawn", "Debby", "Della", "Demi", "Devon",
    "Diana", "Dina", "Dixie", "Dolly", "Dora", "Doris", "Eden", "Edie", "Edith",
    "Effie", "Eila", "Eira", "Elaina", "Elana", "Elda", "Eleni", "Elfie", "Elina",
    "Elise", "Elka", "Elke", "Elle", "Ellen", "Ellie", "Elma", "Elodie", "Eloise",
    "Elsa", "Elsie", "Elva", "Ember", "Emery", "Emilia", "Emmy", "Enid", "Enya",
    "Erica", "Erika", "Erin", "Eska", "Esme", "Espen", "Estee", "Esther", "Etta",
    "Eula", "Eunie", "Eva", "Evie", "Faith", "Fanny", "Farah", "Flora", "Fran",
    "Gail", "Gayle", "Gena", "Gia", "Gigi", "Gilda", "Gina", "Ginny", "Gita",
    "Gwen", "Halle", "Hanna", "Harley", "Harlow", "Hattie", "Haven", "Heidi",
    "Helen", "Helga", "Hera", "Holly", "Honey", "Ida", "Ilana", "Ilsa", "Immy",
    "Ina", "Indie", "Inez", "Inga", "Ingrid", "Iona", "Ira", "Irene", "Irina",
    "Irma", "Isa", "Isha", "Ivory", "Jacqui", "Jada", "Jamie", "Jana", "Jane",
    "Janel", "Janet", "Janice", "Janie", "Jessa", "Jessie", "Jill", "Jinny",
    "Joan", "Jodi", "Joelle", "Joey", "Jojo", "Jolie", "Joni", "Josie", "Journey",
    "Jovie", "Joyce", "Judith", "Judy", "Julia", "Julie", "Juliet", "June", "Juni",
    "Juno", "Justi", "Kaia", "Kara", "Karen", "Karis", "Karla", "Karly", "Kasey",
    "Kasia", "Kate", "Kathy", "Katie", "Katya", "Kay", "Kaya", "Kayla", "Keira",
    "Kelly", "Kelsey", "Kendra", "Kenzie", "Keri", "Kesha", "Kia", "Kiana", "Kiara",
    "Kiki", "Kim", "Kira", "Kirsten", "Kit", "Kitty", "Kyla", "Kylie", "Kyra",
    "Lacey", "Laila", "Lana", "Lara", "Larisa", "Laura", "Laurel", "Lauren", "Lea",
    "Leena", "Leesa", "Leia", "Leila", "Lena", "Leona", "Leonie", "Lesley", "Lexa",
    "Lexi", "Lia", "Liana", "Libby", "Lida", "Lila", "Lilac", "Lilia", "Lilla",
    "Lindy", "Linnea", "Lisa", "Lisbet", "Lise", "Liv", "Livia", "Liz", "Liza",
    "Lizzie", "Lois", "Lola", "Lolita", "Lora", "Lori", "Lorna", "Lotus", "Lou",
    "Louisa", "Luann", "Luca", "Lucia", "Lucie", "Luella", "Lula", "Lulu", "Lyda",
    "Lydia", "Lynda", "Lynn", "Lyra", "Lyssa", "Mabel", "Maddie", "Mae", "Maeve",
    "Magda", "Maggie", "Maia", "Maida", "Maisy", "Malia", "Malka", "Mandy", "Mara",
    "Marci", "Marcy", "Maren", "Margo", "Maria", "Marie", "Marin", "Maris", "Marla",
    "Marlee", "Marlie", "Marni", "Marta", "Martha", "Mary", "Matty", "Maude", "Maura",
    "Mavis", "Maxie", "May", "Megan", "Mel", "Melba", "Melia", "Meline", "Melody",
    "Mena", "Mercy", "Meryl", "Meta", "Mika", "Mikki", "Milly", "Mimi", "Mina",
    "Mindy", "Minna", "Minnie", "Mira", "Miri", "Miriam", "Misty", "Mitzi", "Miya",
    "Moira", "Molly", "Mona", "Monica", "Mora", "Morgan", "Moxie", "Mya", "Myra",
    "Myrna", "Myrtle", "Nada", "Nadia", "Nadine", "Nan", "Nancy", "Naomi", "Nara",
    "Nastia", "Nat", "Nell", "Nellie", "Nena", "Nessa", "Nettie", "Nev", "Neva",
    "Nia", "Nic", "Nicky", "Nicola", "Nicole", "Nika", "Niki", "Nikki", "Nila",
    "Noa", "Noel", "Nola", "Nolia", "Nona", "Noni", "Norma", "Nova", "Nyla", "Oda",
    "Odell", "Odette", "Ola", "Olena", "Olga", "Olive", "Ollie", "Ona", "Opal",
    "Opra", "Ora", "Orla", "Orly", "Orsa", "Osla", "Otta", "Ozzy", "Palma",
    "Paloma", "Pam", "Pammy", "Pansy", "Paula", "Pauley", "Paulie", "Paz", "Peggy",
    "Penny", "Pepa", "Pepper", "Peri", "Perla", "Perry", "Petra", "Petula", "Peyton",
    "Phil", "Phoebe", "Phylo", "Pia", "Pilar", "Piper", "Pippa", "Pippi", "Pixie",
    "Polly", "Portia", "Posy", "Presley", "Prima", "Prissy", "Priya", "Prue", "Pru",
    "Psyche", "Queeni", "Rae", "Raia", "Raina", "Raisa", "Ramona", "Rana", "Randi",
    "Rani", "Raquel", "Raven", "Raya", "Reba", "Ree", "Reese", "Regan", "Regina",
    "Reina", "Remi", "Rena", "Renata", "Rene", "Renee", "Reyna", "Rhea", "Rhian",
    "Rhoda", "Rhona", "Ria", "Riana", "Ricci", "Ricky", "Rikki", "Riley", "Rina",
    "Risa", "Rita", "Riva", "Riya", "Roanne", "Robbie", "Robyn", "Rocio", "Roise",
    "Romy", "Rona", "Ronda", "Ronia", "Rory", "Rosa", "Rosie", "Rowan", "Rowen",
    "Roxie", "Roz", "Rue", "Ruth", "Ruthie", "Rylee", "Saba", "Sabina", "Sabra",
    "Sacha", "Sadie", "Saffron", "Sage", "Saige", "Sal", "Sally", "Salma", "Salome",
    "Sam", "Sammy", "Sandra", "Sandy", "Sansa", "Sappho", "Sara", "Sari", "Sasha",
    "Saskia", "Savvy", "Scarlet", "Seana", "Season", "Selah", "Selby", "Selena",
    "Selma", "Seren", "Shana", "Shandy", "Shani", "Shanna", "Shari", "Sharla",
    "Sharon", "Shawna", "Shay", "Shayla", "Shea", "Sheba", "Sheena", "Sheila",
    "Shelby", "Shelly", "Sheri", "Sherry", "Shifra", "Shiloh", "Shira", "Shiri",
    "Shirly", "Sibyl", "Sidney", "Sierra", "Signe", "Silka", "Silvie", "Simmy",
    "Simone", "Sindy", "Siobhan", "Siri", "Sissy", "Sita", "Sloane", "Snow", "Sol",
    "Solana", "Solveig", "Sondra", "Sonia", "Sonja", "Sonny", "Sonya", "Sorcha",
    "Stacey", "Stacy", "Star", "Starla", "Stef", "Stormy", "Sue", "Sugar", "Suki",
    "Summer", "Sunny", "Susan", "Susie", "Suzie", "Svenja", "Svetla", "Sybil", "Syd",
    "Sylvie", "Tabby", "Tahli", "Talia", "Tali", "Tam", "Tamar", "Tamika", "Tammy",
    "Tamsin", "Tana", "Tania", "Tansy", "Tara", "Taryn", "Tasha", "Tati", "Tatum",
    "Tawny", "Taya", "Tea", "Teagan", "Tecla", "Teddy", "Teena", "Teila", "Tempie",
    "Terra", "Terry", "Tess", "Tessa", "Tessie", "Thalia", "Thelma", "Thera", "Tia",
    "Tiana", "Tiara", "Tiera", "Tiffany", "Tilda", "Tilly", "Tina", "Tindra", "Tisha",
    "Tobi", "Toni", "Tonya", "Topaz", "Tori", "Tosca", "Tova", "Tove", "Tracey",
    "Traci", "Tracy", "Tress", "Tricia", "Trina", "Trish", "Trisha", "Trista", "Trudy",
    "Truly", "Twyla", "Tyra", "Ula", "Ulla", "Ulrica", "Uma", "Una", "Unity", "Ursa",
    "Ursula", "Val", "Valka", "Vana", "Vanda", "Vanna", "Vanya", "Veda", "Velda",
    "Velma", "Vera", "Verna", "Vesta", "Vicki", "Vicky", "Vida", "Vina", "Vinca",
    "Viola", "Vita", "Viva", "Vivi", "Vivian", "Wanda", "Wendy", "Whitney", "Winnie",
    "Xandra", "Xara", "Xavia", "Xena", "Xenia", "Xia", "Xyla", "Yana", "Yara", "Yari",
    "Yasmin", "Yelena", "Yesenia", "Yetta", "Ynes", "Yoko", "Yoli", "Yona", "Yonna",
    "Ysabel", "Yula", "Yuri", "Yvette", "Yvonne", "Zada", "Zaida", "Zaina", "Zana",
    "Zandra", "Zanna", "Zaria", "Zelda", "Zelia", "Zella", "Zelma", "Zena", "Zera",
    "Zeta", "Zia", "Zilla", "Zina", "Zita", "Ziva", "Zola", "Zora", "Zula", "Zuri"
]))

# Emoji (可爱闪亮风格)
emojis_cute_sparkly = list(set([
    # Flowers & Plants
    "🌸", "🌹", "🌷", "🌻", "🌼", "🌺", "💮", "🏵️", "💐", "☘️", "🍀", "🌱", "🌿",
    "🪴", "🌲", "🌳", "🌴", "🌵", "🌾", "🍁", "🍂", "🍄", "🎋", "🎍",
    # Sparkles, Stars, Moon, Sun
    "✨", "💖", "💫", "🌟", "⭐", "🌠", "❇️", "✴️", "🎇", "🎆", "☀️", "🌙", "🌕",
    "🌖", "🌗", "🌘", "🌑", "🌒", "🌓", "🌔", "🌛", "🌜", "🌝", "🌞", "🪐",
    # Hearts (various colors)
    "❤️", "🧡", "💛", "💚", "💙", "💜", "🖤", "🤍", "🤎", "🩷", "💔", "❤️‍🔥", "❤️‍🩹",
    "💕", "💞", "💓", "💗", "💖", "💘", "💝", "💟", "🫶",
    # Nature & Weather
    "☁️", "⛅", "⛈️", "🌤️", "🌥️", "🌦️", "🌧️", "🌨️", "🌩️", "🌪️", "🌫️", "🌬️",
    "🌈", "🌊", "💧", "💦", "🫧", "☔", "☂️", "⛱️", "🔥", "🌋", "⛰️", "🏔️",
    "🏞️", "🏝️", "🏜️", "🏖️", "🌅", "🌄", "🏞",
    # Cute Animals & Mythical Creatures
    "🦋", "🦄", "🐇", "🐈", "🐈‍⬛", "🐕", "🐩", "🕊️", "🦢", "🦊", "🐞", "🐬",
    "🐳", "🐠", "🐡", "🐙", "🐚", "🐌", "🐝", "🐜", "🦗", "🕷️", "🐢", "🐍",
    "🦎", "🦖", "🦕", "🐅", "🐆", "🦓", "🦍", "🦧", "🐘", "🦛", "🦏", "🐪",
    "🐫", "🦒", "🦘", "🐃", "🐂", "🐄", "🐎", "🐖", "🐏", "🐑", "🐐", "🦌",
    "🐕‍", "🐒", " rodents", "🐁", "🐀", "🐿️", "🦫", "🦔", "🦇", "🐻", "🐨",
    "🐼", "🦥", "🦦", "🦨", "🦡", "🦃", "🐔", "🐓", "🐣", "🐤", "🐥", "🐦",
    "🐧", "🦅", "🦉", "🦜", "🦢", "🦩", "🦚", "🦜", "🧚‍♀️", "🧜‍♀️", "🧞‍♀️", "👼",
    "🐉", "🐲",
    # Food & Drink (Cute ones)
    "🍓", "🍒", "🍑", "🍉", "🍇", "🍊", "🍋", "🍌", "🍍", "🥭", "🍎", "🍏", "🍐",
    "🥝", "🥥", "🥑", "🍦", "🍧", "🍨", "🍩", "🍪", "🎂", "🍰", "🧁", "🥧", "🍫",
    "🍬", "🍭", "🍮", "🍯", "🍼", "🥛", "☕", "🍵", "🫖", "🥤", "🧋", "🧃", "🧉",
    "🧊", "🥢", "🥡", "🥐", "🥨", "🥞", "🧇",
    # Objects, Symbols, Activities
    "🎀", "💎", "👑", "💍", "👑", "💄", "💋", "💅", "🤳", "👑", "👒", "🎩", "🎓",
    "⛑️", "🪖", "👗", "👘", "🥻", "🩱", "🩲", "🩳", "👙", "👚", "👛", "👜",
    "👝", "🎒", "👞", "👟", "👠", "👡", "👢", "🩰", "🧵", "🪡", "🧶", "🪢",
    "👓", "🕶️", "🥽", "🥼", "🦺", "👔", "👕", "👖", "🧣", "🧤", "🧥", "🧦",
    "🎶", "🎵", "🎼", "🎤", "🎧", "🎷", "🎺", "🎸", "🪕", "🎻", "🥁", "🎹",
    "🎨", "🎭", "🎬", "🎪", "🎟️", "🎫", "🎖️", "🏆", "🏅", "🥇", "🥈", "🥉",
    "⚽", "🏀", "🏈", "⚾", "🥎", "🎾", "🏐", "🏉", "🎱", "🏓", "🏸", "🏒",
    "🏑", "🥍", "🏏", "🥅", "⛳", "🏹", "🎣", "🤿", "🥊", "🥋", "⛸️", "🎿",
    "🛷", " Curling Stone", "🎯", "🪁", "🔮", "🪄", "🧿", "🎮", "🕹️", "🎰", "🎲",
    "🧩", "🧸", "🪅", "🪆", "🖼️", "🖌️", "🖍️", "✒️", "🖋️", "🖊️", "✏️", "📝",
    "✉️", "💌", "📮", "📪", "📫", "📬", "📭", "📦", "🏷️", "📄", "📃", " L",
    "📅", "📆", "🗓️", "📈", "📉", "📊", "📋", "📌", "📍", "📎", "🖇️", "📏",
    "📐", "✂️", "🗃️", "🗄️", "🗑️", "🔒", "🔓", "🔏", "🔐", "🔑", "🗝️", "🔨",
    "🪓", "⛏️", "⚒️", "🛠️", "🗡️", "⚔️", "🔫", "💣", "🏹", "🛡️", "🔧", "🔩",
    "⚙️", "🗜️", "⚖️", "🔗", "⛓️", "🪝", "🦯", "🩸", "🩹", "🩺", "💊", "💉",
    "🧬", "🔬", "🔭", "📡", "🛰️", "🧭", "🗺️", "🗾", "🌍", "🌎", "🌏", "🌐",
    "🏺", "⚱️", "🪞", "🪟", "🪣", "🪤", "🪒", "🧴", "🧷", "🧹", "🧺", "🧻",
    "🧼", "🪥", "🧽", "🕯️", "💡", "🔦", "🏮", "🪔", "🎐",
    # Misc Cute
    "☺️", "😊", "😇", "🥰", "😍", "🤩", "😘", "😗", "😚", "😙", "😋", "😛", "😜",
    "🤪", "😝", "🤗", "🤭", "🤫", "🤔", "🥳", "🥹", "🥱", "🤏", "🫶", "🧚", "🧜",
    "🧞", "☮️", "✝️", "☪️", "🕉️", "☸️", "✡️", "🔯", "🕎", "☯️", "☦️", "🛐",
    "⛎", "♈", "♉", "♊", "♋", "♌", "♍", "♎", "♏", "♐", "♑", "♒", "♓",
    "⚛️", "🉑", "☢️", "☣️", "📴", "📳", "🈶", "🈚", "🈸", "🈺", "🈷️", "✴️",
    "🆚", "💮", "🉐", "㊙️", "㊗️", "🈴", "🈵", "🈹", "🈲", "🅰️", "🅱️", "🆎",
    "🆑", "🅾️", "🆘", "⛔", "📛", "🚫", "❌", "⭕", "💢", "♨️", "❓", "❔",
    "❕", "❗", "〰️", "〽️", "⚠️", "🚸", "🔱", "⚜️", "🔰", "♻️", "✅", "🈯",
    "💹", "❇️", "✳️", "❎", "🌐", "Ⓜ️", "🈂️", "🛂", "🛃", "🛄", "🛅"
]))

# 可选的后缀 (连接符或结尾数字用)
optional_suffixes = ["", "_", "-", ".", "~"] # 空字符串代表无特殊连接符
optional_numbers = ["", str(random.randint(1, 99))] # 用于小概率添加的数字后缀

# --- 生成逻辑 ---

def generate_single_nickname(emoji_probability=0.5):
    """
    生成一个潜在的昵称字符串, 控制Emoji概率和位置。

    Args:
        emoji_probability (float): 添加Emoji的概率 (0到1之间)。

    Returns:
        str: 生成的昵称。
    """

    # 1. 选择基础昵称结构模式 (不含emoji)
    patterns = [
        "adj_noun", "adj_noun", "adj_noun", # 增加常见模式权重
        "adj_name", "adj_name",
        "name_noun", "name_noun",
        "name",
        "noun"
    ]
    chosen_pattern = random.choice(patterns)

    base_nickname = ""
    adj = random.choice(adjectives)
    noun = random.choice(nouns_female)
    name = random.choice(names_short_cute)

    # 2. 随机选择连接方式 (空格, 无空格CamelCase, 或小概率其他符号)
    # *** 配置点 5: 修改这里的 weights 调整连接符概率 ***
    separator = random.choices([" ", "", random.choice(optional_suffixes)], weights=[60, 35, 5], k=1)[0]
    if separator in optional_suffixes and separator == "": separator = "" # 如果随机到空后缀,视为无连接符

    # 3. 构建基础昵称 (纯文本部分)
    if chosen_pattern == "adj_noun":
        if separator == "": base_nickname = f"{adj}{noun[0].upper()}{noun[1:]}" # CamelCase
        else: base_nickname = f"{adj}{separator}{noun}"
    elif chosen_pattern == "adj_name":
        base_nickname = f"{adj} {name}" # 名字通常空格连接
    elif chosen_pattern == "name_noun":
        if separator == "": base_nickname = f"{name}{noun[0].upper()}{noun[1:]}" # CamelCase
        else: base_nickname = f"{name}{separator}{noun}"
    elif chosen_pattern == "name": base_nickname = name
    elif chosen_pattern == "noun": base_nickname = noun

    # 4. 清理和标准化基础昵称
    base_nickname = base_nickname.strip().replace("..", ".").replace("__", "_").replace("--", "-").replace("~~", "~") # 移除多余符号
    if base_nickname and base_nickname[0].isalpha():
        base_nickname = base_nickname[0].upper() + base_nickname[1:] # 首字母大写
        # 尝试修正驼峰式第二个词的首字母大写
        if separator == "" and chosen_pattern in ["adj_noun", "name_noun"]:
             potential_second_word_start = -1
             if chosen_pattern == "adj_noun": potential_second_word_start = len(adj)
             elif chosen_pattern == "name_noun": potential_second_word_start = len(name)

             if potential_second_word_start > 0 and potential_second_word_start < len(base_nickname):
                  # 确保索引有效且该位置是字母
                  if base_nickname[potential_second_word_start].isalpha():
                       base_nickname = base_nickname[:potential_second_word_start] + base_nickname[potential_second_word_start].upper() + base_nickname[potential_second_word_start+1:]

    # --- Emoji 添加逻辑 ---
    final_nickname = base_nickname # 默认没有emoji

    # 5. 决定是否添加 Emoji (根据概率)
    # *** 配置点 1: emoji_probability 在函数调用时传入 ***
    if random.random() < emoji_probability:
        # 6. 选择 1 或 2 个 Emoji
        # *** 配置点 2: 修改这里的 randint 参数调整 Emoji 数量范围 ***
        num_emojis = random.randint(1, 2)
        # 确保不重复选择 (如果emoji列表足够大)
        chosen_emojis = random.sample(emojis_cute_sparkly, min(num_emojis, len(emojis_cute_sparkly)))
        emoji_str = "".join(chosen_emojis)

        # 7. 决定 Emoji 位置 (随机前缀或后缀)
        # *** 配置点 3: 修改这里的 < 0.5 调整前后缀概率 ***
        if random.random() < 0.5:
            final_nickname = emoji_str + base_nickname # Emoji 在前
        else:
            final_nickname = base_nickname + emoji_str # Emoji 在后

    # 8. (极小概率) 添加数字后缀 (对最终结果添加)
    # *** 配置点 6: 修改这里的 < 0.02 调整数字后缀概率 ***
    if random.random() < 0.02:
        num_suffix = random.choice(optional_numbers[1:]) # 只选带数字的
        # 避免数字直接跟在 emoji 后面,视觉效果不好,可以加个空格或下划线
        emoji_chars = "".join(emojis_cute_sparkly) # 创建一个包含所有emoji的字符串方便检查
        if final_nickname and final_nickname[-1] in emoji_chars: # 检查最后一个字符是否是列表中的emoji
             final_nickname += random.choice(["_", " "]) + num_suffix # 加分隔符
        else:
             final_nickname += num_suffix # 直接加数字

    return final_nickname

# --- 主程序执行 ---
if __name__ == "__main__":
    print("--- 大批量可爱女生英文昵称生成器 (TG适用 | 可配置Emoji) ---")
    while True:
        try:
            target_count = int(input("请输入想要生成的唯一昵称数量 (例如: 10000): "))
            if target_count > 0: break
            else: print("请输入一个大于0的数字。")
        except ValueError: print("输入无效,请输入一个数字。")

    # *** 配置点 4: 修改这里的文件名 ***
    output_filename = "generated_nicknames_final.txt"
    unique_nicknames = set()
    start_time = time.time()
    attempts = 0
    # 根据目标数量调整最大尝试次数,防止因词库耗尽或碰撞过多导致死循环
    max_attempts = max(target_count * 15, target_count + 100000) # 保底增加10万次尝试

    print(f"\n正在生成 {target_count} 个唯一昵称...")
    last_report_count = 0
    # 动态调整进度报告的间隔,避免刷屏或间隔太久
    report_interval = max(500, target_count // 20) # 每生成总数的5%或至少500个时报告一次

    emoji_count = 0 # 追踪带emoji的昵称数量

    while len(unique_nicknames) < target_count and attempts < max_attempts:
        # *** 配置点 1: 在这里传入 Emoji 概率 ***
        nickname = generate_single_nickname(emoji_probability=0.5) # 50% 概率带 Emoji

        # 检查是否包含 Emoji (用于统计)
        # 注意:这个检查方法对于复杂或罕见Emoji可能不完全精确,但对常用Emoji有效
        contains_emoji = any(char in emojis_cute_sparkly for char in nickname)

        prev_size = len(unique_nicknames) # 记录添加前的大小
        unique_nicknames.add(nickname)

        # 如果成功添加了新的、不重复的昵称,并且它包含emoji,则计数
        if len(unique_nicknames) > prev_size and contains_emoji:
             emoji_count += 1

        attempts += 1 # 增加尝试次数

        # 进度报告
        current_count = len(unique_nicknames)
        if current_count >= last_report_count + report_interval:
            elapsed_time = time.time() - start_time
            current_emoji_percentage = (emoji_count / current_count * 100) if current_count > 0 else 0
            print(f"已生成 {current_count} / {target_count} 个唯一昵称... "
                  f"(尝试次数: {attempts}, Emoji占比: {current_emoji_percentage:.1f}%, 耗时: {elapsed_time:.2f} 秒)")
            last_report_count = current_count # 更新上次报告时的数量

        # 安全退出机制
        if attempts >= max_attempts:
            print(f"\n警告:已达到最大尝试次数 ({max_attempts}),可能无法生成足够的唯一昵称。")
            print(f"当前已生成 {len(unique_nicknames)} 个。")
            break # 退出循环

    # 生成结束
    end_time = time.time()
    total_time = end_time - start_time
    final_emoji_percentage = (emoji_count / len(unique_nicknames) * 100) if unique_nicknames else 0

    print("-" * 40)
    if len(unique_nicknames) >= target_count:
        print(f"成功生成 {len(unique_nicknames)} 个唯一昵称!")
    else:
        print(f"生成结束,共获得 {len(unique_nicknames)} 个唯一昵称 (目标 {target_count})。")
    print(f"最终 Emoji 占比: {final_emoji_percentage:.1f}% ({emoji_count} 个)")
    print(f"总耗时: {total_time:.2f} 秒")
    print(f"总尝试次数: {attempts}")
    print(f"结果已保存到文件: {output_filename}")
    print("-" * 40)

    # 将结果写入文件
    try:
        # 使用 'w' 模式,每次运行会覆盖旧文件
        # 使用 utf-8 编码确保能正确写入包含Emoji的字符
        with open(output_filename, 'w', encoding='utf-8') as f:
             # 直接写入 set 中的内容,无需排序,效率更高
             for name in unique_nicknames:
                 f.write(name + '\n') # 每个昵称占一行
        print("文件写入成功!")
    except IOError as e:
        print(f"错误:无法写入文件 {output_filename}。原因: {e}")