#!/bin/perl
# script pour créer le tableau des liens
#ne pas oublier de créer un fichier txt avec le langue et l'adresse des url et du futur tableau : <input.txt
use warnings;
use LWP::UserAgent;
use Encode;
use utf8;

print "Donnez le nom du fichier contenant les langues \n"; 
$listehttp=<STDIN>; #lecture de ce que l'utilisateur entre au clavier et association à une variable
chomp($listehttp); #on supprime le retour chariot
print "Donnez un nom de fichier html où stocker ces liens \n"; #c'est la liste des pages à aspirer
$filehtml=<STDIN>;
chomp($filehtml);

open FILEIN, "$listehttp" or die; # ouverture du fichier des listes
open FILEOUT,">>$filehtml"; # ouverture du fichier HTML en écriture
print FILEOUT "<html>\n<head>\n<title>Ecriture</title>\n";
print FILEOUT "<meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\"> </head>\n<body>\n";# fin en-tete html
$i=0;
#traitement langues


while (defined ($langue = <FILEIN>)) #tant qu'il y a des langues
{ 
	print "$langue";#on lit la langue
	open FILEBIS, "../URLS/$langue" or die;
	print FILEOUT "<table cellspacing=\"10\" cellpadding=\"5\" width=\"600px\" background =\"../IMAGES/$langue.jpg\">"; 
	#on commence le tableau en récupérant la langue du fichier pour l'image et le titre
	print $langue;
	print FILEOUT "<tr><th colspan=8>Liste des URLs en $langue </th></tr><tr><th>Num</th><th>URL</th></tr>";
	print FILEOUT "<tr><th>Num</th><th>URL</th><th>Aspirées</th><th>Retour curl</th><th>Codage</th><th>Dump</th><th>Contexte</th><th>NBoccur</th></tr>";
	`touch ../FICHIERSGLOBAUX/CONTEXTES-GLOBAUX_$langue.txt` ;
	`touch ../FICHIERSGLOBAUX/DUMP-GLOBAUX_$langue.txt` ;
	$nbdump=0;
	
	#tant qu'il y a des urls
	while (defined ($ligne = <FILEBIS>)) 
	{ 
		print $ligne;#on lit la ligne
		chomp($ligne);
		my $ua = LWP::UserAgent->new ();
		my $url = $ligne;
		get ($ua, $url);
		$i=$i+1;
		#cherche url et encodage
		sub get
		{
			my ($ua, $url) = @_;
			my $response = $ua->get ($url);
			if ($response->is_success ()) #si on a aspiré
			{
				my $content_encoding = $response->headers_as_string;
				$retourasp=$response->code;
				$content_encoding =~ /\bcharset\s*=\s*([\w-]+)/i;#cherche encodage
				$encodage_page = uc($1); 
				print "$encodage_page\n";
				if ($encodage_page ne " ")
				{
				#si utf8
					if ($encodage_page =~ /utf\-?8/i) 
					{ #on enregistre
						`curl -o ../PAGES-ASPIREES/$i.html \"$ligne\"`;# on curl
						`lynx -dump -nolist -display_charset=$encodage_page ../PAGES-ASPIREES/$i.html  > ../DUMP-TEXT/$i-utf8.txt` ;
					}
					#sinon recodage en utf8 et enregistrement
					else
					{
						print "on vient d'enregistrer la page $i.html en $encodage_page";
						`curl -o ../PAGES-ASPIREES/$i.html \"$ligne\"`;# on curl
						`lynx -dump -nolist -display_charset=$encodage_page ../PAGES-ASPIREES/$i.html  > ../DUMP-TEXT/$i.txt` ;   
						`iconv -f $encodage_page -t UTF-8 ../DUMP-TEXT/$i.txt > ../DUMP-TEXT/$i-utf8.txt`;
						traite($langue);
					}
					sub traite
					{
						
						if ($langue eq "hindi") #si c'est du hindi
						{
							$motif="लिपि|लिपि|लिखावट|रचना";
							print "egrep $motif hindi";
							`egrep -i "\b$motif\b" ../DUMP-TEXT/$i-utf8.txt > ../CONTEXTES/$i-cont.txt` ;
							$nbOccur=0;
							$nbOccur=`egrep -o "\b$motif\b" ../DUMP-TEXT/$i-utf8.txt | sort | uniq -c`;
							print $nbOccur;
							print FILEOUT "<tr><td>$i</td><td><a href=\"$ligne\">Page$i</a></td><td><a href=\"../PAGES-ASPIREES/$i.html\">$i.html</a></td><td>$retourasp</td>";
							print FILEOUT "<td>$encodage_page</td><td><a href=\"../DUMP-TXT/$i-utf8.txt\">$i-utf8.txt</a></td><td><a href=\"../CONTEXTES/$i-cont.txt\">$i-Cutf8.txt</a></td><td><td align=\"center\">$nbOccur</td></tr>";
							`cat ../CONTEXTES/$i-cont.txt >> ../FICHIERSGLOBAUX/CONTEXTES-GLOBAUX_$langue.txt` ;
							`cat ../DUMP-TEXT/$i-utf8.txt >> ../FICHIERSGLOBAUX/DUMP-GLOBAUX_$langue.txt` ;
							$nbdump=$nbdump+1;
						}
						elsif ($langue eq "francais") #si c'est du français
						{
							$motif="écriture|criture";
							`egrep -i "\b$motif\b" ../DUMP-TEXT/$i-utf8.txt > ../CONTEXTES/$i-cont.txt` ;
							$nbOccur=0;
							$nbOccur=`egrep -o -i "\b$motif\b" ../DUMP-TEXT/$i-utf8.txt | wc -l`;
							print $nbOccur;
							print FILEOUT "<tr><td>$i</td><td><a href=\"$ligne\">Page$i</a></td><td><a href=\"../PAGES-ASPIREES/$i.html\">$i.html</a></td><td>$retourasp</td>";
							print FILEOUT "<td>$encodage_page</td><td><a href=\"../DUMP-TXT/$i-utf8.txt\">$i-utf8.txt</a></td><td><a href=\"../CONTEXTES/$i-cont.txt\">$i-Cutf8.txt</a></td><td><td align=\"center\">$nbOccur</td></tr>";
							`cat ../CONTEXTES/$i-cont.txt >> ../FICHIERSGLOBAUX/CONTEXTES-GLOBAUX_$langue.txt` ;
							`cat ../DUMP-TEXT/$i-utf8.txt >> ../FICHIERSGLOBAUX/DUMP-GLOBAUX_$langue.txt` ;
							$nbdump=$nbdump+1;
						}
						
						elsif ($langue eq "japonais") #si c'est du japonais
						{
							$motif="文字|作文|執筆|字|書体|構成|筆跡|習字|聖典|著述業|記載事項";
							`egrep "$motif" ../DUMP-TEXT/$i-utf8.txt > ../CONTEXTES/$i-cont.txt` ;
							$nbOccur=0;
							$nbOccur=`egrep -o "$motif" ../DUMP-TEXT/$i-utf8.txt | sort | uniq -c`;
							print $nbOccur;
							print FILEOUT "<tr><td>$i</td><td><a href=\"$ligne\">Page$i</a></td><td><a href=\"../PAGES-ASPIREES/$i.html\">$i.html</a></td><td>$retourasp</td>" ;
							print FILEOUT "<td>$encodage_page</td><td><a href=\"../DUMP-TXT/$i-utf8.txt\">$i-utf8.txt</a></td><td><a href=\"../CONTEXTES/$i-cont.txt\">$i-Cutf8.txt</a></td><td><td align=\"center\">$nbOccur</td></tr>";
							`cat ../CONTEXTES/$i-cont.txt >> ../FICHIERSGLOBAUX/CONTEXTES-GLOBAUX_$langue.txt` ;
							`cat ../DUMP-TEXT/$i-utf8.txt >> ../FICHIERSGLOBAUX/DUMP-GLOBAUX_$langue.txt` ;
							$nbdump=$nbdump+1;
						}	
						
						elsif ($langue == "anglais") #si c'est de l'anglais
						{
							$motif="writing|Writing|WRITING";
							`egrep -i "\b$motif\b" ../DUMP-TEXT/$i-utf8.txt > ../CONTEXTES/$i-cont.txt` ;
							$nbOccur=0;
							$nbOccur=`egrep -o "\b$motif\b" ../DUMP-TEXT/$i-utf8.txt | wc -l`;
							print $nbOccur;
							print FILEOUT "<tr><td>$i</td><td><a href=\"$ligne\">Page$i</a></td><td><a href=\"../PAGES-ASPIREES/$i.html\">$i.html</a></td><td>$retourasp</td>" ;
							print FILEOUT "<td>$encodage_page</td><td><a href=\"../DUMP-TEXT/$i-utf8.txt\">$i-utf8.txt</a></td><td><a href=\"../CONTEXTES/$i-cont.txt\">$i-Cutf8.txt</a></td><td><td align=\"center\">$nbOccur</td></tr>";
							`cat ../CONTEXTES/$i-cont.txt >> ../FICHIERSGLOBAUX/CONTEXTES-GLOBAUX_$langue.txt` ;
							`cat ../DUMP-TEXT/$i-utf8.txt >> ../FICHIERSGLOBAUX/DUMP-GLOBAUX_$langue.txt` ;
							$nbdump=$nbdump+1;
						} 		
						
						else #si c'est du chinois
						{
							$motif="文字|字體|書法|字跡|筆跡|文體|風格|寫作|書法|文書|字據|入賬|賬簿|賬目|聖經|写入|文体|风格|证书";
							`egrep "$motif" ../DUMP-TEXT/$i-utf8.txt > ../CONTEXTES/$i-cont.txt` ;
							print "egrep $motif chinois";
							$nbOccur=0;
							$nbOccur=`egrep -o "$motif" ../DUMP-TEXT/$i-utf8.txt | sort | uniq -c`;
							print $nbOccur;
							print FILEOUT "<tr><td>$i</td><td><a href=\"$ligne\">Page$i</a></td><td><a href=\"../PAGES-ASPIREES/$i.html\">$i.html</a></td><td>$retourasp</td>";
							print FILEOUT "<td>$encodage_page</td><td><a href=\"../DUMP-TXT/$i-utf8.txt\">$i-utf8.txt</a></td><td><a href=\"../CONTEXTES/$i-cont.txt\">$i-Cutf8.txt</a></td><td><td align=\"center\">$nbOccur</td></tr>";
							`cat ../CONTEXTES/$i-cont.txt >> ../FICHIERSGLOBAUX/CONTEXTES-GLOBAUX_$langue.txt` ;
							`cat ../DUMP-TEXT/$i-utf8.txt >> ../FICHIERSGLOBAUX/DUMP-GLOBAUX_$langue.txt` ;
							$nbdump=$nbdump+1;
						}	
					}#fin du sub traite
				}
				else 
				{
					print FILEOUT "<tr><td>$i</td><td><a href=\"$ligne\">Page$i</a></td><td><a href=\"../PAGES-ASPIREES/$i.html\">$i.html</a></td><td>$retourasp</td><td bgcolor=\"yellow\"><small>Encodage non détecté;</small></td><td bgcolor=\"yellow\"><small>Encodage non d&eacute;tect&eacute;</small></td><td>-</td><td>-</td><td>-</td><td>-</td></tr>"
				}
			}
			else #si erreur aspiration
			{
				print FILEOUT "<tr><td>$i</td><td><a href=\"$ligne\">Page$i</a></td><td>-</td><td>$retourasp</td><td>-</td><td>-</td><td>-</td><td>-</td></tr>";
			}
		} #fin du traitement d'une URL		
	}#fin while liste url
print FILEOUT "<tr><td align=\"center\" colspan=\"4\">&nbsp</td><td><a href=\"../FICHIERSGLOBAUX/DUMP-GLOBAUX_$langue.txt\">Fichier DUMP<br/>global</a><br/><small>$nbdump fichier(s)</small></td><td align=\"center\" width=\"100\"><a href=\"../FICHIERSGLOBAUX/CONTEXTES-GLOBAUX_$langue.txt\">Fichier CONTEXTES<br/>global</a><br/><small>$nbdump fichier(s)</small></td><td align=\"center\">&nbsp</td><td colspan=\"3\"></td></tr>";
print FILEOUT "\n</table>\n";
}#fin while liste langues
print FILEOUT "\n</body>\n</html>"; #code de fin de tableau
close(FILEIN);
close(FILEBIS);
close(FILEOUT);
