#!/bin/bash ######################################################################################## #nous utilisons des donnees entrees par l utilisateur ######################################################################################## echo "Donnez le nom du répertoire contenant les fichiers des URLs : "; read REP; echo "Donnez le nom du fichier html où stocker les tableaux des liens : "; read tablo; ######################################################################################## # ici nous commençons l'aborescence du fichier html ######################################################################################## echo "tableaux de liens" > $tablo; echo "


" >> $tablo; ######################################################################################## #première boucle for servant a creer les repertoires pour y inserer les fichiers ######################################################################################## for fic in `ls $REP` { echo "" >> $tablo; # Variable i pour compter les URLs j=1; mkdir -p ./PAGES-ASPIREES/${fic%.*} mkdir -p ./DUMP-TEXT/${fic%.*} mkdir -p ./DUMP-TEXT/${fic%.*}-utf8 mkdir -p ./contextes/${fic%.*} mkdir -p ./contextes/${fic%.*}-html ############################################################################################### #deuxième boucle for indentée dans la premiere, #ici nous creons les pages aspirees et récupérons l'information d'encodage des pages ############################################################################################### for nom in `cat $REP/$fic` { echo "========================================================="; echo " TRAITEMENT ==> $fic : $nom "; curl -o ./PAGES-ASPIREES/${fic%.*}/$j.html $nom # nous creons une variable encodage ayant la valeur de l'encodage à partir des pages aspirées #cut nous permet de récuperer seulement l'encodage encodage=$(file -i ./PAGES-ASPIREES/${fic%.*}/$j.html | cut -d= -f2) echo "ENCODAGE INITIAL RECUPERE PAR LA COMMANDE FILE -i : $encodage"; ######################################################################################## # première boucle if correspondant à l'encodage ######################################################################################## if [[ $encodage == "utf-8" ]] then echo "ENCODAGE INITIAL DEJA en UTF8 : on lance le DUMP directement..."; lynx -dump -nolist -display_charset=$encodage ./PAGES-ASPIREES/${fic%.*}/$j.html > ./DUMP-TEXT/${fic%.*}-utf8/$j.txt echo "nom du fichier traité ----------> ${fic%.*} "; ######################################################################################## # ici nous mettons dans la variable 'motif' le nom de notre fichier pour l'utiliser en contexte ######################################################################################## motif=${fic%.*} ; ######################################################################################## # faire un echo nous permet de voir si la variable motif a bien le mot recherché ;) ######################################################################################## echo "motif recherché = $motif"; ######################################################################################## # ici nous cherchons $motif avec egrep #en ignorant les majuscules (-i); #en numérotant les lignes trouvées (-n); #en mettant la ligne précédente (-B) et la ligne suivante (-A); # et l'inserrons dans un fichier texte ######################################################################################## egrep -i -n -A 1 -B 1 "$motif" ./DUMP-TEXT/${fic%.*}-utf8/$j.txt > ./contextes/${fic%.*}/$j.txt ######################################################################################## # ici nous créons une page html pour mettre en avant le contexte créé préalablement avec egrep # sed nous permet de - remplacer les fins de ligne du fichier contexte par les balises
servant à faire des retours à la ligne dans html # (le 1er sed sera utilisé dans notre seconde commande sed il est donc dans une variable) # - rechercher le motif étudié et de le mettre entre des balises pour le mettre en gras, nous ignorons les majuscules avec I en flag ;D # et nous insérons cette modification dans le fichier html préalablement balisé :D ######################################################################################## echo "contexteContexte du mot : $motif

