Obtenir les terminaisons des verbes français - retour accueil
git clone git://bebou.netlib.re/conjugaison-light
Log | Files | Refs | README |
commit 561e5399f55920bcf6faf0577df6aff4542b22a9 parent 4101b782e3e4e07abb04ba4322a8eb4d19368a49 Auterice: Arthur Pons <arthur.pons@unistra.fr> Date: Fri, 10 May 2024 12:15:24 +0200 Un peu mieu, pour le serveur bebou Diffstat:
M | cgi | | | 64 | ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---- |
1 file changed, 60 insertions(+), 4 deletions(-)
diff --git a/cgi b/cgi @@ -1,8 +1,64 @@ #! /bin/sh -if [ ! -f ./data/"$1".txt ] -then - ./verbe $1 > ./data/"$1".txt +colorate() { + sed "s/{/\x1b[92m/g; s/}/\x1b[0m/g" +} + +tabulate() { + awk '/./ { + if (match($0,".*if") || $0=="Conditionnel" || $0=="Participe") { + mode = $0 + } else if ($0=="Présent" || match($0,"Passé.*") || match($0,".*parfait.*") || match($0,"Futur.*")) { + temps = $0 + } else { + valeur = $0 + } + if (mode && temps && valeur) { + printf "%s\t%s\t%s\n",mode, temps, valeur + } + valeur = "" + }' +} + +filter() { + grep -wi "$1" | grep -wi "$2" | grep -wi "$3" +} + +verbe() { + curl -Ls -A "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:106.0) Gecko/20100101 Firefox/106.0" "https://www.conjugaisonfrancaise.com/$1.html" | + sed -En '/col-lg-7/,/col-lg-5/ p' | + sed "s:<b>:{:g; s:</b>:}:g" | + sed -E 's:<[^>]*>::g' | + sed -E 's: ::g; s: :\n:g' | + sed -E 's:^ +::' | + grep -v '^$' | + grep -v "=" | + sed -n '5,$ p' +} + +bdd=/var/bddconjugaison + +if [ -z "$bdd" ];then +<<. cat +Première exec, ouvrir le script et donner une valeur à bdd juste au dessus. Sa +valeur doit être le chemin absolu du dossier dans lequel seront stockés les +fichiers +. +exit 1 fi -./tabulate ./data/"$1".txt | ./colorate | ./filter $2 $3 $4 | column -ts ' ' +[ "$1" = "-c" ] && { color="true"; shift; } + +mot=${1:?"Il faut renseigner un mot"} + +mkdir -p "$bdd" + +if [ ! -e "$bdd/$mot" ];then + verbe $1 > "$bdd/$mot" +fi + +if [ "$color" = "true" ];then + cat "$bdd/$mot" | tabulate | colorate | filter "$2" "$3" "$4" | column -ts ' ' +else + cat "$bdd/$mot" | tabulate | filter "$2" "$3" "$4" | column -ts ' ' | tr -d '{}' +fi