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étecté</small></td><td align=\"center\" width=\"100\" bgcolor=\"aqua\"><small>Encodage<br/>non détecté</small></td><td align=\"center\" width=\"100\" bgcolor=\"aqua\"><small>Encodage<br/>non détecté</small></td><td align=\"center\" width=\"100\" bgcolor=\"aqua\"><small>Encodage<br/>non détecté</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étecté</small></td><td align=\"center\" width=\"100\" bgcolor=\"aqua\"><small>Encodage<br/>non détecté</small></td><td align=\"center\" width=\"100\" bgcolor=\"aqua\"><small>Encodage<br/>non détecté</small></td><td align=\"center\" width=\"100\" bgcolor=\"aqua\"><small>Encodage<br/>non détecté</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étecté</small></td><td align=\"center\" width=\"100\" bgcolor=\"aqua\"><small>Encodage<br/>non détecté</small></td><td align=\"center\" width=\"100\" bgcolor=\"aqua\"><small>Encodage<br/>non détecté</small></td><td align=\"center\" width=\"100\" bgcolor=\"aqua\"><small>Encodage<br/>non détecté</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