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

77 lines
3.4 KiB
Markdown

# 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** :
```bash
MY_PATH="`dirname \"$0\"`"
MY_PATH="`( cd \"$MY_PATH\" && pwd )`"
. "${MY_PATH}/../tools/my.sh"
```
2. **Détermination des Régions** :
```bash
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** :
```bash
${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** :
```bash
ipfs --timeout 240s get --progress=false -o ~/.zen/tmp/${MOATS}/${REGION}/ /ipns/${YESTERDATEREGIONNS}/
```
5. **Agrégation des Flux RSS** :
```bash
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** :
```bash
IPFSPOP=$(ipfs add -rwq ~/.zen/tmp/${MOATS}/${REGION}/* | tail -n 1)
ipfs --timeout 180s name publish -k ${TODATE}${REGIONG1PUB} /ipfs/${IPFSPOP}
```
A VENIR
ollama