7.5 KiB
7.5 KiB
description |
---|
EN TRAVAUX |
tools/Connect_PLAYER_To_Gchange.sh
Le script tools/Connect_PLAYER_To_Gchange.sh
détermine la classe d'un joueur en fonction de sa présence dans Cesium+ et Gchange. Il extrait les données du joueur à partir de ces plateformes, analyse les informations pour déterminer la classe, et met à jour les données du joueur dans le TiddlyWiki.
Voici une analyse détaillée de son fonctionnement :
Fonctionnalités Principales
- 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.
- Le script commence par définir le chemin du script (
- Extraction des Données du Joueur :
- Le script récupère les informations du joueur à partir de son TiddlyWiki (TW) et de ses profils Cesium+ et Gchange.
- Il utilise des requêtes HTTP pour interroger les API de Cesium+ et Gchange et obtenir les données du joueur.
- Détermination de la Classe du Joueur :
- Le script analyse les données récupérées pour déterminer la classe du joueur. Les critères peuvent inclure :
- La présence d'un profil Cesium+ valide.
- La présence d'un profil Gchange valide.
- Le nombre de certifications reçues et émises.
- La participation active dans la communauté (transactions, publications, etc.).
- Le script analyse les données récupérées pour déterminer la classe du joueur. Les critères peuvent inclure :
- Mise à Jour des Données du Joueur :
- Le script met à jour les informations du joueur dans le TiddlyWiki en fonction de la classe déterminée.
- Il peut également mettre à jour les caches locaux et distants avec les nouvelles informations.
Étapes du Script
-
Définition des Variables et Chemins :
MY_PATH="`dirname \"$0\"`" MY_PATH="`( cd \"$MY_PATH\" && pwd )`" . "${MY_PATH}/../tools/my.sh"
-
Extraction des Données du Joueur :
PLAYER="$1" G1PUB=$(cat ~/.zen/game/players/${PLAYER}/.g1pub 2>/dev/null) CESIUMPLUS_URL="https://g1.data.le-sou.org,https://g1.data.e-is.pro,https://g1.data.adn.life,https://g1.data.presles.fr" GCHANGE_URL="https://data.gchange.fr"
-
Requêtes HTTP pour Récupérer les Données :
for cesiumplus_url in $(echo $CESIUMPLUS_URL | tr "," "\n"); do response=$(curl -s "${cesiumplus_url}/user/profile/_search?scroll=2m" -d '{"query":{"bool":{"must":[{"term":{"pubkey":"'"${G1PUB}"'"}}]}}}') if [[ $response != "" ]]; then break fi done gchange_response=$(curl -s "${GCHANGE_URL}/user/profile/_search?scroll=2m" -d '{"query":{"bool":{"must":[{"term":{"pubkey":"'"${G1PUB}"'"}}]}}}')
-
Analyse des Données et Détermination de la Classe :
if [[ $response != "" ]]; then class="Cesium+" fi if [[ $gchange_response != "" ]]; then class="Gchange" fi if [[ $response != "" && $gchange_response != "" ]]; then class="Cesium+ & Gchange" fi
-
Mise à Jour des Données du Joueur :
tiddlywiki --load ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html \ --output ~/.zen/tmp/${MOATS} \ --render '.' 'PLAYER.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[tag[PLAYER]]' echo "Class: $class" >> ~/.zen/tmp/${MOATS}/PLAYER.json
EVOLUTION...
Voici un exemple de réécriture du script Connect_PLAYER_To_Gchange.sh
pour déterminer la classe du joueur en fonction de sa présence dans Cesium+ et Gchange :
#!/bin/bash
################################################################################
# Author: Fred (support@qo-op.com)
# Version: 0.1
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
################################################################################
MY_PATH="`dirname \"$0\"`"
MY_PATH="`( cd \"$MY_PATH\" && pwd )`"
. "${MY_PATH}/my.sh"
PLAYER="$1"
if [[ -z "$PLAYER" ]]; then
echo "Please provide PLAYER"
exit 1
fi
G1PUB=$(cat ~/.zen/game/players/${PLAYER}/.g1pub 2>/dev/null)
if [[ -z "$G1PUB" ]]; then
echo "G1PUB not found for player $PLAYER"
exit 1
fi
CESIUMPLUS_URL="https://g1.data.le-sou.org,https://g1.data.e-is.pro,https://g1.data.adn.life,https://g1.data.presles.fr"
GCHANGE_URL="https://data.gchange.fr"
# Function to fetch data from Cesium+
fetch_cesiumplus_data() {
local url="$1"
local query='{
"query": {
"bool": {
"should": [
{"exists": {"field": "geoPoint"}},
{"bool": {"must": [
{"exists": {"field": "title"}},
{"exists": {"field": "uid"}}
]}}
]
}
},
"size": 10000,
"_source": ["title", "geoPoint", "avatar._content_type"]
}'
curl -s -X POST -H "Content-Type: application/json" -d "$query" "$url/user/profile/_search?scroll=2m"
}
# Fetch data from Cesium+
cesiumplus_data=""
for url in $(echo $CESIUMPLUS_URL | tr "," "\n"); do
response=$(fetch_cesiumplus_data "$url")
if [[ -n "$response" ]]; then
cesiumplus_data="$response"
break
fi
done
# Fetch data from Gchange
gchange_data=$(curl -s -X POST -H "Content-Type: application/json" -d "$query" "$GCHANGE_URL/user/profile/_search?scroll=2m")
# Determine player class
class=""
if [[ -n "$cesiumplus_data" ]]; then
class="Cesium+"
fi
if [[ -n "$gchange_data" ]]; then
class="Gchange"
fi
if [[ -n "$cesiumplus_data" && -n "$gchange_data" ]]; then
class="Cesium+ & Gchange"
fi
# Update player data in TiddlyWiki
tiddlywiki --load ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html \
--output ~/.zen/tmp/${MOATS} \
--render '.' 'PLAYER.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[tag[PLAYER]]'
echo "Class: $class" >> ~/.zen/tmp/${MOATS}/PLAYER.json
# Import updated data back into TiddlyWiki
tiddlywiki --load ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html \
--import ~/.zen/tmp/${MOATS}/PLAYER.json 'application/json' \
--output ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER} \
--render "$:/core/save/all" "newindex.html" "text/plain"
if [[ -s ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/newindex.html ]]; then
cp ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/newindex.html ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/index.html
rm ~/.zen/tmp/${IPFSNODEID}/TW/${PLAYER}/newindex.html
else
echo "ERROR - CANNOT IMPORT PLAYER.json - ERROR"
fi
echo "Player $PLAYER class updated to $class"
Explications
- 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.
- Le script commence par définir le chemin du script (
- Extraction des Données du Joueur :
- Le script récupère les informations du joueur à partir de son TiddlyWiki (TW) et de ses profils Cesium+ et Gchange.
- Il utilise des requêtes HTTP pour interroger les API de Cesium+ et Gchange et obtenir les données du joueur.
- Détermination de la Classe du Joueur :
- Le script analyse les données récupérées pour déterminer la classe du joueur. Les critères peuvent inclure :
- La présence d'un profil Cesium+ valide.
- La présence d'un profil Gchange valide.
- Le script analyse les données récupérées pour déterminer la classe du joueur. Les critères peuvent inclure :
- Mise à Jour des Données du Joueur :
- Le script met à jour les informations du joueur dans le TiddlyWiki en fonction de la classe déterminée.
- Il importe les données mises à jour dans le TiddlyWiki.