mercredi 1 décembre 2010

-o, vive la galère!

Alors, après deux semaines de tentatives vaines pour résoudre le problème d'encodage et de dump vers l'UTF-8, il semblerait que le pc que nous utilisions jusqu'à présent avait décidé de faire son capricieux.
Effectivement, la commande -o ne fonctionne pas. Notre problème a donc trouvé une solution par le biais d'une modification du script et par l'utilisation de la commande -i en solitaire :'(
Voilà donc le script utilisé, sésame des problèmes rencontrés auparavant.

#!/bin/bash
echo "Donnez le nom du dossier contenant les fichiers de liens http : ";
read dossier;
echo "Donnez le nom du fichier html où stocker ces liens dans des tableaux : ";
read tablo;


echo "<html><head><title>tableau de liens</title></head><body>" >> $tablo;

i=1;
j=1;

for fichier in `ls $dossier`
{
    echo "<table border=1>" >> $tablo;
   
    echo "<tr><td align="center" bgcolor=\"silver\" colspan=\"7\"><b>Fichier $fichier</b></td></tr>" >> $tablo;
    echo "<tr><td>Numéros</td><td>URLs</td><td>Pages aspirées</td><td>Dump initial</td><td>Dump utf-8</td><td>Contextes utf-8</td><td>Contextes html</td>" >> $tablo;   
   
   
    mkdir -p ../CONTEXTES/$j ;
    mkdir -p ../DUMP-TXT/$j ;
    mkdir -p ../PAGES-ASPIREES/$j ;
   
   
    for nom in `cat $dossier/$fichier`
    {
    curl -o ../PAGES-ASPIREES/$j/$i.html $nom
    retourcurl=$? ;
        echo "RETOUR CURL : $retourcurl";
        if [[ $retourcurl == 0 ]]
        then
            encodage=$(file -i ../PAGES-ASPIREES/$j/$i.html);
            echo "ENCODAGE initial : $encodage";
       
            if [[ $encodage == "(utf|UTF)-8" ]]
            then
               lynx -dump -nolist -display_charset=$encodage ../PAGES-ASPIREES/$j/$i.html  > ../DUMP-TXT/$j/$i-utf8.txt ;
            echo "<tr><td align=\"center\" width=\"50\">$i</td><td align=\"center\" width=\"100\"><a href=\"$nom\">lien n°$i</a></td><td align=\"center\" width=\"100\"><a href=\"../PAGES-ASPIREES/$j/$i.html\">$i.html</a></td><td align=\"center\" width=\"100\"><a href=\"../DUMP-TXT/$j/$i.txt\">$i.txt</a><br/><small>($encodage)</small></td><td align=\"center\" width=\"100\"><a href=\"../DUMP-TXT/$j/$i-utf8.txt\">$i-utf8.txt</a></td><td align=\"center\" width=\"100\"><a href=\"../CONTEXTES/$j/$i-utf8.txt\">$i-utf8.txt</a></td><td align=\"center\" width=\"100\"><a href=\"../CONTEXTES/$j/$i-utf8.html\">$i-utf8.html</a></td></tr>" >> $tablo;
           
            else
               echo "on cherche un charset dans la page aspiree...";
               if egrep -qi "(charset=.*?(\"|\')|encoding=.*?(\"|\'))" ../PAGES-ASPIREES/$j/$i.html ;
                  then
                      echo "Presence d'un charset...";
                      encodage=$(egrep -m 1 -o '(((utf|UTF)-(8|16|32))|(gb|GB)(k|K|2312|18030)|(iso|ISO|Iso)-8859-(\w)(\w)?|(WINDOWS|windows)-1252|(WINDOWS|windows)-1256|((m|M)(a|A)(c|C)(R|r)(O|o)(M|m)(a|A)(n|N))|us-ascii)' ../PAGES-ASPIREES/$j/$i.html | sort -u) ;
                      echo "charset extrait : $encodage ";
                       
       
                      VERIFENCODAGEDANSICONV=$(iconv -l | egrep -i $encodage | sort -u);
                      if [[ $VERIFENCODAGEDANSICONV == "" ]]
                        then
                            echo "VERIF : <$VERIFENCODAGEDANSICONV> ==> inconnu par iconv, on ne fait rien"
                            echo "<tr><td align=\"center\" width=\"50\">$i</td><td align=\"center\" width=\"100\"><a href=\"$nom\">lien n°$i</a></td><td align=\"center\" width=\"100\"><a href=\"../PAGES-ASPIREES/$j/$i.html\">$i.html</a></td><td align=\"center\" width=\"100\" bgcolor=\"aqua\"><small>Encodage<br/>non d&eacute;tect&eacute;</small></td><td align=\"center\" width=\"100\" bgcolor=\"aqua\"><small>Encodage<br/>non d&eacute;tect&eacute;</small></td><td align=\"center\" width=\"100\" bgcolor=\"aqua\"><small>Encodage<br/>non d&eacute;tect&eacute;</small></td><td align=\"center\" width=\"100\" bgcolor=\"aqua\"><small>Encodage<br/>non d&eacute;tect&eacute;</small></td></tr>" >> $tablo;
                        else
                            echo "VERIF : <$VERIFENCODAGEDANSICONV> ==> connu par iconv, c'est parti ==> lynx, iconv..."
                            lynx -dump -nolist -display_charset=$encodage ../PAGES-ASPIREES/$j/$i.html  > ../DUMP-TXT/$j/$i.txt ;
           
                            echo "ENCODAGE final : $encodage (avant conversion vers utf-8)";
                            iconv -f $encodage -t utf-8 ../DUMP-TXT/$j/$i.txt > ../DUMP-TXT/$j/$i-utf8.txt
                            echo "<tr><td align=\"center\" width=\"50\">$i</td><td align=\"center\" width=\"100\"><a href=\"$nom\">lien n°$i</a></td><td align=\"center\" width=\"100\"><a href=\"../PAGES-ASPIREES/$j/$i.html\">$i.html</a></td><td align=\"center\" width=\"100\"><a href=\"../DUMP-TXT/$j/$i.txt\">$i.txt</a><br/><small>($encodage)</small></td><td align=\"center\" width=\"100\"><a href=\"../DUMP-TXT/$j/$i-utf8.txt\">$i-utf8.txt</a></td><td align=\"center\" width=\"100\"><a href=\"../CONTEXTES/$j/$i-utf8.txt\">$i-utf8.txt</a></td><td align=\"center\" width=\"100\"><a href=\"../CONTEXTES/$j/$i-utf8.html\">$i-utf8.html</a></td></tr>" >> $tablo;
                        fi
       
                   else
                      echo "Pas de charset detecte : on ne fait rien pour le DUMP... ";
                      echo "<tr><td align=\"center\" width=\"50\">$i</td><td align=\"center\" width=\"100\"><a href=\"$nom\">lien n°$i</a></td><td align=\"center\" width=\"100\"><a href=\"../PAGES-ASPIREES/$j/$i.html\">$i.html</a></td><td align=\"center\" width=\"100\" bgcolor=\"aqua\"><small>Encodage<br/>non d&eacute;tect&eacute;</small></td><td align=\"center\" width=\"100\" bgcolor=\"aqua\"><small>Encodage<br/>non d&eacute;tect&eacute;</small></td><td align=\"center\" width=\"100\" bgcolor=\"aqua\"><small>Encodage<br/>non d&eacute;tect&eacute;</small></td><td align=\"center\" width=\"100\" bgcolor=\"aqua\"><small>Encodage<br/>non d&eacute;tect&eacute;</small></td></tr>" >> $tablo;
                   fi 
            fi
        else
           echo "<tr><td align=\"center\" width=\"50\">$i</td><td align=\"center\" width=\"100\"><a href=\"$nom\">lien n°$i</a></td><td align=\"center\" width=\"100\" bgcolor=\"red\">Page non aspiree...</td><td align=\"center\" width=\"100\" bgcolor=\"aqua\"><small>Encodage<br/>non d&eacute;tect&eacute;</small></td><td align=\"center\" width=\"100\" bgcolor=\"aqua\"><small>Encodage<br/>non d&eacute;tect&eacute;</small></td><td align=\"center\" width=\"100\" bgcolor=\"aqua\"><small>Encodage<br/>non d&eacute;tect&eacute;</small></td><td align=\"center\" width=\"100\" bgcolor=\"aqua\"><small>Encodage<br/>non d&eacute;tect&eacute;</small></td></tr>" >> $tablo;
        fi
    let "i+=1";
   
    }
   

    let "i+=1";
    let "j+=1";
}

    echo "</table>" >> $tablo;
    echo "<br>" >> $tablo;


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

Aucun commentaire:

Enregistrer un commentaire