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