import os
import json
import re

cadena_a_buscar = ['be:', 'bridge:']
cadena_a_reemplazar = 'betterend:'

# Función recursiva para buscar y reemplazar los strings
def buscar_y_reemplazar(objeto):
    if isinstance(objeto, dict):
        # Si el objeto es un diccionario, buscar en cada clave y valor recursivamente
        nuevo_objeto = {}
        for clave, valor in objeto.items():
            nueva_clave = buscar_y_reemplazar(clave)
            nuevo_objeto[nueva_clave] = buscar_y_reemplazar(valor)
        return nuevo_objeto
    elif isinstance(objeto, list):
        # Si el objeto es una lista, buscar en cada elemento recursivamente
        return [buscar_y_reemplazar(elemento) for elemento in objeto]
    elif isinstance(objeto, str):
        # Si el objeto es un string, reemplazar la cadena a buscar por la cadena a reemplazar
        patron = '|'.join(cadena_a_buscar)
        return re.sub(patron, cadena_a_reemplazar, objeto)
    else:
        # Si el objeto no es un diccionario, una lista o un string, devolverlo sin cambios
        return objeto

# Obtener la ruta absoluta del directorio actual
directorio_actual = os.path.abspath(os.getcwd())

# Iterar sobre todos los archivos y subdirectorios en el directorio actual
for directorio_actual, subdirectorios, archivos in os.walk(directorio_actual):
    for nombre_archivo in archivos:
        # Comprobar que el archivo es un archivo JSON
        if nombre_archivo.endswith('.json'):
            # Construir la ruta completa del archivo
            ruta_completa_archivo = os.path.join(directorio_actual, nombre_archivo)

            # Cargar el contenido del archivo como un objeto Python
            with open(ruta_completa_archivo, 'r') as f:
                contenido = json.load(f)

            # Buscar y reemplazar los strings y las claves en el objeto JSON
            contenido = buscar_y_reemplazar(contenido)

            # Escribir el objeto modificado de vuelta en el archivo JSON
            with open(ruta_completa_archivo, 'w') as f:
                json.dump(contenido, f)
