VeuReu commited on
Commit
19c3f93
·
1 Parent(s): 3267660

Upload app.py

Browse files
Files changed (1) hide show
  1. app.py +48 -10
app.py CHANGED
@@ -669,6 +669,25 @@ if page == "Processar vídeo nou":
669
  else:
670
  log(f" - NO s'ha actualitzat la descripció (ja existia)")
671
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
672
  # Usar key sin value= (Streamlit enlaza automáticamente con session_state)
673
  st.text_input("Nom del clúster", key=name_key)
674
  st.text_area("Descripció", key=desc_key, height=80)
@@ -693,17 +712,17 @@ if page == "Processar vídeo nou":
693
  # Llamar a svision
694
  desc, name = describe_image_with_svision(tmp_path, is_face=True)
695
 
696
- # Actualizar session_state con la descripción
697
  if desc:
698
- st.session_state[desc_key] = desc
699
  log(f"[SVISION] Descripció generada per {ch.get('id', 'unknown')}: {desc[:100]}")
700
  st.success("✅ Descripció generada!")
701
  else:
702
  st.warning("⚠️ No s'ha pogut generar una descripció.")
703
 
704
- # Si se generó un nombre, también actualizarlo
705
- if name and not st.session_state.get(name_key):
706
- st.session_state[name_key] = name
707
  log(f"[SVISION] Nom generat per {ch.get('id', 'unknown')}: {name}")
708
 
709
  # Limpiar archivo temporal
@@ -892,6 +911,25 @@ if page == "Processar vídeo nou":
892
  elif desc_key not in st.session_state:
893
  st.session_state[desc_key] = default_scene_desc or ""
894
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
895
  # Usar key sin value= (Streamlit enlaza automáticamente con session_state)
896
  st.text_input("Nom del clúster", key=name_key)
897
  st.text_area("Descripció", key=desc_key, height=80)
@@ -916,17 +954,17 @@ if page == "Processar vídeo nou":
916
  # Llamar a svision (is_face=False para escenas)
917
  desc, name = describe_image_with_svision(tmp_path, is_face=False)
918
 
919
- # Actualizar session_state con la descripción
920
  if desc:
921
- st.session_state[desc_key] = desc
922
  log(f"[SVISION] Descripció d'escena generada per {sc.get('id', 'unknown')}: {desc[:100]}")
923
  st.success("✅ Descripció generada!")
924
  else:
925
  st.warning("⚠️ No s'ha pogut generar una descripció.")
926
 
927
- # Si se generó un nombre, también actualizarlo
928
- if name and not st.session_state.get(name_key):
929
- st.session_state[name_key] = name
930
  log(f"[SVISION] Nom d'escena generat per {sc.get('id', 'unknown')}: {name}")
931
 
932
  # Limpiar archivo temporal
 
669
  else:
670
  log(f" - NO s'ha actualitzat la descripció (ja existia)")
671
 
672
+ # Detectar si hay un resultado pendiente de svision y aplicarlo ANTES de renderizar
673
+ pending_desc_key = f"{key_prefix}_pending_desc"
674
+ pending_name_key = f"{key_prefix}_pending_name"
675
+ if pending_desc_key in st.session_state:
676
+ if desc_key not in st.session_state:
677
+ st.session_state[desc_key] = ""
678
+ # Aplicar el valor pendiente
679
+ st.session_state[desc_key] = st.session_state[pending_desc_key]
680
+ del st.session_state[pending_desc_key]
681
+ log(f"[SVISION] Aplicat descripció pendent per {ch.get('id', 'unknown')}")
682
+
683
+ if pending_name_key in st.session_state:
684
+ if name_key not in st.session_state:
685
+ st.session_state[name_key] = ""
686
+ if not st.session_state.get(name_key): # Solo si está vacío
687
+ st.session_state[name_key] = st.session_state[pending_name_key]
688
+ del st.session_state[pending_name_key]
689
+ log(f"[SVISION] Aplicat nom pendent per {ch.get('id', 'unknown')}")
690
+
691
  # Usar key sin value= (Streamlit enlaza automáticamente con session_state)
692
  st.text_input("Nom del clúster", key=name_key)
693
  st.text_area("Descripció", key=desc_key, height=80)
 
712
  # Llamar a svision
713
  desc, name = describe_image_with_svision(tmp_path, is_face=True)
714
 
715
+ # Guardar en keys temporales para aplicar en el siguiente render
716
  if desc:
717
+ st.session_state[pending_desc_key] = desc
718
  log(f"[SVISION] Descripció generada per {ch.get('id', 'unknown')}: {desc[:100]}")
719
  st.success("✅ Descripció generada!")
720
  else:
721
  st.warning("⚠️ No s'ha pogut generar una descripció.")
722
 
723
+ # Si se generó un nombre, también guardarlo
724
+ if name:
725
+ st.session_state[pending_name_key] = name
726
  log(f"[SVISION] Nom generat per {ch.get('id', 'unknown')}: {name}")
727
 
728
  # Limpiar archivo temporal
 
911
  elif desc_key not in st.session_state:
912
  st.session_state[desc_key] = default_scene_desc or ""
913
 
914
+ # Detectar si hay un resultado pendiente de svision y aplicarlo ANTES de renderizar
915
+ pending_desc_key = f"{key_prefix}_pending_desc"
916
+ pending_name_key = f"{key_prefix}_pending_name"
917
+ if pending_desc_key in st.session_state:
918
+ if desc_key not in st.session_state:
919
+ st.session_state[desc_key] = ""
920
+ # Aplicar el valor pendiente
921
+ st.session_state[desc_key] = st.session_state[pending_desc_key]
922
+ del st.session_state[pending_desc_key]
923
+ log(f"[SVISION] Aplicat descripció pendent per escena {sc.get('id', 'unknown')}")
924
+
925
+ if pending_name_key in st.session_state:
926
+ if name_key not in st.session_state:
927
+ st.session_state[name_key] = ""
928
+ if not st.session_state.get(name_key): # Solo si está vacío
929
+ st.session_state[name_key] = st.session_state[pending_name_key]
930
+ del st.session_state[pending_name_key]
931
+ log(f"[SVISION] Aplicat nom pendent per escena {sc.get('id', 'unknown')}")
932
+
933
  # Usar key sin value= (Streamlit enlaza automáticamente con session_state)
934
  st.text_input("Nom del clúster", key=name_key)
935
  st.text_area("Descripció", key=desc_key, height=80)
 
954
  # Llamar a svision (is_face=False para escenas)
955
  desc, name = describe_image_with_svision(tmp_path, is_face=False)
956
 
957
+ # Guardar en keys temporales para aplicar en el siguiente render
958
  if desc:
959
+ st.session_state[pending_desc_key] = desc
960
  log(f"[SVISION] Descripció d'escena generada per {sc.get('id', 'unknown')}: {desc[:100]}")
961
  st.success("✅ Descripció generada!")
962
  else:
963
  st.warning("⚠️ No s'ha pogut generar una descripció.")
964
 
965
+ # Si se generó un nombre, también guardarlo
966
+ if name:
967
+ st.session_state[pending_name_key] = name
968
  log(f"[SVISION] Nom d'escena generat per {sc.get('id', 'unknown')}: {name}")
969
 
970
  # Limpiar archivo temporal