def generate_catalogs_indicators(catalogs, central_catalog=None,
                                 identifier_search=False,
                                 validator=None):
    """Genera una lista de diccionarios con varios indicadores sobre
    los catálogos provistos, tales como la cantidad de datasets válidos,
    días desde su última fecha actualizada, entre otros.

    Args:
        catalogs (str o list): uno o más catalogos sobre los que se quiera
            obtener indicadores
        central_catalog (str): catálogo central sobre el cual comparar los
            datasets subidos en la lista anterior. De no pasarse no se
            generarán indicadores de federación de datasets.

    Returns:
        tuple: 2 elementos, el primero una lista de diccionarios con los
            indicadores esperados, uno por catálogo pasado, y el segundo
            un diccionario con indicadores a nivel global,
            datos sobre la lista entera en general.
    """
    assert isinstance(catalogs, string_types + (dict, list))
    # Si se pasa un único catálogo, genero una lista que lo contenga
    if isinstance(catalogs, string_types + (dict,)):
        catalogs = [catalogs]

    indicators_list = []
    # Cuenta la cantidad de campos usados/recomendados a nivel global
    fields = {}
    catalogs_cant = 0
    for catalog in catalogs:
        try:
            catalog = readers.read_catalog(catalog)
            catalogs_cant += 1
        except Exception as e:
            msg = u'Error leyendo catálogo de la lista: {}'.format(str(e))
            logger.error(msg)
            continue

        fields_count, result = _generate_indicators(
            catalog, validator=validator)
        if central_catalog:
            result.update(_federation_indicators(
                catalog, central_catalog, identifier_search=identifier_search))
        if not indicators_list:
            # La primera iteracion solo copio el primer resultado
            network_indicators = result.copy()
        else:
            network_indicators = helpers.add_dicts(network_indicators,
                                                   result)
        # Sumo a la cuenta total de campos usados/totales
        fields = helpers.add_dicts(fields_count, fields)

        result['title'] = catalog.get('title', 'no-title')
        result['identifier'] = catalog.get('identifier', 'no-id')
        indicators_list.append(result)

    if not indicators_list:
        # No se pudo leer ningún catálogo
        return [], {}

    # Indicadores de la red entera
    network_indicators['catalogos_cant'] = catalogs_cant
    # Genero los indicadores de la red entera,
    _network_indicator_percentages(fields, network_indicators)

    return indicators_list, network_indicators