77 lines
3.4 KiB
Markdown
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
|