Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -19,7 +19,6 @@ SAMBA_API_URL = "https://api.sambanova.ai/v1/chat/completions"
|
|
| 19 |
CARPETA_SALIDA = "bat_art_generaciones"
|
| 20 |
os.makedirs(CARPETA_SALIDA, exist_ok=True)
|
| 21 |
|
| 22 |
-
# Claves (usa variables de entorno en producción / Spaces)
|
| 23 |
SAMBA_API_KEY = os.getenv("SAMBA_API_KEY", "")
|
| 24 |
REVE_API_KEY_DEFAULT = os.getenv("REVE_API_KEY", "")
|
| 25 |
|
|
@@ -293,7 +292,7 @@ photorealistic, 16K, Canon EOS R5 + RF 85mm f/1.2, shallow depth of field, visib
|
|
| 293 |
Negative prompt: blurry, deformed, bad anatomy, censored, mosaic censor, bar censor, cartoon, plastic skin, airbrushed, modest pose, covered genitals, dry skin, no pubic hair, symmetrical labia, safe for work"""
|
| 294 |
|
| 295 |
return respuesta, prompt_en
|
| 296 |
-
# ────────────────────────────────────────────────
|
| 297 |
# INTERFAZ GRADIO FINAL
|
| 298 |
# ────────────────────────────────────────────────
|
| 299 |
|
|
@@ -334,14 +333,14 @@ def main():
|
|
| 334 |
# Estado oculto: guarda los 5 prompts COMPLETOS
|
| 335 |
prompts_state = gr.State([]) # Lista de tuplas (full_prompt, caption)
|
| 336 |
|
| 337 |
-
# Galería solo muestra captions cortos
|
| 338 |
prompt_gallery = gr.Gallery(
|
| 339 |
label="Prompts generados – selecciona uno para ver/editar",
|
| 340 |
columns=1, height=380, show_label=False, object_fit="contain"
|
| 341 |
)
|
| 342 |
|
| 343 |
selected_prompt = gr.Textbox(
|
| 344 |
-
label="Prompt seleccionado (versión limpia – el completo va a REVE)",
|
| 345 |
lines=12, max_lines=30, interactive=True,
|
| 346 |
show_copy_button=True, elem_classes="prompt-box"
|
| 347 |
)
|
|
@@ -353,7 +352,8 @@ def main():
|
|
| 353 |
if not name.strip():
|
| 354 |
return [], [], "", ""
|
| 355 |
prompts = generator.generate_five(name.strip(), hardcore=hardcore, use_boudoir_poses=boudoir)
|
| 356 |
-
|
|
|
|
| 357 |
return gallery_items, prompts, prompts[0][0] if prompts else "", prompts[0][0] if prompts else ""
|
| 358 |
|
| 359 |
btn_generate.click(
|
|
@@ -363,7 +363,7 @@ def main():
|
|
| 363 |
)
|
| 364 |
|
| 365 |
def on_select(evt: gr.SelectData, prompts_state):
|
| 366 |
-
if evt.index is None or not prompts_state:
|
| 367 |
return "", ""
|
| 368 |
full_prompt, caption = prompts_state[evt.index]
|
| 369 |
# Versión limpia para mostrar (sin \n excesivos)
|
|
|
|
| 19 |
CARPETA_SALIDA = "bat_art_generaciones"
|
| 20 |
os.makedirs(CARPETA_SALIDA, exist_ok=True)
|
| 21 |
|
|
|
|
| 22 |
SAMBA_API_KEY = os.getenv("SAMBA_API_KEY", "")
|
| 23 |
REVE_API_KEY_DEFAULT = os.getenv("REVE_API_KEY", "")
|
| 24 |
|
|
|
|
| 292 |
Negative prompt: blurry, deformed, bad anatomy, censored, mosaic censor, bar censor, cartoon, plastic skin, airbrushed, modest pose, covered genitals, dry skin, no pubic hair, symmetrical labia, safe for work"""
|
| 293 |
|
| 294 |
return respuesta, prompt_en
|
| 295 |
+
# ────────────────────────────────────────────────
|
| 296 |
# INTERFAZ GRADIO FINAL
|
| 297 |
# ────────────────────────────────────────────────
|
| 298 |
|
|
|
|
| 333 |
# Estado oculto: guarda los 5 prompts COMPLETOS
|
| 334 |
prompts_state = gr.State([]) # Lista de tuplas (full_prompt, caption)
|
| 335 |
|
| 336 |
+
# Galería solo muestra captions cortos (strings simples)
|
| 337 |
prompt_gallery = gr.Gallery(
|
| 338 |
label="Prompts generados – selecciona uno para ver/editar",
|
| 339 |
columns=1, height=380, show_label=False, object_fit="contain"
|
| 340 |
)
|
| 341 |
|
| 342 |
selected_prompt = gr.Textbox(
|
| 343 |
+
label="Prompt seleccionado (versión limpia – el completo va directo a REVE)",
|
| 344 |
lines=12, max_lines=30, interactive=True,
|
| 345 |
show_copy_button=True, elem_classes="prompt-box"
|
| 346 |
)
|
|
|
|
| 352 |
if not name.strip():
|
| 353 |
return [], [], "", ""
|
| 354 |
prompts = generator.generate_five(name.strip(), hardcore=hardcore, use_boudoir_poses=boudoir)
|
| 355 |
+
# Galería recibe SOLO captions (strings, no tuplas)
|
| 356 |
+
gallery_items = [p[1] for p in prompts] # lista de strings
|
| 357 |
return gallery_items, prompts, prompts[0][0] if prompts else "", prompts[0][0] if prompts else ""
|
| 358 |
|
| 359 |
btn_generate.click(
|
|
|
|
| 363 |
)
|
| 364 |
|
| 365 |
def on_select(evt: gr.SelectData, prompts_state):
|
| 366 |
+
if evt.index is None or not prompts_state or evt.index >= len(prompts_state):
|
| 367 |
return "", ""
|
| 368 |
full_prompt, caption = prompts_state[evt.index]
|
| 369 |
# Versión limpia para mostrar (sin \n excesivos)
|