import gradio as gr import random from data import fashion_elements, PhotoReal # ========================================================== # GENERADOR DE PROMPTS PRO++ # ========================================================== def generar_prompts_para_web(nombre_sujeto, cantidad): if not nombre_sujeto or nombre_sujeto.strip() == "": nombre_sujeto = "BATUTO" cantidad = int(cantidad) if cantidad else 5 if cantidad > 20: cantidad = 20 resultados = [] for i in range(cantidad): cuerpo = random.choice(PhotoReal.BODY) rol = random.choice(PhotoReal.ROLES) pelo = random.choice(fashion_elements["hairstyles"]) color = random.choice(fashion_elements["colors"]) revelacion = random.choice(fashion_elements["lingerie_reveal_actions"]) lenceria = random.choice(fashion_elements["lingerie_sets"]) fondo = random.choice(fashion_elements["backgrounds"]) luz = random.choice(fashion_elements["lighting"]) angulo = random.choice(fashion_elements["voyeuristic_angles"]) expresion = random.choice(fashion_elements["expressions"]) prompt = f""" PROMPT #{i+1} Photorealistic portrait of {nombre_sujeto}, {angulo}, {cuerpo}, acting as a {rol['role']} wearing {rol['outfit']} in {color} tones, {pelo}, {expresion}, {revelacion}, subtly showing details of {lenceria}, location {fondo}, {luz}, ultra-detailed skin textures, realistic anatomy, 8k resolution, cinematic lighting, shallow depth of field, sharp focus, professional photography, masterpiece. """.strip() resultados.append(prompt) # Rellenamos hasta 20 para que Gradio no falle while len(resultados) < 20: resultados.append("") return resultados # ========================================================== # INTERFAZ PRO++ # ========================================================== with gr.Blocks(title="๐Ÿ”ฅ BATUTO CREATE PRO++ ๐Ÿ”ฅ") as demo: gr.Markdown( """ # ๐Ÿ”ฅ BATUTO CREATE PRO++ ๐Ÿ”ฅ ### Un prompt = un cuadro = copiar directo Modo profesional activado ๐Ÿ˜ˆ """ ) with gr.Row(): inp_nombre = gr.Textbox( label="Nombre del Sujeto", value="BATUTO" ) inp_cantidad = gr.Slider( minimum=1, maximum=20, value=5, step=1, label="Cantidad de Prompts" ) btn_generar = gr.Button("๐Ÿš€ Generar Prompts PRO++", variant="primary") # ๐Ÿ”ฅ 20 cuadros independientes (cada uno con botรณn copiar) outputs = [] for i in range(20): with gr.Accordion(f"Prompt #{i+1}", open=i < 5): code = gr.Code( label=f"Prompt #{i+1}", language="markdown" ) outputs.append(code) btn_generar.click( fn=generar_prompts_para_web, inputs=[inp_nombre, inp_cantidad], outputs=outputs ) if __name__ == "__main__": demo.launch()