" > ./contextes/${fic%.*}-html/$j.html; add_lf=$(sed 's/$/
/g' ./contextes/${fic%.*}/$j.txt); motif_bold=$(echo $add_lf | sed "s/$motif/$motif<\/b>/Ig" >> ./contextes/${fic%.*}-html/$j.html ); echo "" >> ./contextes/${fic%.*}-html/$j.html; ######################################################################################## echo "" >> $tablo; else # aller chercher le charset dans le fichier #les echo nous permettent d ecrire la procedure dans le shell lorsque lencodage est different d utf-8 echo "ENCODAGE INITIAL NON UTF8 : "; echo "1. on commence par chercher le charset de la page aspiree pour determiner l'encodage"; echo "2. on verifie si le contenu du charset est supporte par iconv la dump"; echo "3. si oui on lynx et on iconv, autrement on ne fait rien..."; #ici on va chercher avec egrep le charset des pages aspirées créées ci dessus et nous ne gardons que l'encodage avec cut encodage2=$(egrep -o "charset=[^\"]+" ./PAGES-ASPIREES/${fic%.*}/$j.html | cut -d= -f2) ; echo "ENCODAGE RECUPERE DANS LE CHARSET : $encodage2 "; ###################################################################################################### # la ligne de commande ayant pour nom VERIFENCODAGE: #l'option -l permet de voir la liste d'encodage connue par iconv #egrep nous permet d'afficher encodage2 en ignorant les majuscules/minuscules #sort nous permet d'eviter les doublons ###################################################################################################### VERIFENCODAGE=$(iconv -l | egrep -o -i "$encodage2" | sort -u) ; echo "VERIF de l'encodage dans le fichier ICONV : $VERIFENCODAGE"; ###################################################################################################### # deuxième boucle if indentée dans la premiere "else" concernant la conversion du fichier ###################################################################################################### if [[ $VERIFENCODAGE != "" ]] then echo "ENCODAGE CONNU PAR ICONV : on continue..."; lynx -dump -nolist -display_charset=$encodage2 ./PAGES-ASPIREES/${fic%.*}/$j.html > ./DUMP-TEXT/${fic%.*}/$j.txt ; iconv -f $encodage2 -t UTF-8 ./DUMP-TEXT/${fic%.*}/$j.txt > ./DUMP-TEXT/${fic%.*}-utf8/$j.txt; echo "nom du fichier traité ----------> ${fic%.*} "; ################################################################################################# # ici nous mettons dans la variable 'motif' le nom de notre fichier pour l'utiliser en contexte ################################################################################################# motif=${fic%.*} ; ######################################################################################## # faire un echo nous permet de voir si la variable motif a bien le mot recherché ;) ######################################################################################## echo "motif recherché = $motif"; ######################################################################################## # ici nous cherchons $motif avec egrep #en ignorant les majuscules; #en numérotant les lignes trouvées; #en mettant la ligne précédente (-B) et la ligne suivante (-A); ########################################################################################################################################### egrep -i -n -A 1 -B 1 "$motif" ./DUMP-TEXT/${fic%.*}-utf8/$j.txt > ./contextes/${fic%.*}/$j.txt ########################################################################################################################################### # ici nous créons une page html pour mettre en avant le contexte créé préalablement avec egrep # sed nous permet de - remplacer les fins de ligne du fichier contexte par les balises
servant à faire des retours à la ligne dans html # (le 1er sed sera utilisé dans notre seconde commande sed il est donc dans une variable) # - rechercher le motif étudié et de le mettre entre des balises pour le mettre en gras, nous ignorons les majuscules avec I en flag ;D # et nous insérons cette modification dans le fichier html préalablement balisé :D ############################################################################################################################################ echo "contexteContexte du mot : $motif

" > ./contextes/${fic%.*}-html/$j.html; #je voudrais mettre en avant le motif recherché ... add_lf=$(sed 's/$/
/g' ./contextes/${fic%.*}/$j.txt); motif_bold=$(echo $add_lf | sed "s/$motif/$motif<\/b>/Ig" >> ./contextes/${fic%.*}-html/$j.html ); echo "" >> ./contextes/${fic%.*}-html/$j.html; #################################################################################################### echo "
" >> $tablo; else echo "ENCODAGE INCONNU PAR ICONV : on ne fait rien..."; echo "" >> $tablo; fi ######################################################################################## # fermeture de la deuxième boucle if indentée dans la premiere ######################################################################################## fi ######################################################################################## # fermeture de la première boucle if ######################################################################################## let "j+=1"; } ######################################################################################## # fermeture de la deuxième boucle for indentée dans la premiere ######################################################################################## echo "
Tableau ${fic%.*}
$j$nomPAGE ASPIREEPAGE DUMPdéjà en UTF8PAGE CONTEXTEPAGE CONTEXTE HTML
$j$nomPAGE ASPIREEPAGE DUMPPAGE DUMP UTF8PAGE CONTEXTEPAGE CONTEXTE HTML
$j$nomPAGE ASPIREEERREUR : il faut traiter ce fichier à la main...
encodage : $encodage2 ??
ERREUR : il faut traiter ce fichier à la main...Erreur, nous ne pouvons extraire les contextes...N'ayant pas les contextes en fichier texte, nous ne pouvons créer la page html...
" >> $tablo; echo "


" >> $tablo; ######################################################################################## # fermeture de la première boucle for ######################################################################################## } echo "" >> $tablo;