Expand casual categories and clean prompt wording
This commit is contained in:
@@ -506,6 +506,324 @@
|
|||||||
"standing in profile near soft curtains",
|
"standing in profile near soft curtains",
|
||||||
"reclining with one arm draped over a pillow"
|
"reclining with one arm draped over a pillow"
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Smart casual",
|
||||||
|
"slug": "smart_casual",
|
||||||
|
"weight": 1.0,
|
||||||
|
"inherit_expressions": false,
|
||||||
|
"inherit_compositions": false,
|
||||||
|
"scene_pools": ["casual_smart_scenes"],
|
||||||
|
"expression_pools": ["smart_casual_expressions"],
|
||||||
|
"composition_pools": ["smart_casual_compositions"],
|
||||||
|
"items": ["smart casual outfit generator"],
|
||||||
|
"item_templates": [
|
||||||
|
"{jacket} over {top}, with {bottom}, {footwear}, and {bag}",
|
||||||
|
"{set_piece} styled with {jewelry}, {footwear}, and {color_mood}",
|
||||||
|
"{top} tucked into {bottom}, paired with {jacket}, {accessory}, and {detail}",
|
||||||
|
"{dress_piece} with {jacket}, {footwear}, {bag}, and {texture_detail}",
|
||||||
|
"{jacket} with {bottom}, {top}, {jewelry}, and {color_mood}",
|
||||||
|
"{set_piece} with {accessory}, {bag}, and {detail}",
|
||||||
|
"{top} under {layer}, with {bottom}, {footwear}, and {texture_detail}",
|
||||||
|
"{dress_piece} styled with {accessory}, {jewelry}, and {color_mood}"
|
||||||
|
],
|
||||||
|
"item_axes": {
|
||||||
|
"accessory": [
|
||||||
|
"thin sunglasses",
|
||||||
|
"a silk neck scarf",
|
||||||
|
"a narrow belt",
|
||||||
|
"wire-frame glasses",
|
||||||
|
"a minimalist hair clip",
|
||||||
|
"a structured watch",
|
||||||
|
"a soft leather belt",
|
||||||
|
"a neat phone case in hand"
|
||||||
|
],
|
||||||
|
"bag": [
|
||||||
|
"a structured tote",
|
||||||
|
"a compact leather shoulder bag",
|
||||||
|
"a slim laptop bag",
|
||||||
|
"a small satchel",
|
||||||
|
"a clean crossbody bag",
|
||||||
|
"a polished bucket bag",
|
||||||
|
"a narrow clutch",
|
||||||
|
"a minimal work tote"
|
||||||
|
],
|
||||||
|
"bottom": [
|
||||||
|
"tailored ankle trousers",
|
||||||
|
"wide-leg pleated trousers",
|
||||||
|
"dark straight-leg jeans",
|
||||||
|
"a satin midi skirt",
|
||||||
|
"a pencil skirt with a soft slit",
|
||||||
|
"cropped cigarette trousers",
|
||||||
|
"high-waist wool trousers",
|
||||||
|
"a clean A-line skirt"
|
||||||
|
],
|
||||||
|
"color_mood": [
|
||||||
|
"charcoal, ivory, and soft blue",
|
||||||
|
"navy and warm white",
|
||||||
|
"black with muted green accents",
|
||||||
|
"soft grey and pale pink",
|
||||||
|
"deep wine and cream tones",
|
||||||
|
"camel, white, and graphite",
|
||||||
|
"olive and black contrast",
|
||||||
|
"cool slate and silver details"
|
||||||
|
],
|
||||||
|
"detail": [
|
||||||
|
"rolled blazer sleeves",
|
||||||
|
"a clean tucked waist",
|
||||||
|
"softly structured proportions",
|
||||||
|
"a polished off-duty silhouette",
|
||||||
|
"a crisp collar line",
|
||||||
|
"subtle layered hems",
|
||||||
|
"a relaxed but tailored fit",
|
||||||
|
"neat high-waist styling"
|
||||||
|
],
|
||||||
|
"dress_piece": [
|
||||||
|
"ribbed knit midi dress",
|
||||||
|
"simple slip dress",
|
||||||
|
"button-front shirt dress",
|
||||||
|
"soft wrap dress",
|
||||||
|
"tailored sleeveless dress",
|
||||||
|
"clean knit column dress",
|
||||||
|
"minimal black day dress",
|
||||||
|
"belted cotton midi dress"
|
||||||
|
],
|
||||||
|
"footwear": [
|
||||||
|
"leather loafers",
|
||||||
|
"low block heels",
|
||||||
|
"minimal white sneakers",
|
||||||
|
"ankle boots",
|
||||||
|
"pointed flats",
|
||||||
|
"clean slingback heels",
|
||||||
|
"polished mules",
|
||||||
|
"sleek platform loafers"
|
||||||
|
],
|
||||||
|
"jacket": [
|
||||||
|
"soft oversized blazer",
|
||||||
|
"cropped tweed jacket",
|
||||||
|
"unstructured linen blazer",
|
||||||
|
"short trench jacket",
|
||||||
|
"boxy wool blazer",
|
||||||
|
"open cardigan blazer",
|
||||||
|
"clean leather jacket",
|
||||||
|
"tailored sleeveless vest"
|
||||||
|
],
|
||||||
|
"jewelry": [
|
||||||
|
"small gold hoops",
|
||||||
|
"a fine pendant necklace",
|
||||||
|
"stacked slim rings",
|
||||||
|
"pearl stud earrings",
|
||||||
|
"a narrow bracelet",
|
||||||
|
"minimal silver earrings",
|
||||||
|
"a delicate watch",
|
||||||
|
"a thin chain necklace"
|
||||||
|
],
|
||||||
|
"layer": [
|
||||||
|
"light trench coat",
|
||||||
|
"long knit cardigan",
|
||||||
|
"open tailored vest",
|
||||||
|
"soft cropped jacket",
|
||||||
|
"fine-gauge cardigan",
|
||||||
|
"relaxed blazer",
|
||||||
|
"short wool coat",
|
||||||
|
"silk bomber jacket"
|
||||||
|
],
|
||||||
|
"set_piece": [
|
||||||
|
"matching blazer and trouser set",
|
||||||
|
"knit top and midi skirt set",
|
||||||
|
"soft suit separates",
|
||||||
|
"vest and wide-trouser outfit",
|
||||||
|
"shirt-and-tailored-jean outfit",
|
||||||
|
"minimal workday co-ord",
|
||||||
|
"slip dress and blazer outfit",
|
||||||
|
"cardigan and pleated-skirt outfit"
|
||||||
|
],
|
||||||
|
"texture_detail": [
|
||||||
|
"smooth wool texture",
|
||||||
|
"soft satin sheen",
|
||||||
|
"crisp cotton folds",
|
||||||
|
"fine ribbed knit",
|
||||||
|
"matte crepe fabric",
|
||||||
|
"light linen slubs",
|
||||||
|
"polished leather accents",
|
||||||
|
"subtle woven texture"
|
||||||
|
],
|
||||||
|
"top": [
|
||||||
|
"silk camisole",
|
||||||
|
"ribbed mock-neck top",
|
||||||
|
"buttoned cotton shirt",
|
||||||
|
"soft blouse",
|
||||||
|
"fitted knit tee",
|
||||||
|
"square-neck tank",
|
||||||
|
"fine turtleneck",
|
||||||
|
"draped satin top"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"scenes": [
|
||||||
|
{"slug": "coworking_lounge_window", "prompt": "coworking lounge with tall windows, warm desks, and a polished outfit-check angle"},
|
||||||
|
{"slug": "office_elevator_mirror", "prompt": "modern office elevator lobby with brushed metal doors and a full-length mirror"},
|
||||||
|
{"slug": "gallery_opening_corner", "prompt": "small gallery opening with white walls, framed art, and soft evening light"},
|
||||||
|
{"slug": "wine_bar_terrace", "prompt": "quiet wine bar terrace with small tables, street lights, and relaxed after-work mood"}
|
||||||
|
],
|
||||||
|
"poses": [
|
||||||
|
"standing with one hand holding a structured tote",
|
||||||
|
"adjusting a blazer cuff while looking at the camera",
|
||||||
|
"leaning against a window counter with relaxed posture",
|
||||||
|
"walking through an office lobby with a confident stride",
|
||||||
|
"checking a phone while the outfit stays fully visible",
|
||||||
|
"sitting on a low chair with ankles crossed",
|
||||||
|
"turning slightly to show the jacket silhouette",
|
||||||
|
"standing near a mirror with one hand at the waist"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Athleisure",
|
||||||
|
"slug": "athleisure",
|
||||||
|
"weight": 1.0,
|
||||||
|
"inherit_expressions": false,
|
||||||
|
"inherit_compositions": false,
|
||||||
|
"scene_pools": ["casual_athleisure_scenes"],
|
||||||
|
"expression_pools": ["athleisure_focused_expressions"],
|
||||||
|
"composition_pools": ["athleisure_compositions"],
|
||||||
|
"items": ["athleisure outfit generator"],
|
||||||
|
"item_templates": [
|
||||||
|
"{top} with {bottom}, {footwear}, {bag}, and {texture_detail}",
|
||||||
|
"{set_piece} with {layer}, {accessory}, and {color_mood}",
|
||||||
|
"{layer} over {top}, with {bottom}, {footwear}, and {detail}",
|
||||||
|
"{top} tucked into {bottom}, paired with {accessory}, {prop}, and {texture_detail}",
|
||||||
|
"{set_piece} styled with {footwear}, {bag}, and {detail}",
|
||||||
|
"{top} with {bottom}, {layer}, {accessory}, and {color_mood}",
|
||||||
|
"{layer} tied at the waist over {top}, with {bottom}, {footwear}, and {prop}",
|
||||||
|
"{set_piece} with {accessory}, {texture_detail}, and {bag}"
|
||||||
|
],
|
||||||
|
"item_axes": {
|
||||||
|
"accessory": [
|
||||||
|
"a baseball cap",
|
||||||
|
"thin sport sunglasses",
|
||||||
|
"a scrunchie at the wrist",
|
||||||
|
"wireless earbuds",
|
||||||
|
"a soft headband",
|
||||||
|
"a fitness watch",
|
||||||
|
"a small towel over one shoulder",
|
||||||
|
"a zippered phone armband"
|
||||||
|
],
|
||||||
|
"bag": [
|
||||||
|
"a compact gym bag",
|
||||||
|
"a nylon sling bag",
|
||||||
|
"a canvas tote",
|
||||||
|
"a small backpack",
|
||||||
|
"a drawstring sport bag",
|
||||||
|
"a crossbody phone pouch",
|
||||||
|
"a rolled yoga mat strap",
|
||||||
|
"a minimal duffel"
|
||||||
|
],
|
||||||
|
"bottom": [
|
||||||
|
"high-waist leggings",
|
||||||
|
"bike shorts",
|
||||||
|
"wide-leg track pants",
|
||||||
|
"soft joggers",
|
||||||
|
"ribbed flare leggings",
|
||||||
|
"running shorts",
|
||||||
|
"cropped yoga pants",
|
||||||
|
"sleek training tights"
|
||||||
|
],
|
||||||
|
"color_mood": [
|
||||||
|
"black, white, and neon green accents",
|
||||||
|
"soft grey and lavender tones",
|
||||||
|
"navy with clean white details",
|
||||||
|
"sage green and charcoal",
|
||||||
|
"warm coral and cream",
|
||||||
|
"graphite and powder blue",
|
||||||
|
"muted berry and black",
|
||||||
|
"fresh white and silver accents"
|
||||||
|
],
|
||||||
|
"detail": [
|
||||||
|
"a clean high-waist line",
|
||||||
|
"body-skimming stretch fit",
|
||||||
|
"visible sporty seam lines",
|
||||||
|
"cropped proportions",
|
||||||
|
"relaxed post-workout styling",
|
||||||
|
"layered athletic straps",
|
||||||
|
"sleek compression fit",
|
||||||
|
"soft draped warm-up layers"
|
||||||
|
],
|
||||||
|
"footwear": [
|
||||||
|
"running shoes",
|
||||||
|
"clean white trainers",
|
||||||
|
"chunky athletic sneakers",
|
||||||
|
"minimal walking shoes",
|
||||||
|
"sleek gym sneakers",
|
||||||
|
"retro trainers",
|
||||||
|
"soft slip-on sneakers",
|
||||||
|
"platform sport sneakers"
|
||||||
|
],
|
||||||
|
"layer": [
|
||||||
|
"cropped zip hoodie",
|
||||||
|
"oversized warm-up jacket",
|
||||||
|
"light windbreaker",
|
||||||
|
"open flannel shirt",
|
||||||
|
"soft track jacket",
|
||||||
|
"mesh training jacket",
|
||||||
|
"sleeveless puffer vest",
|
||||||
|
"relaxed crewneck sweatshirt"
|
||||||
|
],
|
||||||
|
"prop": [
|
||||||
|
"a stainless water bottle",
|
||||||
|
"a rolled yoga mat",
|
||||||
|
"a phone in hand",
|
||||||
|
"a towel tucked under one arm",
|
||||||
|
"a smoothie cup",
|
||||||
|
"a pair of headphones",
|
||||||
|
"a locker key band",
|
||||||
|
"a folded hoodie nearby"
|
||||||
|
],
|
||||||
|
"set_piece": [
|
||||||
|
"matching sports bra and legging set",
|
||||||
|
"cropped hoodie and jogger set",
|
||||||
|
"training tank and bike-short outfit",
|
||||||
|
"ribbed workout co-ord",
|
||||||
|
"track jacket and flare-legging outfit",
|
||||||
|
"running top and short set",
|
||||||
|
"yoga set with a soft wrap layer",
|
||||||
|
"monochrome athleisure set"
|
||||||
|
],
|
||||||
|
"texture_detail": [
|
||||||
|
"smooth stretch fabric",
|
||||||
|
"matte performance knit",
|
||||||
|
"ribbed athletic texture",
|
||||||
|
"mesh panel details",
|
||||||
|
"soft fleece trim",
|
||||||
|
"light nylon sheen",
|
||||||
|
"breathable jersey fabric",
|
||||||
|
"subtle compression seams"
|
||||||
|
],
|
||||||
|
"top": [
|
||||||
|
"cropped training tank",
|
||||||
|
"fitted sport tee",
|
||||||
|
"longline sports bra",
|
||||||
|
"ribbed workout top",
|
||||||
|
"sleeveless zip top",
|
||||||
|
"soft racerback tank",
|
||||||
|
"cropped crewneck sweatshirt",
|
||||||
|
"mesh-layered athletic top"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"scenes": [
|
||||||
|
{"slug": "pilates_studio_mirror", "prompt": "bright pilates studio with mirrors, mats, and soft daylight"},
|
||||||
|
{"slug": "gym_lobby_outfit_check", "prompt": "clean gym lobby with lockers, rubber flooring, and a phone outfit-check angle"},
|
||||||
|
{"slug": "park_running_path", "prompt": "tree-lined park running path with morning light and open walking space"},
|
||||||
|
{"slug": "rooftop_yoga_corner", "prompt": "rooftop yoga corner with mats, plants, and city skyline in warm light"}
|
||||||
|
],
|
||||||
|
"poses": [
|
||||||
|
"standing with one foot forward and a water bottle in hand",
|
||||||
|
"stretching one arm overhead while the outfit stays visible",
|
||||||
|
"leaning against a locker with relaxed confidence",
|
||||||
|
"walking away from a workout mat while looking back",
|
||||||
|
"sitting on a mat with one knee raised",
|
||||||
|
"adjusting earbuds before a walk",
|
||||||
|
"standing in a mirror outfit-check pose",
|
||||||
|
"tying a hoodie around the waist"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -51,6 +51,30 @@
|
|||||||
"softly serious window-light expression",
|
"softly serious window-light expression",
|
||||||
"calm private-moment face"
|
"calm private-moment face"
|
||||||
],
|
],
|
||||||
|
"smart_casual_expressions": [
|
||||||
|
"composed workday gaze",
|
||||||
|
"quiet confident half-smile",
|
||||||
|
"focused after-work expression",
|
||||||
|
"calm gallery-opening stare",
|
||||||
|
"polished phone-camera look",
|
||||||
|
"subtle professional smile",
|
||||||
|
"thoughtful side glance",
|
||||||
|
"reserved but warm expression",
|
||||||
|
"confident outfit-check stare",
|
||||||
|
"relaxed city-evening expression"
|
||||||
|
],
|
||||||
|
"athleisure_focused_expressions": [
|
||||||
|
"fresh post-workout expression",
|
||||||
|
"focused activewear stare",
|
||||||
|
"relaxed sporty half-smile",
|
||||||
|
"winded but composed look",
|
||||||
|
"direct mirror-check gaze",
|
||||||
|
"calm pre-workout focus",
|
||||||
|
"soft morning-run expression",
|
||||||
|
"confident athletic side glance",
|
||||||
|
"casual earbuds-in expression",
|
||||||
|
"bright outdoor training look"
|
||||||
|
],
|
||||||
"softcore_creator_expressions": [
|
"softcore_creator_expressions": [
|
||||||
"direct creator-shot eye contact",
|
"direct creator-shot eye contact",
|
||||||
"heavy-lidded bedroom gaze",
|
"heavy-lidded bedroom gaze",
|
||||||
@@ -301,6 +325,30 @@
|
|||||||
"overhead sofa composition",
|
"overhead sofa composition",
|
||||||
"side-profile lounge silhouette"
|
"side-profile lounge silhouette"
|
||||||
],
|
],
|
||||||
|
"smart_casual_compositions": [
|
||||||
|
"full-body smart-casual outfit-check frame",
|
||||||
|
"polished mirror view with bag and shoes visible",
|
||||||
|
"three-quarter workday portrait with structured layers readable",
|
||||||
|
"gallery-opening vertical frame with clean negative space",
|
||||||
|
"office-lobby walking composition",
|
||||||
|
"seated lounge-chair frame with ankles and footwear visible",
|
||||||
|
"waist-up crop focused on collar, jacket, and jewelry",
|
||||||
|
"side-profile tailored silhouette frame",
|
||||||
|
"phone-snapshot crop from head to shoes",
|
||||||
|
"calm street-corner editorial composition"
|
||||||
|
],
|
||||||
|
"athleisure_compositions": [
|
||||||
|
"full-body activewear outfit-check frame",
|
||||||
|
"mirror gym-lobby crop with shoes and bag visible",
|
||||||
|
"standing stretch composition with full silhouette readable",
|
||||||
|
"mat-level seated athletic frame",
|
||||||
|
"walking path phone-photo composition",
|
||||||
|
"three-quarter activewear crop with seams and layers visible",
|
||||||
|
"side-profile sporty silhouette",
|
||||||
|
"low-angle trainer-focused frame",
|
||||||
|
"bright studio mirror composition",
|
||||||
|
"post-workout lifestyle frame with prop visible"
|
||||||
|
],
|
||||||
"softcore_creator_compositions": [
|
"softcore_creator_compositions": [
|
||||||
"handheld selfie crop from face to hips",
|
"handheld selfie crop from face to hips",
|
||||||
"mirror selfie with phone visible and body framed clearly",
|
"mirror selfie with phone visible and body framed clearly",
|
||||||
|
|||||||
@@ -31,6 +31,26 @@
|
|||||||
{"slug": "hotel_morning_lounge", "prompt": "hotel room lounge chair with rumpled travel bags, curtains, and soft morning sun"},
|
{"slug": "hotel_morning_lounge", "prompt": "hotel room lounge chair with rumpled travel bags, curtains, and soft morning sun"},
|
||||||
{"slug": "studio_apartment_mirror", "prompt": "small studio apartment with a full-length mirror, neutral bedding, and warm lamp light"}
|
{"slug": "studio_apartment_mirror", "prompt": "small studio apartment with a full-length mirror, neutral bedding, and warm lamp light"}
|
||||||
],
|
],
|
||||||
|
"casual_smart_scenes": [
|
||||||
|
{"slug": "coworking_lounge_window", "prompt": "coworking lounge with tall windows, warm desks, and a polished outfit-check angle"},
|
||||||
|
{"slug": "office_elevator_mirror", "prompt": "modern office elevator lobby with brushed metal doors and a full-length mirror"},
|
||||||
|
{"slug": "gallery_opening_corner", "prompt": "small gallery opening with white walls, framed art, and soft evening light"},
|
||||||
|
{"slug": "wine_bar_terrace", "prompt": "quiet wine bar terrace with small tables, street lights, and relaxed after-work mood"},
|
||||||
|
{"slug": "bookstore_event_smart", "prompt": "independent bookstore event corner with display tables, warm lamps, and polished casual styling"},
|
||||||
|
{"slug": "hotel_lobby_daywear", "prompt": "bright hotel lobby with marble floor, lounge seating, and a clean daywear portrait angle"},
|
||||||
|
{"slug": "museum_steps_smart", "prompt": "museum entrance steps with stone walls, soft sky light, and a composed outfit-photo frame"},
|
||||||
|
{"slug": "business_cafe_counter", "prompt": "quiet business cafe counter with laptops, plants, and a smart-casual mirror nearby"}
|
||||||
|
],
|
||||||
|
"casual_athleisure_scenes": [
|
||||||
|
{"slug": "pilates_studio_mirror", "prompt": "bright pilates studio with mirrors, mats, and soft daylight"},
|
||||||
|
{"slug": "gym_lobby_outfit_check", "prompt": "clean gym lobby with lockers, rubber flooring, and a phone outfit-check angle"},
|
||||||
|
{"slug": "park_running_path", "prompt": "tree-lined park running path with morning light and open walking space"},
|
||||||
|
{"slug": "rooftop_yoga_corner", "prompt": "rooftop yoga corner with mats, plants, and city skyline in warm light"},
|
||||||
|
{"slug": "locker_room_mirror_clean", "prompt": "clean locker-room mirror area with benches, soft overhead lights, and athletic outfit framing"},
|
||||||
|
{"slug": "studio_stairwell_active", "prompt": "fitness studio stairwell with concrete steps, handrails, and bright side light"},
|
||||||
|
{"slug": "track_side_morning", "prompt": "outdoor track edge with morning sun, lane markings, and open activewear framing"},
|
||||||
|
{"slug": "smoothie_bar_postworkout", "prompt": "smoothie bar counter near a gym entrance with bright tiles and casual post-workout light"}
|
||||||
|
],
|
||||||
"softcore_creator_scenes": [
|
"softcore_creator_scenes": [
|
||||||
{"slug": "creator_bedroom_ring_light", "prompt": "private creator bedroom with a ring light, phone tripod, rumpled bedding, and warm lamps"},
|
{"slug": "creator_bedroom_ring_light", "prompt": "private creator bedroom with a ring light, phone tripod, rumpled bedding, and warm lamps"},
|
||||||
{"slug": "onlyfans_mirror_bedroom", "prompt": "bedroom mirror selfie setup with a visible phone, messy sheets, and soft amber light"},
|
{"slug": "onlyfans_mirror_bedroom", "prompt": "bedroom mirror selfie setup with a visible phone, messy sheets, and soft amber light"},
|
||||||
|
|||||||
@@ -351,7 +351,7 @@
|
|||||||
"face-sitting position",
|
"face-sitting position",
|
||||||
"sixty-nine position",
|
"sixty-nine position",
|
||||||
"edge-of-bed oral position",
|
"edge-of-bed oral position",
|
||||||
"standing blowjob position",
|
"standing oral position",
|
||||||
"reclining cunnilingus position",
|
"reclining cunnilingus position",
|
||||||
"straddled oral position",
|
"straddled oral position",
|
||||||
"side-lying oral position",
|
"side-lying oral position",
|
||||||
|
|||||||
+20
-4
@@ -55,18 +55,18 @@ GENERIC_POSITIVE_SUFFIX = (
|
|||||||
SINGLE_TEMPLATE = (
|
SINGLE_TEMPLATE = (
|
||||||
"A {subject}: {style}, {age}, {body_phrase}, {skin}, {hair}, {eyes}. "
|
"A {subject}: {style}, {age}, {body_phrase}, {skin}, {hair}, {eyes}. "
|
||||||
"{item_label}: {item}. Scene: {scene}. Pose: {pose}. Facial expression: {expression}. "
|
"{item_label}: {item}. Scene: {scene}. Pose: {pose}. Facial expression: {expression}. "
|
||||||
"Composition: vertical {composition}. {positive_suffix} Avoid: {negative_prompt}."
|
"Composition: {composition_prompt}. {positive_suffix} Avoid: {negative_prompt}."
|
||||||
)
|
)
|
||||||
|
|
||||||
COUPLE_TEMPLATE = (
|
COUPLE_TEMPLATE = (
|
||||||
"{subject_phrase}: {style}. Ages: {age}. Body types: {body}. {item_label}: {item}. "
|
"{subject_phrase}: {style}. Ages: {age}. Body types: {body}. {item_label}: {item}. "
|
||||||
"Scene: {scene}. Pose: {pose}. Facial expressions: {expression}. "
|
"Scene: {scene}. Pose: {pose}. Facial expressions: {expression}. "
|
||||||
"Composition: vertical {composition}. {positive_suffix} Avoid: {negative_prompt}."
|
"Composition: {composition_prompt}. {positive_suffix} Avoid: {negative_prompt}."
|
||||||
)
|
)
|
||||||
|
|
||||||
GROUP_TEMPLATE = (
|
GROUP_TEMPLATE = (
|
||||||
"{subject_phrase}: {style}, ages {age}, diverse adult body types. {item_label}: {item}. "
|
"{subject_phrase}: {style}, ages {age}, diverse adult body types. {item_label}: {item}. "
|
||||||
"Scene: {scene}. Facial expressions: {expression}. Composition: vertical {composition}. "
|
"Scene: {scene}. Facial expressions: {expression}. Composition: {composition_prompt}. "
|
||||||
"{positive_suffix} Avoid: {negative_prompt}."
|
"{positive_suffix} Avoid: {negative_prompt}."
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -1154,6 +1154,16 @@ def _body_phrase(body: Any, figure_note: Any = "") -> str:
|
|||||||
return f"{body} figure with {figure_note}"
|
return f"{body} figure with {figure_note}"
|
||||||
|
|
||||||
|
|
||||||
|
def _composition_prompt(composition: str) -> str:
|
||||||
|
composition = str(composition or "").strip()
|
||||||
|
if not composition:
|
||||||
|
return composition
|
||||||
|
lower = composition.lower()
|
||||||
|
if lower.startswith("vertical ") or " vertical " in lower or lower.endswith(" vertical"):
|
||||||
|
return composition
|
||||||
|
return f"vertical {composition}"
|
||||||
|
|
||||||
|
|
||||||
def _appearance_for_subject(
|
def _appearance_for_subject(
|
||||||
rng: random.Random,
|
rng: random.Random,
|
||||||
subject_type: str,
|
subject_type: str,
|
||||||
@@ -1384,7 +1394,12 @@ def _role_graph(
|
|||||||
man = any_man()
|
man = any_man()
|
||||||
third = any_person({woman, man}) if people_count >= 3 else ""
|
third = any_person({woman, man}) if people_count >= 3 else ""
|
||||||
if "oral" in slug:
|
if "oral" in slug:
|
||||||
graph = f"{woman} gives oral to {man} while {man} holds her hair and hips."
|
if "sixty-nine" in item_text or ("blowjob" in item_text and ("cunnilingus" in item_text or "pussy" in item_text)):
|
||||||
|
graph = f"{woman} and {man} are in mutual oral contact with mouth-to-genital contact visible."
|
||||||
|
elif any(term in item_text for term in ("cunnilingus", "pussy licking", "tongue on pussy", "mouth on pussy")):
|
||||||
|
graph = f"{man} gives oral to {woman} while {woman}'s thighs are held open for the camera."
|
||||||
|
else:
|
||||||
|
graph = f"{woman} gives oral to {man} while {man} holds her hair and hips."
|
||||||
elif "anal" in slug or "double" in slug:
|
elif "anal" in slug or "double" in slug:
|
||||||
if "double" in item_text or "toy" in item_text:
|
if "double" in item_text or "toy" in item_text:
|
||||||
if people_count >= 3:
|
if people_count >= 3:
|
||||||
@@ -1794,6 +1809,7 @@ def _build_custom_row(
|
|||||||
"expression": expression,
|
"expression": expression,
|
||||||
"expression_intensity": expression_intensity,
|
"expression_intensity": expression_intensity,
|
||||||
"composition": composition,
|
"composition": composition,
|
||||||
|
"composition_prompt": _composition_prompt(composition),
|
||||||
"role_graph": role_graph,
|
"role_graph": role_graph,
|
||||||
"positive_suffix": positive_suffix,
|
"positive_suffix": positive_suffix,
|
||||||
"negative_prompt": negative_prompt,
|
"negative_prompt": negative_prompt,
|
||||||
|
|||||||
Reference in New Issue
Block a user