#!bin/bash

read REP;
read tablo;
#read motif;

motif="sans( |-)papiers?|clandestin(i|a)|нелегалы|гастарбайтер(ы)?"

echo "<html><head><title>Tableaux de liens</title><link rel=\"stylesheet\" href=\"style.css\"/><meta charset=\"utf-8\"></head><body><table border=\"1\">" > $tablo; 

j=0;
for fic in `ls $REP`
do
  let "j+=1";
  echo "<table align=\"center\" border=\"1\"><tr><th colspan=\"9\">Tableau n°$j<br>$fic</br></th></tr><tr><th>Numero<br>URL</br></th><th>URL</th><th>Retour curl</th><th>Pages<br>Aspirees</br></th><th>Dump inital</th><th>Dump UTF-8</th><th>Contextes<br>utf-8</br></th><th>Contextes<br>html</br></th><th>Nombre<br>d'Occurences</br></th></tr>" >> $tablo;
      
      
  mkdir -p ./PAGES-ASPIREES/$fic;
  mkdir -p ./DUMP-TEXT/$fic;
  mkdir -p ./CONTEXTES/$fic;
  mkdir -p ./FICHIERGLOBAUX;
  
  i=0;
  nbdump=0;
  for nom in `cat $REP/$fic`
    do
    let "i+=1"; 

#-----Aspiration: CURL------------------------------------------

    retour_aspi=$(curl -o ./PAGES-ASPIREES/$fic/$i.html -w %{http_code} $nom);
    echo $retour_aspi

#-----si la page n'a pas été aspirée (son retour est différent de 200), on ne fait rien-----

    if [[ $retour_aspi -ne 200 ]] 

        then

            echo "<tr><td>$i</td><td ><a href=\"$nom\">URL$i</a></td><td bgcolor=\"666699\">$retour_aspi<br><small>Page Non-Aspirée</small></br></td><td bgcolor=\"666699\">/</td><td bgcolor=\"666699\">/</td><td bgcolor=\"666699\">/</td><td bgcolor=\"666699\">/</td><td bgcolor=\"666699\">/</td><td bgcolor=\"666699\">/</td></tr>" >> $tablo;

#-----si la page a bien été aspirée, on détecte son encodage avec FILE------------------   
    
    else 
	encodage=$(file -i ./PAGES-ASPIREES/$fic/$i.html | cut -d= -f2);

#----------si la page est en utf-8, on la convertit en texte avec LYNX -DUMP------------------
	
        if [ $encodage == 'utf-8' ] 
	    then
	    lynx -dump -nolist -display_charset=$encodage ./PAGES-ASPIREES/$fic/$i.html > ./DUMP-TEXT/$fic/$i-utf8.txt;

#---------------on en extrait les contextes où apparaît notre motif avec EGREP---------------------------

            egrep -i "\b$motif\b" ./DUMP-TEXT/$fic/$i-utf8.txt > ./CONTEXTES/$fic/$i-utf8.txt;

#--------------------on convertit ces contextes en html avec MINIGREPMULTILINGUE-------------------

            /opt/ActivePerl-5.8/bin/perl ./minigrepmultilingue-v2.2-regexp/minigrepmultilingue.pl  "UTF-8" ./DUMP-TEXT/$fic/$i-utf8.txt ./minigrepmultilingue-v2.2-regexp/motif-regexp.txt;
            # on n'oublie pas de renommer le fichier résultant de minigrep 
            # (sans quoi chaque nouveau fichier crée écrasera le précédent...)
            mv resultat-extraction.html ./CONTEXTES/$fic/$i-utf8.html;  

#-------------------------on compte le nombre d'occurence du motif avec WC----------------

             nbOcc=??;
	     nbOcc=$(egrep -o -i "\b$motif\b" ./DUMP-TEXT/$fic/$i-utf8.txt | wc -l );

	    echo "<tr><td >$i</td><td><a href=\"$nom\">URL$i</a></td><td>$retour_aspi</td><td><a href=\"../PAGES-ASPIREES/$fic/$i.html\">Page Aspirée<br>$i</br></a></td><td>/</td><td><a href=\"../DUMP-TEXT/$fic/$i-utf8.txt\">$i-utf8.txt</a></td><td><a href=\"../CONTEXTES/$fic/$i-utf8.txt\">$i-utf8.txt</a></td><td><a href=\"../CONTEXTES/$fic/$i-utf8.html\">$i.html</a></td><td>$nbOcc</td></tr>" >> $tablo;

