Spaces:
Running
Running
Update app.py
Browse files
app.py
CHANGED
@@ -811,7 +811,7 @@ def crear_video(prompt_type, input_text, musica_file=None):
|
|
811 |
logger.warning(f"No se pudo eliminar directorio temporal {temp_dir_intermediate}: {str(e)}")
|
812 |
|
813 |
def run_app(prompt_type, prompt_ia, prompt_manual, musica_file):
|
814 |
-
logger.info("="*80)
|
815 |
logger.info("SOLICITUD RECIBIDA EN INTERFAZ")
|
816 |
|
817 |
input_text = prompt_ia if prompt_type == "Generar Guion con IA" else prompt_manual
|
@@ -855,43 +855,44 @@ def run_app(prompt_type, prompt_ia, prompt_manual, musica_file):
|
|
855 |
finally:
|
856 |
logger.info("Fin del handler run_app.")
|
857 |
return output_video, output_file, status_msg
|
858 |
-
|
859 |
-
|
860 |
-
|
861 |
-
|
862 |
-
|
863 |
-
|
864 |
-
|
865 |
-
|
866 |
-
|
867 |
-
|
868 |
-
|
869 |
-
|
870 |
-
|
871 |
-
|
872 |
-
|
873 |
-
|
874 |
-
|
875 |
-
|
876 |
-
|
877 |
-
|
878 |
-
|
879 |
-
|
880 |
-
|
881 |
-
|
882 |
-
|
|
|
883 |
|
884 |
prompt_type.change(
|
885 |
lambda x: (gr.update(visible=x == "Generar Guion con IA"),
|
886 |
-
|
887 |
inputs=prompt_type,
|
888 |
outputs=[ia_guion_column, manual_guion_column]
|
889 |
)
|
890 |
|
891 |
generate_btn.click(
|
892 |
lambda: (
|
893 |
-
None,
|
894 |
-
None,
|
895 |
gr.update(value="⏳ Procesando... Esto puede tomar varios minutos.", interactive=False),
|
896 |
gr.update(visible=True, value=0)
|
897 |
),
|
@@ -909,47 +910,10 @@ def run_app(prompt_type, prompt_ia, prompt_manual, musica_file):
|
|
909 |
gr.Markdown("### Instrucciones:")
|
910 |
gr.Markdown("""
|
911 |
1. **Clave API de Pexels:** Asegúrate de haber configurado la variable de entorno `PEXELS_API_KEY` con tu clave.
|
912 |
-
2. Para usar tu propio guion: Selecciona "Usar Mi Guion" y escribe tu texto completo
|
913 |
-
3. Para generar guion automático: Selecciona "Generar Guion con IA" y escribe un tema breve
|
914 |
-
4. Opcional: Sube un archivo de audio para música de fondo
|
915 |
-
5. Haz clic en "Generar Video" y espera el resultado (puede tardar varios minutos)
|
916 |
""")
|
917 |
gr.Markdown("---")
|
918 |
-
gr
|
919 |
-
|
920 |
-
if __name__ == "__main__":
|
921 |
-
logger.info("Verificando dependencias críticas...")
|
922 |
-
try:
|
923 |
-
from moviepy.editor import ColorClip
|
924 |
-
try:
|
925 |
-
temp_clip = ColorClip((100,100), color=(255,0,0), duration=0.1)
|
926 |
-
temp_clip.close()
|
927 |
-
logger.info("Clips base de MoviePy (como ColorClip) creados y cerrados exitosamente. FFmpeg parece accesible.")
|
928 |
-
except Exception as e:
|
929 |
-
logger.critical(f"Fallo al crear clip base de MoviePy. A menudo indica problemas con FFmpeg/ImageMagick. Error: {e}", exc_info=True)
|
930 |
-
|
931 |
-
except Exception as e:
|
932 |
-
logger.critical(f"Fallo al importar MoviePy. Asegúrate de que está instalado. Error: {e}", exc_info=True)
|
933 |
-
|
934 |
-
logger.info("Iniciando aplicación Gradio...")
|
935 |
-
try:
|
936 |
-
app.queue(
|
937 |
-
concurrency_count=1,
|
938 |
-
max_size=3,
|
939 |
-
api_open=False
|
940 |
-
).launch(
|
941 |
-
debug=True,
|
942 |
-
share=True,
|
943 |
-
server_name="0.0.0.0",
|
944 |
-
server_port=7860,
|
945 |
-
show_error=True,
|
946 |
-
prevent_thread_lock=True,
|
947 |
-
enable_queue=True,
|
948 |
-
inline=False,
|
949 |
-
auth=None,
|
950 |
-
auth_message=None,
|
951 |
-
show_tips=False
|
952 |
-
)
|
953 |
-
except Exception as e:
|
954 |
-
logger.critical(f"No se pudo iniciar la app: {str(e)}", exc_info=True)
|
955 |
-
raise
|
|
|
811 |
logger.warning(f"No se pudo eliminar directorio temporal {temp_dir_intermediate}: {str(e)}")
|
812 |
|
813 |
def run_app(prompt_type, prompt_ia, prompt_manual, musica_file):
|
814 |
+
logger.info("=" * 80)
|
815 |
logger.info("SOLICITUD RECIBIDA EN INTERFAZ")
|
816 |
|
817 |
input_text = prompt_ia if prompt_type == "Generar Guion con IA" else prompt_manual
|
|
|
855 |
finally:
|
856 |
logger.info("Fin del handler run_app.")
|
857 |
return output_video, output_file, status_msg
|
858 |
+
|
859 |
+
with gr.Column():
|
860 |
+
video_output = gr.Video(
|
861 |
+
label="Previsualización del Video Generado",
|
862 |
+
interactive=False,
|
863 |
+
height=400
|
864 |
+
)
|
865 |
+
file_output = gr.File(
|
866 |
+
label="Descargar Archivo de Video",
|
867 |
+
interactive=False,
|
868 |
+
visible=False
|
869 |
+
)
|
870 |
+
status_output = gr.Textbox(
|
871 |
+
label="Estado",
|
872 |
+
interactive=False,
|
873 |
+
show_label=False,
|
874 |
+
placeholder="Esperando acción...",
|
875 |
+
value="Esperando entrada..."
|
876 |
+
)
|
877 |
+
progress_bar = gr.Slider(
|
878 |
+
visible=False,
|
879 |
+
interactive=False,
|
880 |
+
label="Progreso",
|
881 |
+
minimum=0,
|
882 |
+
maximum=100
|
883 |
+
)
|
884 |
|
885 |
prompt_type.change(
|
886 |
lambda x: (gr.update(visible=x == "Generar Guion con IA"),
|
887 |
+
gr.update(visible=x == "Usar Mi Guion")),
|
888 |
inputs=prompt_type,
|
889 |
outputs=[ia_guion_column, manual_guion_column]
|
890 |
)
|
891 |
|
892 |
generate_btn.click(
|
893 |
lambda: (
|
894 |
+
None,
|
895 |
+
None,
|
896 |
gr.update(value="⏳ Procesando... Esto puede tomar varios minutos.", interactive=False),
|
897 |
gr.update(visible=True, value=0)
|
898 |
),
|
|
|
910 |
gr.Markdown("### Instrucciones:")
|
911 |
gr.Markdown("""
|
912 |
1. **Clave API de Pexels:** Asegúrate de haber configurado la variable de entorno `PEXELS_API_KEY` con tu clave.
|
913 |
+
2. Para usar tu propio guion: Selecciona "Usar Mi Guion" y escribe tu texto completo.
|
914 |
+
3. Para generar guion automático: Selecciona "Generar Guion con IA" y escribe un tema breve.
|
915 |
+
4. Opcional: Sube un archivo de audio para música de fondo.
|
916 |
+
5. Haz clic en "Generar Video" y espera el resultado (puede tardar varios minutos).
|
917 |
""")
|
918 |
gr.Markdown("---")
|
919 |
+
gr
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|