title

Projet Multilingue des Mots sur le Web

Le Script

Pour télécharger le script cliquez ici !


1 #!/bin/bash 2 3 echo "Donnez le nom du dossier contenant les fichiers url : "; 4 read dos; 5 echo "Donnez le nom du fichier html ou stocker ces liens : "; 6 read tableau; 7 8 9 10 #début du fichier html, le titre et le lien vers le fichier style.css 11 12 echo "<html><head><link rel=\"stylesheet\" href=\"style.css\"/><meta charset=\"utf-8\" /><title>Americanisation</title></head><body>" >$tableau; 13 14 j=1; #compteur pour les tableaux 15 16 17 #si le dossier FICHIERSGLOBAUX n'existe pas, il sera créé 18 if [ ! -d "./FICHIERSGLOBAUX" ];then 19 mkdir ./FICHIERSGLOBAUX; 20 fi; 21 22 23 24 #-------Pour chaque fichier dans le dossier URL-------# 25 26 for fichierurl in `ls $dos` 27 { 28 #recuperer le nom du fichier pour nommer le sous-dossier et pour nommer le tableau 29 retrievefilename=$(basename "$fichierurl") 30 filename=${retrievefilename%.*} 31 filenametitle=${filename//_/ }; 32 33 34 #si les sous-dossiers PAGES-ASPIREES n'existent pas, ils seront créés 35 if [ ! -d "./PAGES-ASPIREES/$filename" ];then 36 mkdir ./PAGES-ASPIREES/$filename 37 fi; 38 39 #si les sous-dossiers DUMP-TEXT n'existent pas, ils seront créés 40 if [ ! -d "./DUMP-TEXT/$filename" ];then 41 mkdir ./DUMP-TEXT/$filename; 42 fi; 43 44 #si les sous-dossiers CONTEXTES n'existent pas, ils seront créés 45 if [ ! -d "./CONTEXTES/$filename" ];then 46 mkdir ./CONTEXTES/$filename; 47 fi; 48 49 #si le sous-dossier FICHIERSGLOBAUX/$filename n'existe pas, il sera créé 50 if [ ! -d "./FICHIERSGLOBAUX/$filename" ];then 51 mkdir ./FICHIERSGLOBAUX/$filename; 52 fi; 53 54 55 #ouvrir les balises du tableau et nommer les th (table headers) 56 echo "<table><tr><th colspan=\"10\">Tableau numero $j ($filenametitle) :</th></tr>" >> $tableau; 57 echo "<tr><th>N.</th> 58 <th>Lien</th> 59 <th>Retour curl</th> 60 <th>Retour http</th> 61 <th>Page Aspiree</th> 62 <th>Dump Initial</th> 63 <th>Dump UTF-8</th> 64 <th>Contextes</th> 65 <th>Contextes html</th> 66 <th>N. Occs</th></tr>" >> $tableau; 67 68 i=1; #compteur pour les URLs 69 70 nbdump=0; #compteur pour le nombre de fichiers dans le dump global 71 72 73 #-------Pour chaque lien dans le fichier------# 74 75 while read link #< $dos/$fichierurl 76 do 77 78 #1ère et 2ème colonnes 79 echo "<tr> 80 <td>$i</td> 81 <td><a href=\"$link\">URL $i</a></td>">>$tableau; 82 83 84 #--------Aspiration des pages-------# 85 86 retourhttp=$(curl -s -o ./PAGES-ASPIREES/$filename/$i.html -w %{http_code} $link); 87 retourcurl=$?; 88 89 #-------Erreur curl ou http------# 90 91 if [[ $retourhttp -ne 200 || $retourcurl -ne 0 ]] ; then 92 93 #----------Erreur curl---------# 94 #--3ème colonne : retour curl--# 95 96 if [ $retourcurl -ne 0 ]; then 97 echo "<td class=\"erreur\">$retourcurl</td>" >> $tableau; 98 else 99 echo "<td>$retourcurl</td>">> $tableau; 100 fi; 101 102 103 #---------Erreur http----------# 104 #--4ème colonne : retour http--# 105 if [ $retourhttp -ne 200 ]; then 106 echo "<td class=\"erreur\">$retourhttp</td>" >> $tableau; 107 else 108 echo "<td>$retourhttp</td>" >> $tableau; 109 fi; 110 111 #5ème colonne : page aspirée - vide 112 #6ème colonne: dump initial - vide 113 #7ème colonne : dump utf-8 - vide 114 #8ème colonne : contextes - vide 115 #9ème colonne : contextes html - vide 116 #10ème colonne :nombre d'occurrences - vide 117 echo "<td class=\"erreur\"><a href=\"../PAGES-ASPIREES/$filename/$i.html\">Page aspiree $i</a></td> 118 <td class=\"erreur\"> - </td> 119 <td class=\"erreur\"> - </td> 120 <td class=\"erreur\"> - </td> 121 <td class=\"erreur\"> - </td> 122 <td class = \"erreur\"> - </td></tr>" >> $tableau; 123 124 125 #-------Pas d'erreur--------# 126 #3ème colonne : retour curl 127 #4ème colonne : retour http 128 #5ème colonne : page aspirée 129 else 130 echo "<td>$retourcurl</td> 131 <td>$retourhttp</td> 132 <td><a href=\"../PAGES-ASPIREES/$filename/$i.html\">Page aspiree $i</a></td>" >> $tableau; 133 134 135 136 #------vérifier l'encodage de la page aspirée pour faire le dump------# 137 138 encodage=$(file -i "./PAGES-ASPIREES/$filename/$i.html" | cut -d= -f2); 139 140 #-------si c'est de l'utf-8-------# 141 if [[ "$encodage" = "utf-8" ]]; then 142 143 #lynx et dump utf-8 144 echo ">>>>encodage niveau 1 - tableau $j, url $i, encodage: $encodage"; 145 146 lynx -dump -nolist -display_charset="$encodage" ./PAGES-ASPIREES/$filename/$i.html > ./DUMP-TEXT/$filename/$i-utf8.txt 147 148 #extraction du contexte contenant le motif et le nombre d'occurrences 149 150 egrep -i "\W(([Aa]m.ricani[sz])|(εξαμερ[ίι]καν[ίι]σ)|([Aα]μερικανοπο[ίι]).*?)|([Aα]μερικανισμός)\W" ./DUMP-TEXT/$filename/$i-utf8.txt > ./CONTEXTES/$filename/$i.txt; 151 nbocc=??; 152 nbocc=$(egrep -o -i "\W(([Aa]m.ricani[sz])|(εξαμερ[ίι]καν[ίι]σ)|([Aα]μερικανοπο[ίι]).*?)|([Aα]μερικανισμός)\W" ./DUMP-TEXT/$filename/$i-utf8.txt | wc -l ); 153 154 #minigrep 155 perl ./PROGRAMMES/minigrepMultilingue2/minigrepmultilingue.pl "UTF-8" ./DUMP-TEXT/$filename/$i-utf8.txt ./PROGRAMMES/minigrepMultilingue2/motif.txt ; 156 mv resultat-extraction.html ./CONTEXTES/$filename/$i-utf8.html ; 157 158 #création des FICHIERSGLOBAUX 159 cat ./CONTEXTES/$filename/$i.txt >> ./FICHIERSGLOBAUX/$filename/CONTEXTES-GLOBAUX.txt; 160 cat ./DUMP-TEXT/$filename/$i-utf8.txt >> ./FICHIERSGLOBAUX/$filename/DUMP-GLOBAUX.txt; 161 let "nbdump=nbdump+1"; 162 163 #6ème colonne: dump initial 164 #7ème colonne : dump utf-8 165 #8ème colonne : contextes 166 #9ème colonne : contextes html 167 #10ème colonne : nombre d'occurrences 168 echo "<td> --> </td> 169 <td><a href=\"../DUMP-TEXT/$filename/$i-utf8.txt\">Dump utf-8 $i</a></td> 170 <td><a href=\"../CONTEXTES/$filename/$i.txt\">Contextes $i</a></td> 171 <td><a href=\"../CONTEXTES/$filename/$i-utf8.html\">Contextes html $i</a></td> 172 <td>$nbocc</td></tr>">> $tableau; 173 174 #-----si ce n'est pas de l'utf-8-------# 175 #---vérifier si l'encodage est reconnu-----# 176 else 177 178 reconnu=$(iconv -l | egrep -io "$encodage"); 179 180 #---- l'encodage n'est pas reconnu par iconv-----# 181 182 if [[ $reconnu = "" ]];then 183 184 185 # ------ détection encodage niveau 2 - dans le fichier -------# 186 187 if egrep -qi "<meta.*charset?=.*" ./PAGES-ASPIREES/$filename/$i.html;then 188 #extraction de l'encodage 189 encodage=$(egrep -io "<meta.*charset?=.*" ./PAGES-ASPIREES/$filename/$i.html | awk 'BEGIN{FS="charset=";}{print $2}' | awk 'BEGIN{FS="[/>]";}{print $1}' | egrep -io "[^\" ]*" ); 190 191 #vérification qu'iconv reconnaît l'encodage extrait 192 reconnu=$(iconv -l | egrep -io $encodage); 193 194 195 #------ l'encodage n'est pas reconnu par iconv------# 196 if [[ $reconnu = "" ]];then 197 198 #6ème colonne : dump initial - vide 199 #7ème colonne : dump utf-8 - vide 200 #8ème colonne : contextes - vide 201 #9ème colonne : contextes html - vide 202 #10ème colonne : nombre d'occurrences - vide 203 echo "<td class=\"erreur\">encodage iconnu ($encodage)</td> 204 <td class = \"erreur\"> encodage inconnu </td> 205 <td class=\"erreur\">encodage inconnu ($encodage)</td> 206 <td class = \"erreur\"> encodage inconnu </td> 207 <td> - </td></tr>" >> $tableau; 208 209 #----- l'encodage est reconnu par iconv----# 210 else 211 212 #lynx et dump initial 213 echo ">>>>encodage niveau 1 - tableau $j, url $i, encodage: $encodage"; 214 lynx -dump -nolist -display_charset="$encodage" ./PAGES-ASPIREES/$filename/$i.html > ./DUMP-TEXT/$filename/$i.txt; 215 216 #convertir l'encodage en utf-8 --> dump utf-8 217 iconv -f $encodage -t utf-8 ./DUMP-TEXT/$filename/$i.txt > ./DUMP-TEXT/$filename/$i-utf8.txt 218 219 #extraction du contexte contenant le motif et du nombre d'occurrences 220 egrep -i "\W(([Aa]m.ricani[sz])|(εξαμερ[ίι]καν[ίι]σ)|([Aα]μερικανοπο[ίι]).*?)|([Aα]μερικανισμός)\W" ./DUMP-TEXT/$filename/$i-utf8.txt > ./CONTEXTES/$filename/$i.txt; 221 nbocc=??; 222 nbocc=$(egrep -o -i "\W(([Aa]m.ricani[sz])|(εξαμερ[ίι]καν[ίι]σ)|([Aα]μερικανοπο[ίι]).*?)|([Aα]μερικανισμός)\W" ./DUMP-TEXT/$filename/$i-utf8.txt | wc -l ); 223 224 #minigrep 225 perl ./PROGRAMMES/minigrepMultilingue2/minigrepmultilingue.pl "UTF-8" ./DUMP-TEXT/$filename/$i-utf8.txt ./PROGRAMMES/minigrepMultilingue2/motif.txt; 226 mv resultat-extraction.html ./CONTEXTES/$filename/$i-utf8.html ; 227 228 #création des FICHIERSGLOBAUX 229 cat ./CONTEXTES/$filename/$i.txt >> ./FICHIERSGLOBAUX/$filename/CONTEXTES-GLOBAUX.txt; 230 cat ./DUMP-TEXT/$filename/$i-utf8.txt >> ./FICHIERSGLOBAUX/$filename/DUMP-GLOBAUX.txt; 231 let "nbdump=nbdump+1"; 232 233 234 #6ème colonne : dump initial 235 #7ème colonne : dump utf-8 236 #8ème colonne : contextes 237 #9ème colonne : contextes html 238 #10ème colonne : nombre d'occurrences 239 echo "<td><a href=\"../DUMP-TEXT/$filename/$i.txt\">($encodage)</a></td> 240 <td><a href=\"../DUMP-TEXT/$filename/$i-utf8.txt\"> Dump utf-8</a></td> 241 <td><a href=\"../CONTEXTES/$filename/$i.txt\">Contextes $i</a></td> 242 <td><a href=\"../CONTEXTES/$filename/$i-utf8.html\">Contextes html $i</a></td> 243 <td>$nbocc</td></tr>" >> $tableau; 244 fi; 245 #---- fin - l'encodage est reconnu de iconv --# 246 247 #---- si le charset n'est pas trouvé dans le fichier----# 248 else 249 #6ème colonne : dump initial 250 #7ème colonne : dump utf-8 - vide 251 #8ème colonne : contextes - vide 252 #9ème colonne : contextes html - vide 253 #10ème colonne : nombre d'occurrences - vide 254 echo "<td class=\"erreur\">$encodage</td> 255 <td class = \"erreur\"> pas de charset </td> 256 <td class = \"erreur\"> pas de charset </td> 257 <td class = \"erreur\"> pas de charset </td> 258 <td class = \"erreur\"> - </td></tr>" >> $tableau; 259 fi; 260 #----fin de la détection d'encodage niveau 2---# 261 262 263 264 #----si l'encodage est reconnu par iconv------# 265 else 266 #lynx et dump initial 267 echo ">>>>encodage niveau 1 - tableau $j, url $i, encodage: $encodage"; 268 lynx -dump -nolist -display_charset="$encodage" ./PAGES-ASPIREES/$filename/$i.html > ./DUMP-TEXT/$filename/$i.txt; 269 270 #convertir l'encodage en utf-8 --> dump utf-8 271 iconv -f $encodage -t utf-8 ./DUMP-TEXT/$filename/$i.txt > ./DUMP-TEXT/$filename/$i-utf8.txt 272 273 #extraction du contexte contenant le motif et du nombre d'occurrences 274 egrep -i "\W(([Aa]m.ricani[sz])|(εξαμερ[ίι]καν[ίι]σ)|([Aα]μερικανοπο[ίι]).*?)|([Aα]μερικανισμός)\W" ./DUMP-TEXT/$filename/$i-utf8.txt > ./CONTEXTES/$filename/$i.txt; 275 nbocc=??; 276 nbocc=$(egrep -o -i "\W(([Aa]m.ricani[sz])|(εξαμερ[ίι]καν[ίι]σ)|([Aα]μερικανοπο[ίι]).*?)|([Aα]μερικανισμός)\W" ./DUMP-TEXT/$filename/$i-utf8.txt | wc -l ); 277 278 279 #minigrep 280 perl ./PROGRAMMES/minigrepMultilingue2/minigrepmultilingue.pl "UTF-8" ./DUMP-TEXT/$filename/$i-utf8.txt ./PROGRAMMES/minigrepMultilingue2/motif.txt ; 281 mv resultat-extraction.html ./CONTEXTES/$filename/$i-utf8.html ; 282 283 #création des FICHIERSGLOBAUX 284 cat ./CONTEXTES/$filename/$i.txt >> ./FICHIERSGLOBAUX/$filename/CONTEXTES-GLOBAUX.txt; 285 cat ./DUMP-TEXT/$filename/$i-utf8.txt >> ./FICHIERSGLOBAUX/$filename/DUMP-GLOBAUX.txt; 286 let "nbdump=nbdump+1"; 287 288 289 #6ème colonne : dump initial 290 #7ème colonne : dump utf-8 291 #8ème colonne : contextes 292 #9ème colonne : contextes html 293 #10ème colonne : nombre d'occurrences 294 echo "<td><a href=\"../DUMP-TEXT/$filename/$i.txt\">($encodage)</a></td> 295 <td><a href=\"../DUMP-TEXT/$filename/$i-utf8.txt\"> Dump utf-8</a></td> 296 <td><a href=\"../CONTEXTES/$filename/$i.txt\">Contextes $i</a></td> 297 <td><a href=\"../CONTEXTES/$filename/$i-utf8.html\">Contextes html $i</a></td> 298 <td>$nbocc</td></tr>" >> $tableau; 299 300 fi; 301 #----fin - encodage reconnu par iconv ----# 302 303 304 fi; 305 #---fin - encodage en utf-8 ---# 306 307 308 fi; 309 #----fin - erreur d'aspiration ----# 310 311 312 313 let "i=i+1"; 314 315 316 done < $dos/$fichierurl; 317 let "j+=1"; 318 319 320 #fermerture des balises ouvertes 321 echo "<tr> 322 <td class=\"final\"></td><td class=\"final\"></td><td class=\"final\"></td><td class=\"final\"></td><td class=\"final\"></td><td class=\"final\"></td> 323 <td class=\"finalglob\"><a href=\"../FICHIERSGLOBAUX/$filename/DUMP-GLOBAUX.txt\">Dumps globaux ("$nbdump")</a></td> 324 <td class=\"finalglob\"><a href=\"../FICHIERSGLOBAUX/$filename/CONTEXTES-GLOBAUX.txt\">Contextes globaux ("$nbdump")</a></td> 325 <td class=\"final\"><td class=\"final\"></td> 326 </tr>" >> $tableau; 327 echo "</table>" >> $tableau; 328 329 } 330 331 echo "</body></html>" >> $tableau; 332 333