g1-stats/soldeByDays.sh

81 lines
2.5 KiB
Bash
Executable File

#!/bin/bash
startTime=$(date +'%H:%M')
day=$(date +'%y-%m-%d')
echo -e "\n############# $day à $startTime #############\n"
SCRIPTPATH="$( cd "$(dirname "$0")" ; pwd -P )"
if [[ -e $SCRIPTPATH/.env ]]; then source $SCRIPTPATH/.env; else echo "Veuillez créer votre fichier .env inspiré de .env.example" && exit 1; fi
rm $SCRIPTPATH/tmp/*_solde 2>/dev/null
! [[ -d $SCRIPTPATH/db ]] && mkdir $SCRIPTPATH/db
echo "[" > $SCRIPTPATH/db/recus.json
lsDays=$(ls $SCRIPTPATH/tmp/) # | awk -F/ '{ print $NF }') # | awk -F_ '{ print $1 }')
nbrD=$(for i in $lsDays; do cat $SCRIPTPATH/tmp/$i; done | wc -l)
daysLoop() {
k=0
l=0
for i in $lsDays; do
# [[ $l -ge 20 ]] && break ## ((k++)) && continue
# ((l++))
walletDay=$(cat $SCRIPTPATH/tmp/$i)
[[ -z $walletDay ]] && continue
dateT=$(echo $i | awk -F_ '{ print $1 }')
dateLDay=$(date -d "$dateT" +%s -u)
dateLDay=$(($dateLDay-3600*2))
dateHDay=$(($dateLDay+60*60*24))
dateHDay=$(($dateHDay+3600*2))
[[ $i =~ "_mbr" ]] && type="Membre" || type="Wallet"
for j in $walletDay; do
echo "$(echo $i | awk -F_ '{ print $1 }'): $j"
curl -s ${DUNITER}/tx/history/$j/times/$dateLDay/$dateHDay | jq '.history.received[].outputs[]' | grep $j | awk -F: '{ print $1 }' | tr -d '" ' >> $SCRIPTPATH/tmp/${i}_solde
((k++))
clear
echo -e "\n############# $day à $startTime #############\n"
progress=$(echo "scale=1; $k*100/$nbrD/1" | bc)
echo "Scan $type: $progress% - $k/$nbrD"
done
# Somme de la journée
soldes=$(cat $SCRIPTPATH/tmp/${i}_solde | awk '{total+=$1}END{print total}')
echo $soldes > $SCRIPTPATH/tmp/${i}_solde
# Écriture en JSON
jsonify() {
local jsonTPL=$(sed s/_DATE/$dateT/g $SCRIPTPATH/tpl/recus.json)
local jsonTPL=$(sed s/_RWALLETS/$1/g <<< $jsonTPL)
local jsonTPL=$(sed s/_RMEMBRES/$2/g <<< $jsonTPL)
echo -e "$jsonTPL" | tr -d '\\' >> $SCRIPTPATH/db/recus.json
}
soldes=$(echo "scale=2; $soldes/100" | bc)
if [[ $i =~ "_mbr" ]]; then
jsonify _RWALLETS_$dateT $soldes
elif [[ $i =~ "_wallets" ]]; then
if [[ ! $(grep $dateT $SCRIPTPATH/db/recus.json) ]]; then
jsonify $soldes 0
else
sed -i s/_RWALLETS_$dateT/$soldes/g $SCRIPTPATH/db/recus.json
fi
fi
done
}
daysLoop
# Final touch
sed -i '$ s/,//g' $SCRIPTPATH/db/recus.json
echo "]" >> $SCRIPTPATH/db/recus.json
awk '{gsub(/_RWALLETS.*/,"0\",")}1;' $SCRIPTPATH/db/recus.json > /tmp/tmpawk && mv /tmp/tmpawk $SCRIPTPATH/db/recus.json
day=$(date +'%d-%m-%y')
echo "$day - Heure de fin: $(date +'%H:%M')"
$SCRIPTPATH/sum.sh