#------------------------------on concatène les fichiers CONTEXTES et DUMP de chacunes des langues, pour les futurs nuages de mots-------------------------

            cat ./CONTEXTES/$fic/$i-utf8.txt >> ./FICHIERGLOBAUX/CONTEXTES-GLOBAUX_$fic.txt;
            cat ./DUMP-TEXT/$fic/$i-utf8.txt >> ./FICHIERGLOBAUX/DUMP-GLOBAUX_$fic.txt;
	    let "nbdump+=1";

#----------si la page n'est pas en utf8, on vérifie si son encodage est connu de ICONV-----------------

        else 
	    testiconv=$(iconv -l | egrep -io $encodage);

#---------------si l'encodage est connu de ICONV, on fait le LYNX -DUMP--------------

	    if [[ $testiconv != "" ]] 

		then
		lynx -dump -nolist -display_charset=$encodage ./PAGES-ASPIREES/$fic/$i.html > ./DUMP-TEXT/$fic/$i.txt;

#--------------------on convertit le résultat obtenu en utf8 avec ICONV------------

		iconv -f $encodage -t utf-8 ./DUMP-TEXT/$fic/$i.txt > ./DUMP-TEXT/$fic/$i-utf8.txt;

#-------------------------on extrait les contextes avec EGREP---------------------------

                egrep -i "\b$motif\b" ./DUMP-TEXT/$fic/$i-utf8.txt > ./CONTEXTES/$fic/$i-utf8.txt;

#------------------------------on les convertit en html avec MINIGREPMULTILINGUE-------------------

                /opt/ActivePerl-5.8/bin/perl ./minigrepmultilingue-v2.2-regexp/minigrepmultilingue.pl  "UTF-8" ./DUMP-TEXT/$fic/$i-utf8.txt ./minigrepmultilingue-v2.2-regexp/motif-regexp.txt;
                mv resultat-extraction.html ./CONTEXTES/$fic/$i-utf8.html;

#-----------------------------------on compte les occurences avec WC------------------

                nbOcc=??;
		nbOcc=$(egrep -o -i "\b$motif\b" ./DUMP-TEXT/$fic/$i-utf8.txt | wc -l );

		echo "<tr><td>$i</td><td><a href=\"$nom\">URL$i</a></td><td >$retour_aspi</td><td><a href=\"../PAGES-ASPIREES/$fic/$i.html\">Page Aspirée<br>$i</br></a></td><td><a href=\"../DUMP-TEXT/$fic/$i.txt\">$i.txt<br><small>($encodage)</small></br></td><td><a href=\"../DUMP-TEXT/$fic/$i-utf8.txt\">$i-utf8.txt</a></td><td><a href=\"../CONTEXTES/$fic/$i-utf8.txt\">$i-utf8.txt</a></td><td><a href=\"../CONTEXTES/$fic/$i-utf8.html\">$i.html</a></td><td>$nbOcc</td></tr>" >> $tablo;

#---------------------------------------concaténation des fichiers CONTEXTES et DUMP-------------------------

                cat ./CONTEXTES/$fic/$i-utf8.txt >> ./FICHIERGLOBAUX/CONTEXTES-GLOBAUX_$fic.txt;
                cat ./DUMP-TEXT/$fic/$i-utf8.txt >> ./FICHIERGLOBAUX/DUMP-GLOBAUX_$fic.txt;
                let "nbdump+=1";

#---------------si l'encodage n'est pas connu de iconv, on extrait le charset avec EGREP------           
            
            else 

                if egrep -i "<meta.*charset" ./PAGES-ASPIREES/$fic/$i.html ; 
                
	            then
		    charset=$(egrep -i "<meta.*charset" ./PAGES-ASPIREES/$fic/$i.html | egrep -io 'charset *=[^\"]+'  | tr [A-Z] [a-z] | sort -u | cut -f2 -d=) ; 
                    # on ne sélctionne dans le résultat de egrep que la partie qui nous intéresse,
                    # c'est-à-dire ce qui se trouve après le =

