#!/usr/bin/env python3 import gradio as gr import random from typing import List, Optional, Tuple, Dict, Any class UltimateSensualPromptGenerator: """Complete prompt generator for sensual fashion with all enriched elements.""" DATA: Dict[str, Any] = { "lingerie": { "bra_styles": ( "a light and transparent lace bra", "a sheer balcony bra with delicate lace details", "a push-up bra with intricate lace overlay", "an unlined lace bralette", "a seamless sheer bra with minimalist design", "a silk and lace demi-cup bra", "a satin underwire bra with lace trim", "a mesh plunge bra with decorative stitching", "a convertible strapless bra with lace details", "a velvet contour bra with delicate embroidery" ), "panties_types": ( "a lace thong", "a silk cheeky", "a satin bikini", "a mesh hipster", "a velvet boyshort", "a sheer Brazilian", "a lace-trimmed brief", "a high-waisted panty", "a string bikini", "a tanga with lace details" ), "thong_colors": ( "black", "red", "white", "cream", "burgundy", "champagne", "dark blue", "deep purple", "silver", "gold", "pink", "navy", "emerald green", "ruby red", "sapphire blue", "amethyst purple", "ivory", "charcoal gray", "deep magenta", "forest green" ), "thigh_high_stockings": ( "thigh-high silk stockings with perfect details", "sheer black stockings with a delicate lace top", "seamless nude hosiery with perfect details", "fishnet tights that reach her thighs", "back-seam stockings with a lace garter", "patterned stockings with lace tops", "over-the-knee socks with lace trim", "sheer-to-waist stockings with decorative back seams", "stay-up stockings with silicone bands", "fully fashioned stockings with reinforced heels" ), "garter_belts": ( "a black lace garter belt", "a satin and lace garter belt", "a strappy leather-look garter", "a delicate silk garter belt", "a decorative harness garter", "a vintage-style garter belt", "a minimalist elastic garter", "a luxurious velvet garter belt", "a intricate mesh garter belt", "a satin ribbon garter belt" ), "bodysuits_teddies": ( "a lace bodysuit with snap closure", "a satin teddy with lace trim", "a mesh bodysuit with cut-out details", "a silk chemise with thin straps", "a velvet bodysuit with plunging neckline", "a babydoll style with lace details", "a longline lace bodysuit", "a open-bust teddy with garter straps", "a basque with underwire support", "a camisole and tap pants set" ) }, "outfit": { "secretary_dress": ( "a tight elastic short dress helping to appreciate transparent inner layers revealing delicate lingerie without riding up", "a form-fitting pencil dress with a side slit", "a wrap dress that subtly reveals lingerie beneath", "a bodycon dress that hugs every curve", "a fit-and-flare dress with a flirtatious hemline" ), "secretary_skirt": ( "a miniskirt paired with a semi-transparent blouse, elegantly revealing her outfit beneath", "a high-waisted pencil skirt with a tucked-in blouse", "a pleated mini skirt with a silk camisole", "a bodycon skirt with a sheer top", "a leather-look skirt with a delicate blouse" ), "evening_dresses": ( "a slinky satin evening gown with a thigh-high slit", "a sequined cocktail dress that sparkles under lights", "a velvet gown with a plunging back", "a chiffon dress with delicate layers", "a body-hugging mermaid style gown" ), "casual_outfits": ( "high-waisted jeans with a crop top", "leather pants with a silk blouse", "a sweater dress with thigh-high boots", "denim shorts with a bralette", "a maxi skirt with a fitted top" ), "high_heels": ( "classic high heels in black patent leather", "elegant red stiletto heels", "sleek nude high heels", "platform high heels", "sparkling silver high heels", "strappy sandals with delicate ankles", "ankle boots with a stiletto heel", "mary jane style heels", "open-toe platform pumps", "designer heels with unique details" ), "boots": ( "thigh-high leather boots", "suede over-the-knee boots", "combat boots with a feminine touch", "elegant ankle boots", "platform boots with a chunky heel" ) }, "model_attributes": { "body_types": ( "voluptuous curves", "slender frame", "athletic build", "hourglass figure", "petite stature", "statuesque height", "soft curves", "toned physique" ), "hair_styles": ( "long elegant hairstyle with a refined arrangement", "sleek straight long hair", "soft voluminous curls", "a classic updo", "a messy bun", "a sophisticated chignon", "long flowing hair that frames her face sensually", "elegant waves that cascade over her shoulders seductively", "sleek hairstyle that accentuates her neck and features", "voluminous curls that enhance her sensual appearance", "sophisticated updo that highlights her facial features alluringly", "a half-up, half-down style with face-framing tendrils", "a braided crown with loose waves", "a sleek low ponytail", "beachy waves with texture" ), "hair_colors": ( "chestnut brown with vibrant highlights", "platinum blonde", "deep raven black", "auburn red", "honey blonde", "strawberry blonde", "ash blonde", "vibrant blue hair", "burgundy with subtle lowlights", "caramel balayage", "silver gray", "rose gold", "pastel pink", "multicolored rainbow", "jet black with blue undertones" ), "makeup_styles": ( "perfect professional makeup with subtle contouring and elegant lipstick", "natural-looking makeup enhancing her features with soft tones", "classic smoky eyes with nude lips", "bold red lipstick with minimalist eye makeup", "glittery eyeshadow with glossy lips", "flawless makeup with sensual emphasis on her lips and eyes", "perfectly contoured makeup that enhances her natural features seductively", "smokey eye makeup with glossy lips that express desire", "dewy complexion with accentuated features that radiate lust", "professional makeup with sensual emphasis that enhances her allure", "a bold winged eyeliner with neutral lips", "a cut-crease eyeshadow look with false lashes", "a monochromatic makeup look", "a glossy lid with highlighted cheekbones", "a graphic eyeliner look with bare lips" ), "nails": ( "perfectly manicured nails with a classic red polish", "long stiletto nails with intricate designs", "short natural nails with a glossy finish", "almond-shaped nails with French tips", "coffin nails with glitter accents", "ombré nails with delicate patterns", "matte black nails with chrome accents", "jewel-encrusted nails", "minimalist nude nails", "bold geometric nail art" ) }, "scenarios": { "expressions": ( "with a seductive glance towards the viewer", "smiling coyly while maintaining eye contact", "looking over her shoulder with desire", "biting her lip subtly with pleasure", "with a knowing smile that invites curiosity", "maintaining intense eye contact with the spectator", "a playful wink", "a mischievous grin", "a serious yet alluring gaze", "looking directly at the viewer with intense desire and lust in her eyes", "gazing seductively at the camera with passionate expression", "maintaining eye contact with the viewer with unmistakable desire", "looking passionately at the spectator with sensual intensity", "directing a lustful gaze toward the viewer with undeniable attraction", "parted lips with a hint of anticipation", "a smoldering look that promises intimacy", "a shy glance that turns into a confident stare", "a teasing smile that suggests secrets", "a commanding gaze that demands attention", "a dreamy expression lost in thought" ), "poses": ( "leaning forward to emphasize her cleavage", "arching her back to highlight her curves", "running fingers through her hair seductively", "touching her neck or collarbone suggestively", "stretching languidly to show off her form", "looking back over her shoulder", "bending slightly to create appealing lines", "posing with one leg slightly bent", "holding onto a prop or piece of furniture", "playing with the hem of her clothing" ), "office_secretary": ( "standing next to a desk, adjusting an executive mini skirt in a 'careless' way hinting at a thong, direct seductive gaze with pleasure, nadir angle from the ground", "sitting on an office table, legs accidentally ajar and mini skirt rising showing the thong, ecstatic seductive face, camera on the floor with contrapicado angle", "leaning to file documents, mini skirt sliding voyeuristically revealing the thong, intense gaze with an open mouth of pleasure, nadir angle", "leaning against a wall, executive mini skirt lifted by 'accident' hinting at the thong, defiant gaze with a look of ecstasy, contrapicado angle", "sitting in a swivel chair, crossing legs and letting the thong show carelessly under the mini skirt, seductive expression of pleasure, full frame with nadir perspective", "dancing discreetly in the office, mini skirt lifts unintentionally revealing the thong, seductive gaze with climax, camera on the ground with contrapicado angle", "delivering reports, leaning forward with the mini skirt rising voyeuristically showing the thong, playful gaze with ecstasy, nadir angle", "reclining on a desk, a bent leg lifting the mini skirt carelessly and revealing the thong, seductive face with pleasure, full frame contrapicado", "crouching to pick up papers, mini skirt accidentally risen showing the thong, fiery gaze with an open mouth of pleasure, nadir angle, camera on the floor", "organizing a bookshelf, mini skirt lifted voyeuristically showing the thong, direct gaze with ecstasy, elegant straight hairstyle, contrapicado angle" ), "schoolgirl_uniform": ( "standing in a classroom, slightly lifting the schoolgirl skirt in 'carelessness' to show the thong, direct seductive gaze with pleasure, nadir angle", "sitting at a desk, legs accidentally open revealing the thong under the skirt, ecstatic seductive expression, camera on the floor with contrapicado angle", "crouching to pick up school supplies, skirt lifted voyeuristically and the thong visible, intense gaze with an open mouth of pleasure, full frame nadir angle", "leaning against a hallway wall, skirt unintentionally lifted hinting at the thong, defiant gaze with ecstasy, contrapicado angle", "with back to camera in a line, turning head with the skirt lifted carelessly showing the thong, seductive expression of pleasure, camera on the ground nadir angle", "sitting on a classroom table, crossed legs accidentally sliding showing the thong, playful gaze with ecstasy, full frame contrapicado", "dancing at a school party, skirt lifts up voyeuristically showing the thong, seductive gaze with climax, nadir angle", "climbing school stairs, skirt rises unintentionally showing the thong, head turned with a look of pleasure, camera on the floor contrapicado", "reclining on a desk, a bent leg lifting the skirt carelessly and revealing the thong, seductive face with pleasure, full frame nadir angle", "crouching, skirt accidentally lifted revealing the thong, fiery gaze with an open mouth of pleasure, nadir angle" ), "mini_skirt_lingerie": ( "standing, wind simulating carelessness slightly lifts the black pleated silk mini skirt revealing the red lace thong, direct seductive gaze at the viewer with eyes squinted in pleasure, nadir angle from the ground occupying the entire frame", "sitting on the edge of the bed, legs opened by 'accident' revealing the thong under the mini skirt, ecstatic expression with half-open lips reflecting extreme pleasure, contrapicado angle camera on the ground", "crouching to pick something up from the ground, mini skirt lifted in carelessness showing the thong, intense seductive gaze with an open mouth of pleasure, nadir angle from the floor occupying the entire frame", "leaning against the wall, mini skirt lifted by 'carelessness' hinting at the thong, defiant gaze with a look of pleasure, contrapicado camera on the ground", "walking down the street, a gust of wind lifts her mini skirt revealing delicate lingerie beneath, surprised but pleased expression", "getting out of a car, her mini skirt rides up revealing her thigh-high stockings and garter belt, playful glance at the viewer", "dancing at a club, the movement causes her mini skirt to flare up showing her lingerie, ecstatic expression with closed eyes", "sitting on a bar stool, the height and position accidentally reveal her underwear, seductive smile directed at the viewer", "bending to pet a dog, her mini skirt rises in the back showing her thong, innocent expression with knowing eyes", "running for the bus, her mini skirt flying up to reveal matching lingerie set, breathless but pleased expression" ), "boudoir_scenes": ( "laying on a satin sheets-covered bed in a luxurious bedroom, wearing only delicate lingerie, propped up on elbows with a inviting smile", "sitting at a vanity table wearing a silk robe that has fallen open to reveal matching lingerie, applying lipstick while looking at her reflection", "leaning against a canopy bed frame wearing a garter belt and stockings with a matching bra, running fingers through her hair seductively", "kneeling on an ornate rug in front of a fireplace wearing a lace bodysuit, warming her hands with a playful glance over her shoulder", "standing in front of floor-length mirrors in a dressing room wearing various pieces of lingerie, admiring her reflection with confidence" ), "beach_swimwear": ( "emerging from the ocean waves in a revealing bikini, water streaming down her body, pushing wet hair back from her face", "lying on a beach towel in a string bikini, propped up on elbows with sunglasses pushed up on her head", "applying sunscreen while wearing a high-cut one-piece, stretching to reach her back with a playful expression", "walking along the shoreline at sunset in a mesh cover-up that reveals her swimsuit beneath, silhouette against the colorful sky", "sitting on a paddleboard in the middle of a calm lake wearing a sporty bikini, dipping fingers in the water with a serene expression" ), "activities": ( "bending over to pick up dropped documents", "reaching for a high shelf", "sitting cross-legged at her desk", "stretching after long hours of work", "leaning forward to hand over files", "adjusting her stockings discreetly", "getting up from her chair gracefully", "answering a phone call with a hand resting on her thigh", "typing intently on a vintage typewriter", "walking confidently towards the camera" ), "locations": ( "in a luxurious penthouse apartment with floor-to-ceiling windows", "in a sophisticated office with mahogany furniture", "in an elegant hotel suite with city views", "in a private library with leather-bound books", "in a rooftop garden with twinkling lights", "in an art deco bathroom with marble surfaces", "in a walk-in closet with organized designer clothes", "in a vintage dressing room with multiple mirrors", "on a private jet with luxurious furnishings", "on a yacht deck with ocean views" ) }, "technical_composition": { "quality_tags": ( "(masterpiece, best quality:1.4), Ultra HD 16K (15360 × 8640), 8K, highest resolution, " "photorealistic, hyperdetailed, intricate details, sharp focus, professional photography" ), "cameras": ( "Canon EOS R5 Cine RAW camera", "Sony Alpha 1 with G Master lens", "Hasselblad X1D II 50C medium format", "RED Komodo 6K cinema camera", "Nikon Z9 with NIKKOR Z lens", "Phase One XF IQ4 150MP" ), "lenses": ( "Canon RF 85mm f/1.2L USM lens", "Sony FE 50mm f/1.2 GM lens", "Hasselblad XCD 80mm f/1.9 lens", "Sigma Art 35mm f/1.4 DG HSM lens", "NIKKOR Z 58mm f/0.95 S Noct lens", "Zeiss Otus 55mm f/1.4 lens" ), "lighting": ( "ARRI SkyPanel S360-C panel providing soft, professional light", "Godox AD600Pro with large octabox for soft, even lighting", "Profoto B10 Plus with strip softbox for edge lighting", "Nanlite Forza 500 with parabolic softbox for dramatic lighting", "Aputure 300D with Light Dome II for soft shadows", "Broncolor Siros L 800 with softlight reflector" ), "angles": ( "low-angle frontal perspective", "nadir (from below looking up) angle", "contrapicado (slightly tilted low angle) perspective", "eye-level intimate perspective", "high angle looking down", "Dutch angle for dynamic composition" ), "framing": ( "full-length portrait occupying the entire frame", "medium shot from knees to head", "close-up on face and upper body", "extreme close-up on specific details", "environmental portrait showing location", "full body with negative space" ), "editing": ( "expertly color graded in DaVinci Resolve with a cinematic touch", "perfect depth of field with creamy bokeh", "professional retouching that maintains skin texture", "subtle vignette to draw focus to the subject", "cinematic color palette with rich tones", "perfect exposure with detailed shadows and highlights" ), "atmosphere": ( "soft, professional lighting without harsh shadows", "dramatic lighting with chiaroscuro effect", "natural sunlight with soft diffusion", "moody atmospheric lighting", "studio lighting with perfect catchlights", "golden hour warmth with long shadows" ) }, "luxury_brands": { "lingerie": ( "La Perla", "Agent Provocateur", "Fleur du Mal", "Victoria's Secret Luxury", "Chantelle Paris", "Aubade", "Simone Pérèle", "Honey Birdette" ), "shoes": ( "Christian Louboutin", "Manolo Blahnik", "Jimmy Choo", "Giuseppe Zanotti", "Stuart Weitzman", "Roger Vivier", "René Caovilla", "Alexandre Birman" ), "fashion": ( "Gucci", "Chanel", "Dior", "Prada", "Versace", "Balmain", "Dolce & Gabbana", "Givenchy", "Fendi", "Bottega Veneta", "Valentino", "Yves Saint Laurent" ) }, "negative_prompt": ( "nsfw, nude, explicit content, deformed, bad anatomy, disfigured, malformed, mutated, " "extra limbs, missing limbs, floating limbs, disconnected limbs, extra fingers, " "missing fingers, extra arms, missing arms, extra legs, missing legs, poorly drawn hands, " "poorly drawn face, mutated hands, fused fingers, too many fingers, long neck, " "blurry, low quality, jpeg artifacts, compression artifacts, poorly lit, overexposed, " "underexposed, dark, pitch black, low contrast, oversaturated, undersaturated, " "cartoon, anime, 3d, render, painting, drawing, sketch, illustration, CGI, " "computer generated, synthetic, video game, graphic novel, comic book, " "child, minor, infant, teenager, underage, young, youth, " "grotesque, ugly, disgusting, unappealing, unattractive, " "poor lighting, harsh shadows, annoying edges, sharp edges, " "vulgar, explicit display, offensive, inappropriate, " "watermark, signature, text, writing, letters, logo, brand, " "border, frame, margin, edge, outline, " "distracting elements, busy background, cluttered, messy, " "out of focus, motion blur, camera shake, lens flare, chromatic aberration" ) } @staticmethod def _choose_random(options: Tuple[str, ...]) -> str: return random.choice(options) def _generate_lingerie_fragment(self) -> str: lingerie = self.DATA["lingerie"] set_type = random.choice(["bra_thong", "bodysuit", "teddy", "garter_set"]) if set_type == "bra_thong": return ( f"{self._choose_random(lingerie['bra_styles'])} and " f"{self._choose_random(lingerie['thong_colors'])} {self._choose_random(lingerie['panties_types'])} with " f"{self._choose_random(lingerie['thigh_high_stockings'])} and " f"{self._choose_random(lingerie['garter_belts'])}" ) elif set_type == "bodysuit": return ( f"{self._choose_random(lingerie['bodysuits_teddies'])} with " f"{self._choose_random(lingerie['thigh_high_stockings'])}" ) else: return ( f"{self._choose_random(lingerie['bodysuits_teddies'])} with " f"{self._choose_random(lingerie['thigh_high_stockings'])} and " f"{self._choose_random(lingerie['garter_belts'])}" ) def _generate_outfit_fragment(self) -> str: outfit = self.DATA["outfit"] outfit_type = random.choice(["secretary", "evening", "casual"]) if outfit_type == "secretary": return ( f"{self._choose_random(outfit['secretary_dress'])} and " f"{self._choose_random(outfit['high_heels'])}" ) elif outfit_type == "evening": return ( f"{self._choose_random(outfit['evening_dresses'])} and " f"{self._choose_random(outfit['high_heels'])}" ) else: return ( f"{self._choose_random(outfit['casual_outfits'])} and " f"{random.choice([self._choose_random(outfit['high_heels']), self._choose_random(outfit['boots'])])}" ) def _generate_model_attributes_fragment(self) -> str: attr = self.DATA["model_attributes"] return ( f"{self._choose_random(attr['body_types'])} with " f"{self._choose_random(attr['hair_styles'])} in " f"{self._choose_random(attr['hair_colors'])} and " f"{self._choose_random(attr['makeup_styles'])}. " f"Her {self._choose_random(attr['nails'])} complete the look" ) def _generate_technical_composition(self) -> str: tech = self.DATA["technical_composition"] return ( f"{self._choose_random(tech['quality_tags'])}. " f"Captured with {self._choose_random(tech['cameras'])} and " f"{self._choose_random(tech['lenses'])}, using " f"{self._choose_random(tech['lighting'])}. " f"{self._choose_random(tech['angles'])} with " f"{self._choose_random(tech['framing'])}. " f"{self._choose_random(tech['editing'])}. " f"The scene features {self._choose_random(tech['atmosphere'])}. " f"(BATUTO-ART watermark:0.4)" ) def _select_scenario(self, category: Optional[str] = None) -> str: if category and category in self.DATA["scenarios"]: return self._choose_random(self.DATA["scenarios"][category]) else: all_scenarios = [] for cat in self.DATA["scenarios"].values(): if isinstance(cat, tuple): all_scenarios.extend(cat) return self._choose_random(tuple(all_scenarios)) def _add_luxury_brands(self) -> str: brands = self.DATA["luxury_brands"] brand_type = random.choice(["lingerie", "shoes", "fashion"]) brand = self._choose_random(brands[brand_type]) if brand_type == "lingerie": return f"wearing {brand} delicate lingerie" elif brand_type == "shoes": return f"wearing {brand} designer heels" else: return f"wearing a {brand} outfit" def generate_prompt(self, celebrity_name: str, scenario_category: Optional[str] = None) -> str: if not celebrity_name.strip(): return "⚠️ Please enter a celebrity name to generate prompts." expression = self._choose_random(self.DATA["scenarios"]["expressions"]) pose = self._choose_random(self.DATA["scenarios"]["poses"]) location = self._choose_random(self.DATA["scenarios"]["locations"]) lingerie_fragment = self._generate_lingerie_fragment() outfit_fragment = self._generate_outfit_fragment() model_attributes_fragment = self._generate_model_attributes_fragment() luxury_brand = self._add_luxury_brands() scenario = self._select_scenario(scenario_category) technical_desc = self._generate_technical_composition() negative_prompt = self.DATA["negative_prompt"] focus = random.choice(["lingerie", "outfit"]) if focus == "lingerie": clothing_description = f"{lingerie_fragment}" else: clothing_description = f"{outfit_fragment} that subtly reveals {lingerie_fragment} beneath" prompt = ( f"The renowned celebrity {celebrity_name} is captured in a professional photograph " f"that conveys natural sensuality and elegance. {expression}, {pose} " f"with {model_attributes_fragment}. She is {luxury_brand} and {clothing_description}. " f"Scene: {scenario} {location}. " f"{technical_desc}" ) return f"{prompt} | Negative prompt: {negative_prompt}" def generate_multiple_prompts(self, celebrity_name: str, scenario_category: Optional[str] = None, count: int = 5) -> List[str]: if not celebrity_name.strip(): return ["⚠️ Please enter a celebrity name to generate prompts."] * count return [self.generate_prompt(celebrity_name, scenario_category) for _ in range(count)] def build_gradio_app(): generator = UltimateSensualPromptGenerator() title_html = """

