import entrada
import procesador_txt
import train_model
import guardar_datos

def main():
    try:
        # 1. Introduce y guarda noticias
        print("Iniciando el proceso de introducción y guardado de noticias...")
        entrada.main()
        
    except FileNotFoundError:
        print("Error: No se encontró el archivo especificado durante la introducción de noticias.")
        return
    except Exception as e:
        print(f"Error inesperado durante la introducción de noticias: {e}")
        return

    try:
        # 2. Procesa y tokeniza las noticias
        print("Iniciando el proceso de tokenización de noticias...")
        procesador_txt.main()  # Asegúrate de que esta función exista en tu script procesador_txt.py
        
    except FileNotFoundError:
        print("Error: No se encontró el archivo especificado durante la tokenización de noticias.")
        return
    except Exception as e:
        print(f"Error inesperado durante la tokenización de noticias: {e}")
        return

    try:
        # 3. Entrena el modelo
        print("Iniciando el proceso de entrenamiento del modelo...")
        train_model.main()  # Asegúrate de que esta función exista en tu script train_model.py
        
    except ValueError:
        print("Error: Hay un problema con los datos utilizados para entrenar el modelo.")
        return
    except Exception as e:
        print(f"Error inesperado durante el entrenamiento del modelo: {e}")
        return

    try:
        # 4. Guarda datos en Elasticsearch
        print("Iniciando el proceso de guardado de datos en Elasticsearch...")
        guardar_datos.main()  # Asegúrate de que esta función exista en tu script guardar_datos.py
        
    except ConnectionError:
        print("Error: No se pudo conectar a Elasticsearch. Asegúrate de que el servicio esté ejecutándose y de que las credenciales sean correctas.")
        return
    except Exception as e:
        print(f"Error inesperado durante el guardado de datos en Elasticsearch: {e}")
        return

    print("Todos los procesos han sido completados exitosamente.")

if __name__ == "__main__":
    main()