#-------------------------on vérifie que le charset extrait est bien connu de ICONV------------

                    iconv_charset=$(iconv -l | egrep -io $charset | sort -u); 

#------------------------------s'il ne l'est pas, on s'arrête là---------------------------

	                if [[ $iconv_charset == "" ]] 
                      
		                then

		                echo "<tr><td>$i</td><td><a href=\"$nom\">URL$i</a></td><td>$retour_aspi</td><td><a href=\"../PAGES-ASPIREES/$fic/$i.html\">Page Aspirée<br>$i</br></a></td><td><a href=\"../DUMP-TEXT/$fic/$i.txt\">$i.txt<br><small>($encodage)</small></br></td><td><small>conversion impossible</small></td></tr>" >> $tablo:

#------------------------------s'il l'est, on fait le LYNX -DUMP---------------------------

                        else 
                        
                        lynx -dump -nolist -display_charset=$charset ./PAGES-ASPIREES/$fic/$i.html  > ./DUMP-TEXT/$fic/$i.txt ;

#-----------------------------------on convertit en utf8------------------------------

			iconv -f $charset -t utf-8 ./DUMP-TEXT/$fic/$i.txt > ./DUMP-TEXT/$fic/$i-utf8.txt;

#----------------------------------------on extrait les contextes--------------------

                        egrep -i "\b$motif\b" ./DUMP-TEXT/$fic/$i-utf8.txt > ./CONTEXTES/$fic/$i-utf8.txt;

#---------------------------------------------on les convertit en html-----------------------------

                        /opt/ActivePerl-5.8/bin/perl ./minigrepmultilingue-v2.2-regexp/minigrepmultilingue.pl  "UTF-8" ./DUMP-TEXT/$fic/$i-utf8.txt ./minigrepmultilingue-v2.2-regexp/motif-regexp.txt;
                        mv resultat-extraction.html ./CONTEXTES/$fic/$i-utf8.html;

#--------------------------------on compte le nombre d'occurences--------------------------

                        nbOcc=??;
			nbOcc=$(egrep -o -i "\b$motif\b" ./DUMP-TEXT/$fic/$i-utf8.txt | wc -l );

		        echo "<tr><td>$i</td><td><a href=\"$nom\">URL$i</a></td><td>$retour_aspi</td><td><a href=\"../PAGES-ASPIREES/$fic/$i.html\">Page Aspirée<br>$i</br></a></td><td><a href=\"../DUMP-TEXT/$fic/$i.txt\">$i.txt<br><small>($charset)</small></br></td><td><a href=\"../DUMP-TEXT/$fic/$i-utf8.txt\">$i-utf8.txt</a></td><td><a href=\"../CONTEXTES/$fic/$i-utf8.txt\">$i-utf8.txt</a></td><td><a href=\"../CONTEXTES/$fic/$i-utf8.html\">$i.html</a></td><td>$nbOcc</td></tr>" >> $tablo;

#------------------------------------concaténation des fichiers CONTEXTES et DUMP-------------------------------------

                        cat ./CONTEXTES/$fic/$i-utf8.txt >> ./FICHIERGLOBAUX/CONTEXTES-GLOBAUX_$fic.txt;
                        cat ./DUMP-TEXT/$fic/$i-utf8.txt >> ./FICHIERGLOBAUX/DUMP-GLOBAUX_$fic.txt;
                        let "nbdump+=1";


                        fi # charset extrait connu de iconv/inconnu de iconv

                    fi # la page contient-elle un charset ?

                fi # encodage connu de iconv/inconnu de iconv

            fi # la page est en utf8/n'est pas en utf8

        fi # l'aspiration a réussi/échoué

  done

echo "</table><p align=\"center\"></p>" >> $tablo;

done

echo "</body></html>" >> $tablo; 

-----------------------------176368779242765371948472860--
