un mot sur le web...

Le script

script.sh : le script
log.html : le journal des erreurs
script.ogg : le script en action (capture vidéo réalisée avec Istanbul 0.2.2)

# Pierre Marchal (INaLCO)
#!/bin/bash


## demande à l'utilisateur le nom du répertoire d'URL (rep) et le nom à donner au tableau (tab)
echo "Quel est le nom du répertoire d'URL ?"
read -p "./" rep

echo "Quel nom voulez-vous donner au tableau ?"
read tab

## crée le journal (log.html) dans lequel les erreurs seront consignées
echo "<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" /><title>
script.sh : journal des erreurs</title></head><body><p>" > log.html echo "script.sh : journal des erreurs " >> log.html date '+(%d/%m/%y)' >> log.html echo "<br />" >> log.html echo "________________________________</p><p>" >> log.html ## compteur pour numéroter les liens i=1 ## vérifie l'existence de "rep" if [ ! -d $rep ]; then date '+%H:%M:%S' >> log.html echo " Le répertoire <i>$rep</i> n'existe pas" >> log.html exit 1 fi ## vérifie la présence de sous-répertoire(s) dans "rep" if [ `ls -l ./$rep | grep -c "^d"` = 0 ]; then date '+%H:%M:%S' >> log.html echo " Le répertoire <i>$rep</i> ne contient aucun sous-repertoire" >> log.html exit 1 fi ## crée le fichier html "tab" echo "<html><head><title>Projet encadré</title> <meta http-equiv='"'Content-Type'"' content='"'text/html; charset=utf-8'"' /> <style type=\"text/css\"> table{ border: 1px solid gray; margin: auto; border-collapse: collapse; font-family: Times, \"Times New Roman\", serif; width: 550px;} a{ text-decoration: none; color: black;} td, th{ border: 1px solid black; text-align: center;} h4{ margin: auto; font-size: 1.5em; font-weight: bold;} .titre{ font-variant: small-caps; background-color: #ffc0cb;} .link{ display:block;} .link:hover{ background-color: #ffc0cb;} </style></head><body>" > ./tableaux/$tab.html ## pour chacun des sous-répertoires (rep2) de "rep" for rep2 in `ls ./$rep`; do ## crée le tableau dans lequel les liens seront stockés echo "<table><tr><td class=\"titre\" height=36px colspan="4"><h4>$rep2</h4></td></tr><tr><th>url</th> <th>pages aspirées</th> <th>dumps</th> <th>contextes</th></tr>" >> ./tableaux/$tab.html ## pour chacun des fichiers (fic) de "rep2" for fic in `ls ./$rep/$rep2`; do ## enregistre le nom de "fic", sans l'extension .txt, dans "fic2" fic2=$(basename $fic .txt) echo "<tr><td colspan="4" class=\"titre\">$fic2</td></tr>" >> ./tableaux/$tab.html ## crée le répertoire où seront stockées les pages aspirées mkdir ./pg_aspirees/$rep2-$fic2 if [ $? = 1 ]; then date '+%H:%M:%S' >> log.html echo " Le répertoire <b>./pg_aspirees/$rep2-$fic2</b> n'a pas pu être créé<br />" >> log.html fi ## crée le répertoire où seront stockés les dumps mkdir ./dump/$rep2-$fic2 if [ $? = 1 ]; then date '+%H:%M:%S' >> log.html echo " Le répertoire <b>./dump/$rep2-$fic2</b> n'a pas pu être créé<br />" >> log.html fi ## crée le répertoire où seront stockés les contextes mkdir ./contextes/$rep2-$fic2 if [ $? = 1 ]; then date '+%H:%M:%S' >> log.html echo " Le répertoire <b>./contextes/$rep2-$fic2</b> n'a pas pu être créé<br />" >> log.html fi ## pour chacune des URL for line in `cat $rep/$rep2/$fic`; do ## aspire la page avec wget wget $line -O ./pg_aspirees/$rep2-$fic2/$i.html case $? in ## si wget rencontre une erreur 1) date '+%H:%M:%S' >> log.html echo "<font color=\"lime\"> La page <b>$line</b> n'a pas pu être aspirée</font><br />" >> log.html echo "<tr> <td><a class=\"link\" href="$line" title="$line">url_$i</a></td> <td colspan=\"3\">La page n'a pas pu être aspirée</td></tr> </tr>" >> ./tableaux/$tab.html rm ./pg_aspirees/$rep2-$fic2/$i.html let "i+=1" ;; ## sinon 0) ## dump de la page avec lynx lynx -dump -nolist ./pg_aspirees/$rep2-$fic2/$i.html > ./dump/$rep2-$fic2/$i.txt ## prend la valeur 1 si le nombre d'occurrences de la forme recherchée est nul f=0 ## pour les pages en français if [ "$rep2" = "francais" ]; then ## forme recherchée motif="(\b)natures?(\b)" ## nombre d'occurrences de la forme recherchée occurrence=`egrep -i -o $motif ./dump/$rep2-$fic2/$i.txt | egrep -i -c $motif` if [ occurrence = 0 ]; then f=1 else echo "<html><head><title>./contextes/$rep2-$fic2/$i.html</title><meta http-equiv=\"Content-Type\"
content=\"text/html; charset=utf-8\" /></head><body> Fichier de travail : <span style=\"color: pink\"><b>./dump/$rep2-$fic2/$i.txt</b></span><br /><br /> Forme recherchée : <span style=\"color: pink\"><b>nature(s)</b></span><br /><br /> Nombre d'occurrences de la forme recherchée : <span style=\"color: pink\"><b>$occurrence</b></span> <br />_________________________________________________________________________________________________
<br /> <br /><br />" > ./contextes/$rep2-$fic2/$i.html ## filtre le contexte avec egrep et applique un enrichissement typographique avec sed egrep -i -n -B1 -A1 "$motif" ./dump/$rep2-$fic2/$i.txt | sed -r "s/($motif)/\<span style=\"color: pink;
background\-color\: black;\"\>\1\<\/span\>/gi" | sed "s/$/\<br \/\>/g" >> ./contextes/$rep2-$fic2/$i.html echo "</body></html>" >> ./contextes/$rep2-$fic2/$i.html fi fi ## pour les pages en japonais if [ "$rep2" = "japonais" ]; then ## filtre le contexte avec minigrepmultilingue-2.1 perl ./programmes/minigrepmultilingue-2.1.pl "UTF-8" ./dump/$rep2-$fic2/$i.txt ./programmes/motif.txt
./contextes/$rep2-$fic2/$i.html f=$? fi ## si la page ne contient pas/plus la forme recherchée if [ $f = 1 ]; then echo "<tr><td><a class=\"link\" href="$line" title="$line">url_$i</a></td><td colspan=\"3\"> La page ne contient pas/plus la forme recherchée</td></tr></tr>" >> ./tableaux/$tab.html date '+%H:%M:%S' >> log.html echo "<font color=\"maroon\"> La page <b>$line</b> ne contient pas/plus la forme recherchée</font>
<br />" >> log.html rm ./contextes/$rep2-$fic2/$i.html rm ./dump/$rep2-$fic2/$i.txt rm ./pg_aspirees/$rep2-$fic2/$i.html else echo "<tr><td><a class=\"link\" href="$line" title="$line">url_$i</a></td> <td><a class=\"link\" href="../pg_aspirees/$rep2-$fic2/$i.html" title="../pg_aspirees/
$rep2-$fic2/$i.html">page aspirée #$i</a></td><td><a class=\"link\" href="../dump/$rep2-$fic2/$i.txt"
title="../dump/$rep2-$fic2/$i.txt">dump #$i</a></td><td><a class=\"link\" href="../contextes/$rep2-$fic2
/$i.html" title="../contextes/$rep2-$fic2/$i.html">contexte #$i</a></td></tr>" >> ./tableaux/$tab.html fi ## incrémente le compteur let "i+=1" esac done done echo "</table><br />" >> ./tableaux/$tab.html done echo "</p></body></html>" >> log.html echo "</body></html>" >> ./tableaux/$tab.html
retour en haut
©2008 Pierre Marchal (INaLCO)