🐾 MAXIM BatutoArt 🐾

Ultimate Sensual Fashion Prompt Generator

""" css = """ .gradio-container { background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%); } .container { max-width: 1200px; margin: 0 auto; } .prompt-box { background: white; border-radius: 10px; padding: 15px; margin-bottom: 15px; box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); border-left: 4px solid #6A4C93; } .copy-btn { background: #6A4C93 !important; color: white !important; } .generate-btn { background: linear-gradient(45deg, #FF6B6B, #FF8E53) !important; color: white !important; font-weight: bold !important; } """ with gr.Blocks(theme=gr.themes.Soft(), css=css) as app: gr.HTML(title_html) with gr.Row(): with gr.Column(scale=3): name_input = gr.Textbox( label="Enter Celebrity Name:", placeholder="e.g., Ana de Armas, Margot Robbie, Alexandra Daddario, Emma Stone", interactive=True ) with gr.Column(scale=2): scenario_input = gr.Dropdown( label="Scenario Category (optional):", choices=["All", "office_secretary", "schoolgirl_uniform", "mini_skirt_lingerie", "boudoir_scenes", "beach_swimwear"], value="All", interactive=True ) with gr.Row(): generate_button = gr.Button("✨ Generate 5 Ultimate Prompts", variant="primary", elem_classes="generate-btn") gr.Markdown("### 📝 Generated Prompts") prompt_boxes = [] for i in range(5): with gr.Row(): with gr.Column(scale=8): prompt_txt = gr.Textbox( label=f"Prompt {i+1}", interactive=False, lines=4, max_lines=6, show_copy_button=True, elem_classes="prompt-box" ) with gr.Column(scale=1, min_width=100): copy_btn = gr.Button("📋 Copy", elem_classes="copy-btn") copy_btn.click( fn=None, inputs=[prompt_txt], outputs=None, js="(text) => {navigator.clipboard.writeText(text); alert('Prompt copied to clipboard!')}", ) prompt_boxes.append(prompt_txt) generate_button.click( fn=generator.generate_multiple_prompts, inputs=[name_input, scenario_input], outputs=prompt_boxes ) gr.Markdown("---") gr.Markdown( """

Create stunning AI-generated fashion imagery with detailed prompts

Each prompt includes technical specifications for optimal results

""" ) return app if __name__ == "__main__": app = build_gradio_app() app.launch(share=True)