Client CLI/UI WotWizard: Donner un bilan de l’adhésion de nos contacts (bash/Xdialog)

Salut,

J’ai écrit un petit programme en bash utilisant wot-wizard pour nous faire un petit bilan d’où en sont nos contacts au niveau adhésions et certifications.

#!/bin/bash

rm 30limitsMember 31limitsMissing 32limitsCerts
rm res silkajtxt silkajtxt2 silkajtxt3 res2

wget https://wot-wizard.duniter.org/30limitsMember
wget https://wot-wizard.duniter.org/31limitsMissing
wget https://wot-wizard.duniter.org/32limitsCerts

Xdialog --title "Votre clé publique" --backtitle "Pour pouvoir chercher les infos sur vos contacts" --stdout --inputbox "Clé publique Ğ1" 10 20 >res

silkaj -p g1.presles.fr wot $(cat res) > silkajtxt

sed '1,4d' silkajtxt | awk '{ gsub("+",""); split($4,var,"."); print var[1]; }' | sed '/|/d' | sed '/^$/d' |
sed -e :a -e '$d;N;2,3ba' -e 'P;D' > silkajtxt2

echo $(cat silkajtxt2) | tr ' ' '|' | sed 's/\([a-zA-Z]\);\([a-zA-Z]\)/\1 \2/g' > silkajtxt3

cat 30limitsMember | grep -E $(cat silkajtxt3) > res2 && echo "Dates limites des Adhésions" >> res2 && st -e less res2

cat 31limitsMissing | grep -E $(cat silkajtxt3) > res2 && echo "Dates limites des adhésions non-renouvelées" >> res2 && st -e less res2

cat 32limitsCerts | grep -E $(cat silkajtxt3) > res2 && echo "Dates limites des certifications" >> res2 && st -e less res2

Ce programme utilise Xdialog, silkaj, et st (simple terminal de suckless.org). Donc s’assurer qu’ils sont installés.

On peut remplacer Xdialog par zenity ou d’autres, et st par xterm (personne n’est parfait ,o) ou d’autres.

wget est un peu lent à télécharger les documents sur wot-wizard, donc soyez patients ça fonctionne!

Voilà :slight_smile:

Il serait super chouette de faire tourner ce script dans une machine en ligne, comme ça on peut tous consulter ces bilans en ligne.

7 Likes

J’ai écrit une version cli (en laissant en commentaires les lignes pour la version graphique), avec whiptail pour les boites de dialogue:

#!/bin/bash

#Suppression des variables utilisées par le programme

rm 30limitsMember 31limitsMissing 32limitsCerts
rm RES silkajtxt silkajtxt2 silkajtxt3 res2

#whiptail est le programme pour les boîtes de dialogue

(whiptail --inputbox "Clé publique Ğ1" 8 78 3>&1 1>&2 2>&3) > RES
exitstatus=$?; if [ $exitstatus = 1 ]; then exit 1; fi

echo "(Exit status: $exitstatus)"

#Xdialog --title "Votre clé publique" --backtitle "Pour pouvoir chercher les infos sur vos contacts" --stdout --inputbox "Clé publique Ğ1" 10 20 >RES   #la version graphique avec Xdialog

#téléchargement des données d'adhésion sur wot-wizard

wget https://wot-wizard.duniter.org/30limitsMember
wget https://wot-wizard.duniter.org/31limitsMissing
wget https://wot-wizard.duniter.org/32limitsCerts

#recherche des informations sur les contacts, avec silkaj

silkaj -p g1.presles.fr wot $(cat RES) > silkajtxt

#mise en forme, récupération du texte de 2 colonnes

sed '1,4d' silkajtxt | awk '{ gsub("+",""); split($4,var,"."); print var[1]; }' | sed '/|/d' | sed '/^$/d' |
sed -e :a -e '$d;N;2,3ba' -e 'P;D' > silkajtxt2

#mise en forme, remplacement des retours à la ligne par des "|"

