Spaces:
Sleeping
Sleeping
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|