From b2fbfb9d8909503b2eb5af81e528b224cb8cb2e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E6=99=93=E5=AE=87?= <1329218916@qq.com> Date: Mon, 3 Apr 2023 00:17:24 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=F0=9F=8E=B8=20=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=E6=9C=AC=E5=9C=B0=E8=AE=BE=E7=BD=AE=E7=94=9F=E6=88=90=E6=8F=90?= =?UTF-8?q?=E7=A4=BA=E8=AF=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/keywords/dict.ts | 344 +++++++++++++++++++++++++++++++++++-- src/prompts/body.ts | 218 +++++++++++++++++++++++ src/prompts/environment.ts | 53 ++++++ src/prompts/eye.ts | 54 ++++++ src/prompts/facial.ts | 92 ++++++++++ src/prompts/general.ts | 226 ++++++++++++++++++++++++ src/prompts/hair.ts | 171 ++++++++++++++++++ src/prompts/ornament.ts | 76 ++++++++ src/scene/generate.tsx | 13 +- src/scene/lottery.tsx | 48 +++--- src/scene/ui.tsx | 2 +- src/service/gpt.ts | 12 +- src/types.ts | 30 +++- src/utils/prompt.ts | 118 +++++++++++++ src/utils/random.ts | 32 ++++ 15 files changed, 1440 insertions(+), 49 deletions(-) create mode 100644 src/prompts/body.ts create mode 100644 src/prompts/environment.ts create mode 100644 src/prompts/eye.ts create mode 100644 src/prompts/facial.ts create mode 100644 src/prompts/general.ts create mode 100644 src/prompts/hair.ts create mode 100644 src/prompts/ornament.ts create mode 100644 src/utils/prompt.ts create mode 100644 src/utils/random.ts diff --git a/src/keywords/dict.ts b/src/keywords/dict.ts index 15a7cca..66fc821 100644 --- a/src/keywords/dict.ts +++ b/src/keywords/dict.ts @@ -1,27 +1,333 @@ -import { PromptToken } from "types"; +import { Keyword } from "types"; /** 字典 */ export const PROMPT_DICT: { - [part: string]: PromptToken[]; + [part: string]: Keyword[]; } = { test: [ - { value: "黑长直", class: "adj" }, - { value: "电波系", class: "adj" }, - { value: "伪娘", class: "n" }, - { value: "兔女郎", class: "adj" }, - { value: "傲娇", class: "adj" }, - { value: "病娇", class: "adj" }, - { value: "天然呆", class: "adj" }, - { value: "活力", class: "adj" }, - { value: "抖S", class: "adj" }, - { value: "抖M", class: "adj" }, - { value: "三无", class: "adj" }, - { value: "泳装", class: "adj" }, - { value: "银发", class: "adj" }, - { value: "女仆", class: "n" }, - { value: "美少女", class: "n" }, - { value: "御姐", class: "n" }, - { value: "萝莉", class: "n" }, + { + value: "黑长直", + class: "adj", + prompts: { + base: ["Flowing tresses", "Sleek and straight strands"], + hairColor: "Glossy black hair", + }, + }, + { + value: "伪娘", + class: "n", + prompts: { + base: [ + "Feminine appearance", + "Cute outfit", + "Shimmering eyeshadow", + "High heeled shoes", + "Flawless skin", + "Feminine accessories", + "Graceful posture", + "Sweet smile", + "Playful demeanor", + "Girly charm", + ], + }, + }, + { + value: "兔女郎", + class: "adj", + prompts: { + base: [ + "Bunny girl", + "Rabbit ears", + "Cute", + "Playful", + "Sexy", + "Fluffy tail", + "Carrots", + "Easter", + "Pink", + "Thigh-high stockings", + "Bow tie", + "Curvy", + "Innocent", + "Sassy", + "Furry", + "Lustrous hair", + "Playmate", + ], + }, + }, + { + value: "傲娇", + class: "adj", + prompts: { + base: [ + "Arrogant", + "Cocky", + "Self-important", + "Self-centered", + "Narcissistic", + "Insolent", + "Condescending", + "Contemptuous", + ], + }, + }, + { + value: "病娇", + class: "adj", + prompts: { + base: [ + "Cutesy yet dangerous", + "Obsessive behavior", + "Innocent appearance with sinister undertones", + "Unstable emotions and mood swings", + "Lovesick and possessive", + "Clingy and needy", + "Outwardly sweet but inwardly devious", + "Intense and volatile personality", + "Can be manipulative and controlling", + "Dark and troubled past", + "Fragile and vulnerable", + "Plays the victim card", + "A mix of sweetness and insanity", + "Hard to resist but dangerous to cross", + "Demanding and high-maintenance", + "Perpetually in a state of emotional turmoil", + "Possesses a hidden dark side", + "Resistant to change and easily offended", + "Can be both alluring and terrifying at the same time", + ], + }, + }, + { + value: "天然呆", + class: "adj", + prompts: { + base: [ + "Adorkable", + "Innocent", + "Simple", + "Naive", + "Untainted", + " Quirky ", + " Unassuming ", + " Unsophisticated ", + " Endearing ", + " Sweet ", + " Charming ", + " Innocuous ", + " Childlike ", + " Nurturing ", + " Trusting ", + " Genuine ", + " Unpretentious ", + " Candid ", + " Artless ", + " Pure", + ], + }, + }, + { + value: "抖S", + class: "adj", + prompts: { + base: [ + " Whips", + " Dominatrix", + " Leather", + " Corsets", + " Chains", + " Risky behavior", + " Control", + " Submission", + " Spanking", + " Collars", + " Bondage", + " Black latex gloves", + " Safe words", + " Riding crop", + " Discipline", + " Pain", + " Pleasure", + " Body harness", + " Role playing", + " Power exchange", + ], + }, + }, + { + value: "抖M", + class: "adj", + prompts: { + base: [ + " Masochistic tendencies", + " Whips and chains", + " Submission", + " Punishment", + " Humiliation", + " Sadomasochism", + " Dominance", + " Role play", + " Bondage", + " Leather gear", + " Safeword", + " Power exchange", + " Consensual non-consent", + " Degradation", + " Foot worship", + " Cuffs and restraints", + " Impact play", + " Verbal humiliation", + " Chastity", + " Teasing and denial", + ], + }, + }, + { + value: "泳装", + class: "adj", + prompts: { + base: [ + " Beachwear ", + " Swimsuit ", + " Beach hat ", + " Sunglasses ", + " Sunscreen ", + " Bikini ", + " Poolside ", + " Water sports ", + " Sun-kissed ", + " Tanned skin ", + " Sun hat ", + " Beach bag ", + " Flip-flops ", + " Beach towel ", + " Ocean waves ", + " Board shorts ", + " Surfer girl ", + " Palm trees ", + " Sea shells ", + " Tropical paradise", + ], + }, + }, + { + value: "银发", + class: "adj", + prompts: { + base: [ + " Silver hair", + " Elderly person", + " Wise", + " Sophisticated", + " Grandparent", + " Dignified", + " Graceful", + " Experienced", + " Serene", + " Timeless", + " Refined", + " Regal", + " Elegant", + " Respected", + " Majestic", + " Honorable", + " Charismatic", + " Cultured", + " Prestigious", + " Noble", + ], + }, + }, + { + value: "女仆", + class: "n", + prompts: { + base: [ + " Maid costume", + " Serving tray", + " Feather duster", + " Bows and ribbons", + " Clean and tidy", + " Apron", + " High heels", + " Polite and respectful", + " Uniform", + " Updo hairstyle", + " Mistress or master", + " Tea set", + " Pinafore dress", + " Chores and tasks", + " Maid headband", + " Lace or frills", + " Domestic service", + " Well-groomed appearance", + " Submissive demeanor", + " Tidy and organized environment", + ], + }, + }, + { + value: "美少女", + class: "n", + prompts: { + base: [ + "Cute smile", + "Flowing dress", + "Rosy cheeks", + "Pink lips", + "Playful expression", + "Innocent blush", + "Elegant posture", + "Enchanting gaze", + "Delicate facial features", + "Graceful body language", + ], + }, + }, + { + value: "御姐", + class: "n", + prompts: { + base: [ + "Elegant", + "Confident", + "Seductive", + "Mysterious", + "Powerful", + "Regal", + "Graceful", + "Intimidating", + "Alluring", + "Sophisticated", + "Enigmatic", + "Enchanting", + "Imposing", + "Commanding", + "Glamorous", + "Queenly", + ], + }, + }, + { + value: "萝莉", + class: "n", + prompts: { + base: [ + "Innocent eyes", + "Petite stature", + "Blushing cheeks", + "Adorable smile", + "Cute bows", + "Vibrant colors", + "Playful expression", + "Over-sized hat", + "Flower headband", + "Candy-colored outfit", + "Plush toys", + ], + }, + }, ], }; diff --git a/src/prompts/body.ts b/src/prompts/body.ts new file mode 100644 index 0000000..b1eb83c --- /dev/null +++ b/src/prompts/body.ts @@ -0,0 +1,218 @@ +export const BODY_BREASTS = [ + "breasts", + "small breasts", + "medium breasts", + "large breasts", + "huge breasts", + "alternate breast size", + "mole on breast", + "between breasts", + "breasts apart", + "hanging breasts", + "bouncing breasts", +]; + +export const BODY_CLOTHING = [ + "sailor collar", + "hat", + "shirt", + "serafuku", + "sailor suite", + "sailor shirt", + "shorts under skirt", + "collared shirt", + "school uniform", + "seifuku", + "business_suit", + "jacket", + "suit", + "garreg mach monastery uniform", + "revealing dress", + "pink lucency full dress", + "cleavage dress", + "sleeveless dress", + "whitedress", + "wedding_dress", + "Sailor dress", + "sweater dress", + "ribbed sweater", + "sweater jacket", + "dungarees", + "brown cardigan", + "hoodie", + "robe", + "cape", + "cardigan", + "apron", + "gothic", + "lolita_fashion", + "gothic_lolita", + "western", + "tartan", + "off_shoulder", + "bare_shoulders", + "barefoot", + "bare_legs", + "striped", + "polka_dot", + "frills", + "lace", + "buruma", + "sportswear", + "gym_uniform", + "tank_top", + "cropped jacket", + "black sports bra", + "crop top", + "pajamas", + "japanese_clothes", + "obi", + "mesh", + "sleeveless shirt", + "detached_sleeves", + "white bloomers", + "high - waist shorts", + "pleated_skirt", + "skirt", + "miniskirt", + "short shorts", + "summer_dress", + "bloomers", + "shorts", + "bike_shorts", + "dolphin shorts", + "belt", + "bikini", + "sling bikini", + "bikini_top", + "bikini top only", + "side - tie bikini bottom", + "side-tie_bikini", + "friled bikini", + "bikini under clothes", + "swimsuit", + "school swimsuit", + "one-piece swimsuit", + "competition swimsuit", + "Sukumizu", +]; + +export const BODY_LEG_ORNAMENTS = [ + "bare legs", + "garter straps", + "garter belt", + "socks", + "kneehighs", + "white kneehighs", + "black kneehighs", + "over-kneehighs", + "single kneehigh", + "tabi", + "bobby socks", + "loose socks", + "single sock", + "no socks", + "socks removed", + "ankle socks", + "striped socks", + "blue socks", + "grey socks", + "red socks", + "frilled socks", + "thighhighs", + "black thighhighs", + "white thighhighs", + "striped thighhighs", + "brown thighhighs", + "blue thighhighs", + "red thighhighs", + "purple thighhighs", + "pink thighhighs", + "grey thighhighs", + "thighhighs under boots", + "green thighhighs", + "yellow thighhighs", + "orange thighhighs", + "vertical-striped thighhighs", + "frilled thighhighs", + "fishnet thighhighs", + "pantyhose", + "black pantyhose", + "white pantyhose", + "thighband pantyhose", + "brown pantyhose", + "fishnet pantyhose", + "striped pantyhose", + "vertical-striped pantyhose", + "grey pantyhose", + "blue pantyhose", + "single leg pantyhose", + "purple pantyhose", + "red pantyhose", + "fishnet legwear", + "bandaged leg", + "bandaid on leg", + "mechanical legs", + "leg belt", + "leg tattoo", + "bound legs", + "leg lock", + "panties under pantyhose", + "panty", + "thighhighs over pantyhose", + "socks over thighhighs", + "panties over pantyhose", + "pantyhose under swimsuit", + "black garter belt", + "neck garter", + "white garter straps", + "black garter straps", + "ankle garter", + "no legwear", + "black legwear", + "white legwear", + "torn legwear", + "striped legwear", + "asymmetrical legwear", + "brown legwear", + "uneven legwear", + "toeless legwear", + "print legwear", + "lace-trimmed legwear", + "red legwear", + "mismatched legwear", + "legwear under shorts", + "purple legwear", + "grey legwear", + "blue legwear", + "pink legwear", + "argyle legwear", + "ribbon-trimmed legwear", + "american flag legwear", + "green legwear", + "vertical-striped legwear", + "frilled legwear", + "stirrup legwear", + "alternate legwear", + "seamed legwear", + "yellow legwear", + "multicolored legwear", + "ribbed legwear", + "fur-trimmed legwear", + "see-through legwear", + "legwear garter", + "two-tone legwear", + "latex legwear", +]; + +export const BODY_SHOES = [ + "shoes", + "boots", + "loafers", + "high heels", + "cross-laced_footwear", + "mary_janes", + "uwabaki", + "slippers", + "knee_boots", +]; diff --git a/src/prompts/environment.ts b/src/prompts/environment.ts new file mode 100644 index 0000000..6080c90 --- /dev/null +++ b/src/prompts/environment.ts @@ -0,0 +1,53 @@ +export const ENVIRONMENT_TIME = [ + "day", + "dusk", + "night", + "in spring", + "in summer", + "in autumn", + "in winter", +]; + +export const ENVIRONMENT_SKY = [ + "sun", + "sunset", + "moon", + "full_moon", + "stars", + "cloudy", + "rain", + "in the rain", + "rainy days", + "snow", +]; + +export const ENVIRONMENT_LOCATION = [ + "sky", + "sea", + "mountain", + "on a hill", + "the top of the hill", + "in a meadow", + "plateau", + "on a desert", + "in hawaii", + "cityscape", + "landscape", + "beautiful detailed sky", + "beautiful detailed water", + "on the beach", + "on the ocean", + "over the sea", + "beautiful purple sunset at beach", + "in the ocean", + "against backlight at dusk", + "golden hour lighting", + "strong rim light", + "intense shadows", + "fireworks", + "flower field", + "underwater", + "explosion", + "in the cyberpunk city", + "steam", +]; diff --git a/src/prompts/eye.ts b/src/prompts/eye.ts new file mode 100644 index 0000000..b24d9be --- /dev/null +++ b/src/prompts/eye.ts @@ -0,0 +1,54 @@ +export const EYE_COLOR = [ + "blue eyes", + "red eyes", + "brown eyes", + "green eyes", + "purple eyes", + "yellow eyes", + "pink eyes", + "black eyes", + "aqua eyes", + "orange eyes", + "grey eyes", + "multicolored eyes", + "white eyes", + "gradient eyes", +]; + +export const EYE_STYLE = [ + "eyeshadow", + "red eyeshadow", + "blue eyeshadow", + "purple eyeshadow", + "pink eyeshadow", + "green eyeshadow", + "bags under eyes", + "ringed eyes", + "covered eyes", + "covering eyes", + "shading eyes", +]; + +export const EYE_STATUS = [ + "closed eyes", + "half-closed eyes", + "crying with eyes open", + "narrowed eyes", + "hidden eyes", + "heart-shaped eyes", + "button eyes", + "cephalopod eyes", + "eyes visible through hair", + "glowing eyes", + "empty eyes", + "rolling eyes", + "blank eyes", + "no eyes", + "sparkling eyes", + "extra eyes", + "crazy eyes", + "solid circle eyes", + "solid oval eyes", + "uneven eyes", + "blood from eyes", +]; diff --git a/src/prompts/facial.ts b/src/prompts/facial.ts new file mode 100644 index 0000000..5227631 --- /dev/null +++ b/src/prompts/facial.ts @@ -0,0 +1,92 @@ +export const FACIAL_FEATURE = [ + "food on face", + "light blush", + "facepaint", + "makeup", + "cute face", + "white colored eyelashes", + "longeyelashes", + "white eyebrows", + "tsurime", + "gradient", + "beautiful detailed eyes", + "tareme", + "slit pupils", + "heterochromia", + "heterochromia blue red", + "aqua eyes", + "looking at viewer", + "eyeball", + "stare", + "visible through hair", + "looking to the side", + "constricted pupils", + "symbol", + "heart in eye", + "heart", + "wink", + "mole under eye", + "eyes closed", + "no", + "fake animal ears", + "animal ear fluff", + "animal", + "fox", + "bunny", + "cat", + "dog", + "mouse", + "hair ear", + "pointy ears", +]; + +export const FACIAL_EXPRESSION = [ + "light smile", + "seductive smile", + "grin", + "laughing", + "teeth", + "excited", + "embarrassed", + "blush", + "shy", + "nose blush", + "expressionless", + "expressionless eyes", + "sleepy", + "drunk", + "tears", + "crying with eyes open", + "sad", + "pout", + "sigh", + "wide eyed", + "angry", + "annoyed", + "frown", + "smirk", + "serious", + "jitome", + "scowl", + "crazy", + "dark", + "smirk", + "smug", + "naughty", + "one eye closed", + "half-closed eyes", + "nosebleed", + "eyelid pull", + "tongue", + "tongue out", + "closed mouth", + "open mouth", + "lipstick", + "fangs", + "clenched teeth", + ":3", + ":p", + ":q", + ":t", + ":d", +]; diff --git a/src/prompts/general.ts b/src/prompts/general.ts new file mode 100644 index 0000000..ebc8aa9 --- /dev/null +++ b/src/prompts/general.ts @@ -0,0 +1,226 @@ +// 如需要更新词条,请访问 https://tools.miku.ac/novelai_tag/,并修改以下代码获取词条 +// const labels = [];document.querySelectorAll("#pane-头发\\&发饰 > div:nth-child(1) > div.el-checkbox-group > label > span.el-checkbox__label").forEach(label=>labels.push(label.outerHTML.match(/\n(\s|\d|[a-zA-Z]|:|-|_)+/)[0].replace(/(\n|\s)+/,"").replace(/\s$/,"")));labels; + +/** 通用特征 */ +export const GENERAL_PROMPTS = {}; + +export const STYLE = [ + "artbook", + "game_cg", + "comic", + "4koma", + "animated_gif gif", + "dakimakura", + "cosplay", + "crossover", + "dark", + "light", + "night", + "guro", + "realistic", + "photo", + "real", + "landscape", + "cityscape", + "science_fiction", + "original", + "parody", + "personification", + "checkered", + "lowres", + "highres", + "absurdres", + "incredibly_absurdres", + "huge_filesize", + "wallpaper", + "pixel_art", + "monochrome", + "colorful", + "optical_illusion", + "fine_art_parody", + "sketch", + "traditional_media", + "watercolor_", + "silhouette", + "covr", + "album", + "sample", + "back", + "bust", + "profile", + "expressions", + "everyone", + "column_lineup", + "transparent_background", + "simple_background", + "gradient_background", + "zoom_layer", + "English", + "Chinese", + "French", + "Japanese", + "translation_request", + "bad_id ID", + "tagme", + "artist_request", + "what", +]; + +export const CHARACTER = [ + "1girl", + "2girls", + "3girls", + "1boy", + "2boys", + "3boys", + "solo", + "multiple girls", + "little girl", + "little boy", + "shota", + "loli", + "kawaii", + "mesugaki", + "adorable girl", + "bishoujo", + "gyaru", + "sisters", + "ojousama", + "mature female", + "mature", + "female pervert", + "milf", + "harem", +]; + +export const ROLE = [ + "angel", + "cheerleader", + "chibi Q", + "crossdressing", + "devil", + "doll", + "elf", + "fairy", + "female", + "furry", + "orc", + "giantess", + "harem", + "idol", + "kemonomimi_mode", + "loli", + "magical_girl", + "maid", + "male", + "mermaid", + "miko", + "milf", + "minigirl", + "monster", + "multiple_girls", + "ninja", + "no_humans", + "nun", + "nurse", + "shota", + "stewardess", + "student", + "trap", + "vampire", + "waitress", + "witch", + "yaoi", + "yukkuri_shiteitte_ne", + "yuri", +]; + +export const ACTION = [ + "head tilt", + "turning around", + "looking back", + "looking down", + "looking up", + "smelling", + "hand_to_mouth", + "arm at side", + "arms behind head", + "arms behind back", + "hand on own chest", + "arms_crossed", + "hand on hip", + "hand on another", + "hand_on_hip", + "hands_on_hips", + "arms up", + "hands up", + "stretch", + "armpits", + "leg hold", + "grabbing", + "holding", + "fingersmile", + "hair_pull", + "hair scrunchie", + "w", + "v", + "peace symbol", + "thumbs_up", + "middle_finger", + "cat_pose", + "finger_gun", + "shushing", + "waving", + "salute", + "spread_arms", + "spread legs", + "crossed_legs", + "fetal_position", + "leg_lift", + "legs_up", + "leaning forward", + "fetal position", + "against wall", + "on_stomach", + "squatting", + "lying", + "sitting", + "sitting on", + "seiza", + "wariza", + "yokozuwari", + "indian_style", + "leg_hug", + "walking", + "running", + "straddle", + "straddling", + "kneeling", + "smoking", + "arm_support", + "caramelldansen niconiconi", + "princess_carry", + "fighting_stance", + "upside-down", + "top-down_bottom-up", + "bent_over", + "arched_back", + "back-to-back", + "symmetrical_hand_pose", + "eye_contact", + "hug", + "lap_pillow", + "sleeping", + "bathing", + "mimikaki", + "holding_hands", +]; + +export const R18TAG = [ + "surrounded, multiple others, exhibitionism, audience, background characters, crowd, public humiliation", + "partially unbuttoned", + "show foot", + "pubic tattoo on underbelly", + "spread pussy", + "ass_visible_through_thighs", +]; diff --git a/src/prompts/hair.ts b/src/prompts/hair.ts new file mode 100644 index 0000000..58ba2cb --- /dev/null +++ b/src/prompts/hair.ts @@ -0,0 +1,171 @@ +/** 头发长度 */ +export const HAIR_LENGTH = [ + "very short hair", + "short hair", + "medium hair", + "long hair", + "very long hair", + "absurdly long hair", + "hair over shoulder", + "alternate hair length", +]; + +/** 发色 */ +export const HAIR_COLOR = [ + "blonde hair", + "brown hair", + "black hair", + "blue hair", + "purple hair", + "pink hair", + "white hair", + "red hair", + "grey hair", + "green hair", + "silver hair", + "orange hair", + "light brown hair", + "light purple hair", + "light blue hair", + "platinum blonde hair", + "gradient hair", + "multicolored hair", + "shiny hair", + "two", + "streaked hair", + "aqua hair", + "colored inner hair", + "alternate hair color", + "hair up", + "hair down", + "wet hair", +]; + +/** 发型特征 */ +export const HAIR_STYLE = [ + "ahoge", + "antenna hair", + "bob cut", + "hime_cut", + "crossed bangs", + "hair wings", + "disheveled hair", + "wavy hair", + "curly_hair", + "hair in takes", + "forehead", + "drill hair", + "hair bun", + "double", + "straight hair", + "spiked hair", + "short hair with long locks", + "low", + "asymmetrical hair", + "alternate hairstyle", + "big hair", + "hair strand", + "hair twirling", + "pointy hair", + "hair slicked back", + "hair pulled back", + "split", +]; + +/** 发辫 */ +export const HAIR_BRAID = [ + "braid", + "twin braids", + "single braid", + "side braid", + "long braid", + "french braid", + "crown braid", + "braided bun", + "ponytail", + "braided ponytail", + "high ponytail", + "twintails", + "short", + "twin", + "Side ponytail", +]; + +/** 刘海 */ +export const HAIR_BANGS = [ + "bangs", + "blunt bangs", + "parted bangs", + "swept bangs", + "crossed bangs", + "asymmetrical bangs", + "braided bangs", + "long bangs", + "bangs pinned back", + "diagonal bangs", + "dyed bangs", + "hair between eyes", + "hair over one eye", + "hair over eyes", + "hair behind ear", + "hair between breasts", + "hair over breasts", + "hair censor", +]; + +/** 发饰 */ +export const HAIR_ORNAMENT = [ + "hair ornament", + "hair bow", + "hair ribbon", + "hairband", + "hair flower", + "hair bun", + "hair bobbles", + "hairclip", + "single hair bun", + "x hair ornament x", + "black hairband", + "hair scrunchie", + "hair rings", + "tied hair", + "hairpin", + "white hairband", + "hair tie", + "frog hair ornament", + "food", + "tentacle hair", + "star hair ornament", + "hair bell", + "heart hair ornament", + "red hairband", + "butterfly hair ornament", + "hair stick", + "snake hair ornament", + "lolita hairband", + "crescent hair ornament", + "cone hair bun", + "feather hair ornament", + "blue hairband", + "anchor hair ornament", + "leaf hair ornament", + "bunny hair ornament", + "skull hair ornament", + "yellow hairband", + "pink hairband", + "dark blue hair", + "bow hairband", + "cat hair ornament", + "musical note hair ornament", + "carrot hair ornament", + "purple hairband", + "hair tucking", + "hair beads", + "multiple hair bows", + "hairpods", + "bat hair ornament", + "bone hair ornament", + "orange hairband", + "multi", + "snowflake hair ornament", +]; diff --git a/src/prompts/ornament.ts b/src/prompts/ornament.ts new file mode 100644 index 0000000..694bbc6 --- /dev/null +++ b/src/prompts/ornament.ts @@ -0,0 +1,76 @@ +export const ORNAMENTS = [ + "halo", + "mini_top_hat", + "beret", + "hood", + "nurse cap", + "tiara", + "oni horns", + "demon horns", + "hair ribbon", + "flower ribbon", + "hairband", + "hairclip", + "hair_ribbon", + "hair_flower", + "hair_ornament", + "bowtie", + "hair_bow", + "maid_headdress", + "bow", + "hair ornament", + "heart hair ornament", + "bandaid hair ornament", + "hair bun", + "cone hair bun", + "double bun", + "semi-rimless eyewear", + "sunglasses", + "goggles", + "eyepatch", + "black blindfold", + "headphones", + "veil", + "mouth mask", + "glasses", + "earrings", + "jewelry", + "bell", + "ribbon_choker", + "black choker", + "necklace", + "headphones around neck", + "collar", + "sailor_collar", + "neckerchief", + "necktie", + "cross necklace", + "pendant", + "jewelry", + "scarf", + "armband", + "armlet", + "arm strap", + "elbow gloves", + "half gloves", + "fingerless_gloves", + "gloves", + "fingerless gloves", + "chains", + "shackles", + "cuffs", + "handcuffs", + "bracelet", + "wristwatch", + "wristband", + "wrist_cuffs", + "holding book", + "holding sword", + "tennis racket", + "cane", + "backpack", + "school bag", + "satchel", + "smartphone", + "bandaid", +]; diff --git a/src/scene/generate.tsx b/src/scene/generate.tsx index b10f01f..d5fc719 100644 --- a/src/scene/generate.tsx +++ b/src/scene/generate.tsx @@ -62,13 +62,24 @@ export const GenerateScene = ({ setScene, prompts }: GenerateSceneProps) => {
+ 据说,在这里,每一个老婆平均存活时间不超过6.7秒…… + + +
)} diff --git a/src/scene/lottery.tsx b/src/scene/lottery.tsx index 35dbc71..e8fe077 100644 --- a/src/scene/lottery.tsx +++ b/src/scene/lottery.tsx @@ -1,9 +1,11 @@ import { Button, CircularProgress, Divider } from "@mui/material"; import { getLotteryPool } from "../keywords/dict"; -import React, { useCallback, useEffect, useState } from "react"; -import { GAME_SCENES, PromptToken, SceneProps } from "types"; -import { OpenAIService } from "service/gpt"; +import React, { useCallback, useState } from "react"; +import { GAME_SCENES, Keyword, SceneProps } from "types"; +// import { OpenAIService } from "service/gpt"; import { Message } from "./ui"; +import { randomSelectNoRepeat } from "utils/random"; +import { getPrompts, initPrompts, mergePrompts } from "utils/prompt"; type LotterySceneProps = { setPrompts: React.Dispatch>; @@ -11,7 +13,7 @@ type LotterySceneProps = { type ActivePromptToken = { active: boolean; -} & PromptToken; +} & Keyword; /** 抽奖界面 */ export const LotteryScene = ({ setScene, setPrompts }: LotterySceneProps) => { @@ -19,10 +21,17 @@ export const LotteryScene = ({ setScene, setPrompts }: LotterySceneProps) => { const [loading, setLoading] = useState(false); const LOTTERY_POOL = getLotteryPool(); const getPromptsByTokens = useCallback(async () => { - const { getPrompts } = await OpenAIService(); - const prompts = await getPrompts( - activeTokens.filter((token) => token.active).map((token) => token.value) - ); + // const { getPrompts } = await OpenAIService(); + // const prompts = await getPrompts( + // activeTokens.filter((token) => token.active).map((token) => token.value) + // ); + let figurePrompts = initPrompts(); + activeTokens + .filter((token) => token.active) + .forEach((token) => { + figurePrompts = mergePrompts(figurePrompts, token.prompts); + }); + const prompts = getPrompts(figurePrompts); console.log(prompts); if (prompts) setPrompts(prompts); }, [setPrompts, activeTokens]); @@ -31,21 +40,14 @@ export const LotteryScene = ({ setScene, setPrompts }: LotterySceneProps) => {