Astroport.ONE/BOOKS/astroport-20h12/uplanet.refresh.sh/region.refresh.sh.md

3.4 KiB

REGION.refresh.sh

Le script REGION.refresh.sh est conçu pour actualiser les données des régions géographiques dans l'écosystème Astroport.ONE en agrégeant les flux RSS produits par les secteurs internes. Voici une analyse détaillée de son fonctionnement :

Fonctionnalités Principales

  1. Initialisation et Configuration :
    • Le script commence par définir le chemin du script (MY_PATH) et le normalise pour obtenir un chemin absolu.
    • Il source un fichier de configuration commun (my.sh) pour utiliser des fonctions et des variables partagées.
  2. Détermination des Régions :
    • Le script identifie les régions géographiques à partir des coordonnées des UMAPs (Unités de Mesure de l'Activité Planétaire).
    • Il génère une liste unique de régions à partir des UMAPs disponibles.
  3. Génération et Gestion des Clés :
    • Le script génère des clés Duniter et IPFS pour chaque région.
    • Il importe ces clés dans le keystore IPFS et les utilise pour publier les données de la région.
  4. Récupération et Mise à Jour des Données :
    • Le script récupère les données de la région à partir de la clé IPNS de la veille.
    • Il met à jour les données de la région avec les nouvelles informations collectées.
  5. Agrégation des Flux RSS :
    • Le script collecte les flux RSS des secteurs internes et les agrège pour créer un flux RSS régional.
    • Il utilise des outils pour convertir les flux RSS en fichiers JSON et les fusionner.
  6. Publication des Données :
    • Le script publie les données mises à jour sur IPFS et met à jour les caches locaux et distants.
    • Il génère des QR codes et des images pour visualiser les informations de la région.

Étapes du Script

  1. Définition des Variables et Chemins :

    MY_PATH="`dirname \"$0\"`"
    MY_PATH="`( cd \"$MY_PATH\" && pwd )`"
    . "${MY_PATH}/../tools/my.sh"
    
  2. Détermination des Régions :

    for UMAP in ${UMAPS[@]}; do
        LAT=$(echo ${UMAP} | cut -d '_' -f 2)
        LON=$(echo ${UMAP} | cut -d '_' -f 3)
        RLAT="${LAT::-1}"
        RLON="${LON::-1}"
        MYREGIONS=("_${RLAT}_${RLON}" ${MYREGIONS[@]})
    done
    REGIONS=($(echo "${MYREGIONS[@]}" | tr ' ' '\n' | sort -u))
    
  3. Génération et Gestion des Clés :

    ${MY_PATH}/../tools/keygen -t duniter -o ~/.zen/tmp/${MOATS}/REGION.priv "${UPLANETNAME}${REGION}" "${UPLANETNAME}${REGION}"
    REGIONG1PUB=$(cat ~/.zen/tmp/${MOATS}/REGION.priv | grep 'pub:' | cut -d ' ' -f 2)
    REGIONNS=$(ipfs key import ${REGIONG1PUB} -f pem-pkcs8-cleartext ~/.zen/tmp/${MOATS}/REGION.priv)
    
  4. Récupération et Mise à Jour des Données :

    ipfs --timeout 240s get --progress=false -o ~/.zen/tmp/${MOATS}/${REGION}/ /ipns/${YESTERDATEREGIONNS}/
    
  5. Agrégation des Flux RSS :

    RSSNODE=($(ls ~/.zen/tmp/${IPFSNODEID}/UPLANET/SECTORS/_${RLAT}*_${RLON}*/_${RLAT}*_${RLON}*/_${RLAT}*_${RLON}*.week.rss.json 2>/dev/null))
    for RSS in ${RSSNODE[@]}; do
        [[ $(cat ${RSS}) != "[]" ]] && cp ${RSS} ~/.zen/tmp/${MOATS}/${REGION}/RSS/ && ${MY_PATH}/../tools/RSS2WEEKnewsfile.sh ${RSS} >> ~/.zen/tmp/${MOATS}/${REGION}/JOURNAL
    done
    
  6. Publication des Données :

    IPFSPOP=$(ipfs add -rwq ~/.zen/tmp/${MOATS}/${REGION}/* | tail -n 1)
    ipfs --timeout 180s name publish -k ${TODATE}${REGIONG1PUB} /ipfs/${IPFSPOP}
    

A VENIR

ollama