echo $(cat silkajtxt2) | tr ' ' '|' | sed 's/\([a-zA-Z]\);\([a-zA-Z]\)/\1 \2/g' > silkajtxt3

#affichage graphique avec le terminal st de chez suckless.org

#cat 30limitsMember | grep -E $(cat silkajtxt3) > res2 && echo "Dates limites des Adhésions" >> res2 && st -e less res2

#cat 31limitsMissing | grep -E $(cat silkajtxt3) > res2 && echo "Dates limites des adhésions non-renouvelées" >> res2 && st -e less res2

#cat 32limitsCerts | grep -E $(cat silkajtxt3) > res2 && echo "Dates limites des certifications" >> res2 && st -e less res2

#affichage graphique dans le terminal (cli) avec whiptail

cat 30limitsMember | grep -E $(cat silkajtxt3) > res2
whiptail --scrolltext --msgbox --title "Dates limites des Adhésions" "$(cat res2)" 25 80
cat 31limitsMissing | grep -E $(cat silkajtxt3) > res2
whiptail --scrolltext --msgbox --title "Dates limites des adhésions non-renouvelées" "$(cat res2)" 25 80
cat 32limitsCerts | grep -E $(cat silkajtxt3) > res2
whiptail --scrolltext --msgbox --title "Dates limites des certifications" "$(cat res2)" 25 80
3 Likes

C’est gentil, merci. Pourriez-vous envoyer des captures d’écran des résultats ?

Salut,

Ok je t’envoie les captures d’écran avec les résultats pour ton compte.

Version cli:

1 Like

Version graphique:

Petit affichage d’une boîte de dialogue classique avec Xdialog.


Affichage avec st -e less res2 (ça peut être xterm ou d’autres, pas mal de terminaux ont l’option « -e »)

1 Like

Pas mal du tout tout ça :slight_smile:
En fait tu es en train de faire un client CLI pour certaines fonctions qui te semblent primordiales de WotWizard en quelque sorte ?

Oui c’est ça, ça m’évite de chercher moi-même, c’est bien d’automatiser un peu la recherche pour les dates limites.

En fait je pourrais rajouter des fonctionnalités, je ne me suis pas creusé la tête pour ça.
Les menus avec Xdialog, zenity, ou whiptail, marchent bien!

1 Like

Super, continue :slight_smile:

Je ne sais pas très bien si il y a un rapport direct, mais tu peux jeter un oeuil à la dernière version de g1-stats que j’avais fait (full bash): https://git.p2p.legal/axiom-team/g1-stats

Notamment le explorer.sh à la racine (./explorer.sh --help, help récursif pour les sous commandes).

Peut être que ça peut t’inspirer pour des trucs, ou te servir des données du json qui est généré par g1-stats (toutes les 3h) pour certains trucs, je sais pas.

Je le montrais à @Paulart ya quelques semaines, c’est vrai que j’en ai pas beaucoup parlé de ce g1-stats et de son explorer, alors que j’y ai passé du temps.

PS: le explorer.sh fonctionne en standalone, si pas de json local, il le curl en ligne ici: https://g1-stats.axiom-team.fr/data/daily.json

1 Like

J’ai rajouté un peu de code à la fin pour avoir un bilan de la qualité de membre de nos contacts:

wget https://wot-wizard.duniter.org/21qualities

cat 21qualities | sed '1,13d'| head -n -8 | sed '/<p>/,$ d' | grep -E $(cat silkajtxt3) > res3
whiptail --scrolltext --msgbox --title "Pourcentage de reliance des contacts" "$(cat res3)" 25 80

Bon je suis tombé sur un os avec le formatage avec gawk, pour afficher en direct avec une simple commande la qualité de membre et pas le pourcentage, il reconnaît pas les colonnes.

Je dois me plonger dans awk et sed et pas juste recopier du stackoverflow, pas évident car hyper vaste!

Dans tous les cas je vais peut-être voir pour rajouter un menu au début, ça sera plus simple.

1 Like