#!/bin/bash
# 1. Lecture des paramètres dans le fichier PARAMETRES
read DOSSIERURLS;
read fichier_tableau;
read motif;
echo "Le dossier d'URLs : $DOSSIERURLS " ;
echo "Le fichier contenant le tableau : $fichier_tableau" ;
echo "Le motif est : $motif" ;
# 2. Affichage des tableaux
cpttableau=1;
echo "<html><head></head><body>" > $fichier_tableau ;
#====== pour chacun des fichiers d'URL ========
for fichier in `ls $DOSSIERURLS`
{ # debut du premier for
#-------------------------------------------------
# traitement d'un fichier d'URL
compteur=1; # initialisation d'un compteur pour compter les URLs
echo "<p align=\"center\"><hr color=\"blue\" width=\"80%\"/> </p>" >> $fichier_tableau ;
echo "<table align=\"center\" border=\"1\">" >> $fichier_tableau ;
echo "<tr><td colspan=\"11\" align=\"center\">tableau n° $cpttableau</td></tr>" >> $fichier_tableau ;
echo "<tr><td align=\"center\"><b>N°</b></td><td align=\"center\"><b>Lien</b></td><td align=\"center\"><b>CODE CURL</b><td align=\"center\"><b>statut CURL</b></td><td align=\"center\"><b>Page Aspirée</b></td><td align=\"center\"><b>Encodage Initial</b></td><td align=\"center\"><b>DUMP initial</b></td><td align=\"center\"><b>DUMP UTF-8</b></td><td align=\"center\"><b>CONTEXTE UTF-8</b></td><td align=\"center\"><b>CONTEXTE HTML UTF-8</b></td><td align=\"center\"><b>Fq MOTIF</b></td></tr>" >> $fichier_tableau ;
#-------------------------------------------------
# traitement de chacun des URLs
for line in `cat $DOSSIERURLS/$fichier`
#-------------------------------------------------
# pour chacune des lignes du fichier d'URL traité (une URL)...
{
# ==> ASPIRATION DE LA PAGE
echo "TELECHARGEMENT de $line vers ./PAGES-ASPIREES/$cpttableau-$compteur.html" ;
# 1. RECUPERATION DU HEADER HTTP
status1=$(curl -sI $line | head -n 1);
# 2. RECUPERATION DU CODE RETOUR HTTP ET DE LA PAGE
status2=$(curl --silent --output ./PAGES-ASPIREES/"$cpttableau-$compteur".html --write-out "%{http_code}" $line);
echo "STATUT CURL : $status2" ;
#-----------------------------------------------------------------------
# le test de la bonne reussite du telechargement est a faire par vous...
# si ca se passe mal, inutile de faire la suite...
#-----------------------------------------------------------------------
# ==> DETECTION DE L'ENCODAGE DE LA PAGE en ligne
echo "DETECTION encodage de $line ";
encodage=$(curl -sI $line | egrep -i "charset=" | cut -f2 -d= | tr -d "\n" | tr -d "\r" | tr "[:upper:]" "[:lower:]");
echo "ENCODAGE $line : <$encodage>" ;
if [[ $encodage == "utf-8" ]]
then
echo "DUMP de $line via lynx" ;
lynx -dump -nolist -assume_charset=$encodage -display_charset=$encodage $line > ./DUMP-TEXT/$cpttableau-$compteur.txt ;
# ajouter ici l'extraction de contexte autour des mots choisis
egrep -i $motif ./DUMP-TEXT/$cpttableau-$compteur.txt > ./CONTEXTES/$cpttableau-$compteur.txt ;
nbmotif=$(egrep -coi $motif ./DUMP-TEXT/$cpttableau-$compteur.txt);
perl ./PROGRAMMES/minigrep/minigrepmultilingue.pl "utf-8" ./DUMP-TEXT/$cpttableau-$compteur.txt parametre-motif-extraction.txt ;
mv resultat-extraction.html ./CONTEXTES/$cpttableau-$compteur.html ;
echo "ECRITURE RESULTAT dans le tableau" ;
echo "<tr><td align=\"center\">$compteur</td><td align=\"center\"><a href=\"$line\">lien n°$compteur</a></td><td align=\"center\">$status2</td><td align=\"center\"><small>$status1</small></td><td align=\"center\"><a href=\"../PAGES-ASPIREES/$cpttableau-$compteur.html\">P.A n° $cpttableau-$compteur</a></td><td align=\"center\">$encodage</td><td align=\"center\">-</td><td align=\"center\"><a href=\"../DUMP-TEXT/$cpttableau-$compteur.txt\">DUMP n° $cpttableau-$compteur</a></td><td align=\"center\"><a href=\"../CONTEXTES/$cpttableau-$compteur.txt\">CONTEXTE n° $cpttableau-$compteur</a></td><td align=\"center\"><a href=\"../CONTEXTES/$cpttableau-$compteur.html\">CONTEXTE n° $cpttableau-$compteur</a></td><td>$nbmotif</td></tr>" >> $fichier_tableau ;
else
#------------------------------------------
# ATTENTION : avant de faire ce qui suit :
# il faudrait s'assurer que l'encodage recupere est bien un "BON" encodage !!!!
# dans un premier temps on s'assure SEULEMENT que cette variable n'est pas vide
# et ça ne suffit pas, il faudra en faire plus
#------------------------------------------
if [[ $encodage != "" ]]
then
VERIFENCODAGEDANSICONV=$(iconv -l | egrep -o "[-A-Z0-9\_\:]+" |egrep -i $encodage) ;
#------------------------------------------
# ici il faut s'assurer que l'encodage est bien connu de iconv !!!!
#------------------------------------------
if [[ $VERIFENCODAGEDANSICONV == "" ]]
then
#------------- On ne fait rien... -------------------------------------------------
echo "<tr><td align=\"center\">$compteur</td><td align=\"center\"><a href=\"$line\">lien n°$compteur</a></td><td align=\"center\">$status2</td><td><small>$status1</small></td><td align=\"center\"><a href=\"../PAGES-ASPIREES/$cpttableau-$compteur.html\">PA n° $cpttableau-$compteur</a></td><td align=\"center\">$encodage<br/>via curl<br/>inconnu de iconv</td><td align=\"center\">-</td><td align=\"center\">-</td><td>-</td><td>-</td><td>-</td></tr>" >> $fichier_tableau ;
else
echo "DUMP (via $encodage) de $line via lynx" ;
lynx -dump -nolist -assume_charset=$encodage -display_charset=$encodage $line > ./DUMP-TEXT/$cpttableau-$compteur.txt ;
iconv -f $encodage -t utf-8 ./DUMP-TEXT/$cpttableau-$compteur.txt > ./DUMP-TEXT/$cpttableau-$compteur-utf8.txt ;
egrep -i $motif ./DUMP-TEXT/$cpttableau-$compteur-utf8.txt > ./CONTEXTES/$cpttableau-$compteur.txt ;
nbmotif=$(egrep -coi $motif ./DUMP-TEXT/$cpttableau-$compteur-utf8.txt);
perl ./PROGRAMMES/minigrep/minigrepmultilingue.pl "utf-8" ./DUMP-TEXT/$cpttableau-$compteur-utf8.txt parametre-motif-extaction.txt ;
mv resultat-extraction.html ./CONTEXTES/$cpttableau-$compteur.html ;
echo "ECRITURE RESULTAT dans le tableau" ;
echo "<tr><td align=\"center\">$compteur</td><td align=\"center\"><a href=\"$line\">lien n°$compteur</a></td><td align=\"center\">$status2</td><td><small>$status1</small></td><td align=\"center\"><a href=\"../PAGES-ASPIREES/$cpttableau-$compteur.html\">PA n° $cpttableau-$compteur</a></td><td align=\"center\">$encodage<br/>via curl</td><td align=\"center\"><a href=\"../DUMP-TEXT/$cpttableau-$compteur.txt\">DUMP n° $cpttableau-$compteur</a></td><td align=\"center\"><a href=\"../DUMP-TEXT/$cpttableau-$compteur-utf8.txt\">DUMP n° $cpttableau-$compteur</a></td><td><a href=\"../CONTEXTES/$cpttableau-$compteur.txt\">CONTEXTE n° $cpttableau-$compteur</a></td><td align=\"center\"><a href=\"../CONTEXTES/$cpttableau-$compteur.html\">CONTEXTE n° $cpttableau-$compteur</a></td><td>$nbmotif</td></tr>" >> $fichier_tableau ;
fi
else
isthereacharset=$(egrep -i -o "meta(.*)?charset" ./PAGES-ASPIREES/"$cpttableau-$compteur".html);
if [[ $isthereacharset != "" ]]
then
encodage=$(egrep -i -o "meta(.*)charset[^=]*?=[^\"]*?\"?[^\"]+?\"" ./PAGES-ASPIREES/$cpttableau-$compteur.html | egrep -i -o "charset[^=]*?= *?\"?[^\"]+?\"" | cut -f2 -d= | sed "s/\"//g" | sed "s/>//g" | sed "s/ //g" | sed "s/\///g" | sort -u | tr [A-Z] [a-z] );
echo "ENCODAGE EXTRAIT DE LA PAGE ASPIREE : $encodage" ;
if [[ $encodage == "utf-8" ]]
then
echo "DUMP de $line via lynx" ;
lynx -dump -nolist -assume_charset=$encodage -display_charset=$encodage $line > ./DUMP-TEXT/$cpttableau-$compteur.txt ;
egrep -i $motif ./DUMP-TEXT/$cpttableau-$compteur.txt > ./CONTEXTES/$cpttableau-$compteur.txt ;
nbmotif=$(egrep -coi $motif ./DUMP-TEXT/$cpttableau-$compteur.txt);
perl ./PROGRAMMES/minigrep/minigrepmultilingue.pl "utf-8" ./DUMP-TEXT/$cpttableau-$compteur.txt parametre-motif-extraction.txt ;
mv resultat-extraction.html ./CONTEXTES/$cpttableau-$compteur.html ;
echo "ECRITURE RESULTAT dans le tableau" ;
echo "<tr><td align=\"center\">$compteur</td><td align=\"center\"><a href=\"$line\">lien n°$compteur</a></td><td align=\"center\">$status2</td><td align=\"center\"><small>$status1</small></td><td align=\"center\"><a href=\"../PAGES-ASPIREES/$cpttableau-$compteur.html\">P.A n° $cpttableau-$compteur</a></td><td align=\"center\">$encodage<br/>via charset</td><td align=\"center\">-</td><td align=\"center\"><a href=\"../DUMP-TEXT/$cpttableau-$compteur.txt\">DUMP n° $cpttableau-$compteur</a></td><td align=\"center\"><a href=\"../CONTEXTES/$cpttableau-$compteur.txt\">CONTEXTE n° $cpttableau-$compteur</a></td><td align=\"center\"><a href=\"../CONTEXTES/$cpttableau-$compteur.html\">CONTEXTE n° $cpttableau-$compteur</a></td><td>$nbmotif</td></tr>" >> $fichier_tableau ;
else
VERIFENCODAGEDANSICONV=$(iconv -l | egrep -o "[-A-Z0-9\_\:]+" |egrep -i $encodage) ;
if [[ $VERIFENCODAGEDANSICONV == "" ]]
then
echo "<tr><td align=\"center\">$compteur</td><td align=\"center\"><a href=\"$line\">lien n°$compteur</a></td><td align=\"center\">$status2</td><td><small>$status1</small></td><td align=\"center\"><a href=\"../PAGES-ASPIREES/$cpttableau-$compteur.html\">PA n° $cpttableau-$compteur</a></td><td align=\"center\">$encodage<br/><br/>via charset<br/>inconnu de iconv</td><td align=\"center\"><a href=\"../DUMP-TEXT/$cpttableau-$compteur.txt\">DUMP n° $cpttableau-$compteur</a></td><td align=\"center\">-</td><td>-</td><td>-</td><td>-</td></tr>" >> $fichier_tableau ;
else
lynx -dump -nolist -assume_charset=$encodage -display_charset=$encodage $line > ./DUMP-TEXT/$cpttableau-$compteur.txt ;
iconv -f $encodage -t utf-8 ./DUMP-TEXT/$cpttableau-$compteur.txt > ./DUMP-TEXT/$cpttableau-$compteur-utf8.txt
egrep -i $motif ./DUMP-TEXT/$cpttableau-$compteur-utf8.txt > ./CONTEXTES/$cpttableau-$compteur.txt ;
nbmotif=$(egrep -coi $motif ./DUMP-TEXT/$cpttableau-$compteur-utf8.txt);
perl ./PROGRAMMES/minigrep/minigrepmultilingue.pl "utf-8" ./DUMP-TEXT/$cpttableau-$compteur-utf8.txt parametre-motif-extraction.txt ;
mv resultat-extraction.html ./CONTEXTES/$cpttableau-$compteur.html ;
#-------------------------------------------------------------------------------------------------------------------------
echo "ECRITURE RESULTAT dans le tableau" ;
echo "<tr><td align=\"center\">$compteur</td><td align=\"center\"><a href=\"$line\">lien n°$compteur</a></td><td align=\"center\">$status2</td><td><small>$status1</small></td><td align=\"center\"><a href=\"../PAGES-ASPIREES/$cpttableau-$compteur.html\">PA n° $cpttableau-$compteur</a></td><td align=\"center\">$encodage<br/>via charset</td><td align=\"center\"><a href=\"../DUMP-TEXT/$cpttableau-$compteur.txt\">DUMP n° $cpttableau-$compteur</a></td><td align=\"center\"><a href=\"../DUMP-TEXT/$cpttableau-$compteur-utf8.txt\">DUMP n° $cpttableau-$compteur</a></td><td><a href=\"../CONTEXTES/$cpttableau-$compteur.txt\">CONTEXTE n° $cpttableau-$compteur</a></td><td align=\"center\"><a href=\"../CONTEXTES/$cpttableau-$compteur.html\">CONTEXTE n° $cpttableau-$compteur</a></td><td>$nbmotif</td></tr>" >> $fichier_tableau ;
fi
fi
else
echo "<tr><td align=\"center\">$compteur</td><td align=\"center\"><a href=\"$line\">lien n°$compteur</a></td><td align=\"center\">$status2</td><td><small>$status1</small></td><td align=\"center\"><a href=\"../PAGES-ASPIREES/$cpttableau-$compteur.html\">PA n° $cpttableau-$compteur</a></td><td align=\"center\">Aucun encodage extrait...</td><td align=\"center\">-</td><td align=\"center\">-</td><td>-</td><td>-</td><td>-</td></tr>" >> $fichier_tableau ;
fi
fi
fi
# il faut ajouter 1 au compteur de lignes
let "compteur=compteur+1"; # let "compteur+=1";
}
#----------------------------------------------------
echo "</table>" >> $fichier_tableau ;
let "cpttableau=cpttableau+1";
}
echo "</body></html>" >> $fichier_tableau ;
#=============================================