#/usr/bin/perl

use Unicode::String qw(utf8);
use utf8;
use Encode qw(encode decode);
use warnings;
#----------------------------------------------------------- 
# le répertoire parent contenant le flux RSS
my $rep="$ARGV[0]"; 
# dictionnaire contenant les titres des flux RSS 
my $dico={};  
# on s'assure que le nom du répertoire ne se termine pas par un "/" 
$rep=~ s/[\/]$//; 
# on initialise une variable contenant le flux de sortie XML
my $DUMPFULL=""; 
# on initialise les noms des deux fichiers en sortie 
$output1="./SORTIE/bao1-extract-txt-full.xml";
$output2="./SORTIE/bao1-extract-txt-full.txt";

if (!open (FILEOUT1,">:encoding(utf-8)", $output1)) { die "Pb a l'ouverture du fichier $output1"};
if (!open (FILEOUT2,">:encoding(iso-8859-1)",$output2)) { die "Pb a l'ouverture du fichier $output2"};
#---------------------------------------------------------------------

# appel de la fonction qui parcours l'arborescence des fichiers 
&parcoursarborescencefichiers($rep);

# écriture du résulat dans les fichiers txt et xml
print FILEOUT1 "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n";
print FILEOUT1 "<PARCOURS>\n";
print FILEOUT1 "<NOM>Siham Khoufache</NOM>\n";
print FILEOUT1 "<FILTRAGE>\n";
print FILEOUT1  $DUMPFULL;
print FILEOUT1 "</FILTRAGE>\n";
print FILEOUT1 "</PARCOURS>\n";
close(FILEOUT1);
close(FILEOUT2);
exit;

 
#----------------------------------------------
# La fonction parcours l'arborescence des fichiers 
#---------------------------------------------- 
sub parcoursarborescencefichiers { 
    my $path = shift(@_); 
    opendir(DIR, $path) or die "can't open $path: $!\n"; 
    my @files = readdir(DIR); 
    closedir(DIR); 
   foreach my $file (@files) { 
     next if $file =~ /^\.\.?$/; 
     $file = $path."/".$file; 
    if (-d $file) { 
      print "répertoire courant ==> ",$file,"\n"; 
      &parcoursarborescencefichiers($file); 
      print "fin de rep ==> ",$file,"\n"; 
    } 
    if (-f $file) {
	 if (($file=~/\.xml$/) && ($file!~/\/fil.+\.xml$/)) {
	  open(FILE, $file);
	  my $texte="";
	  while (my $ligne=<FILE>) {
		 $ligne =~ s/\n//g;
		 $texte .= $ligne;
	  }
	  close(FILE);
	  $texte=~s/> *</></g;
	  $texte=~/encoding ?= ?[\'\"]([^\'\"]+)[\'\"]/i;
	  my $encodage=$1;
	  print "ENCODAGE : $encodage \n";
	  if ($encodage ne "") {
       while ($texte=~/<item><title>(.+?)<\/title>.+?<description>(.+?)<\/description>.+?<\/item>/g){
	     my $titre=$1;
		 my $resume=$2;
		 
		 $titre = &nettoietexte($1);
		 $resume = &nettoietexte($2);
		 
		 my $titreBRUT= encode("iso-8859-1", $titre);
		 my $resumeBRUT= encode("iso-8859-1", $resume);
		 
		 print $titreBRUT,"\n";
		 
		if (uc($encodage) ne "UTF-8") {utf8($titre);utf8($resume);}
		
       if (!(exists $dico{$titre})){
        print FILEOUT2 "TITRE: $titreBRUT \nDESCRIPTION: $resumeBRUT \n\n";
        $DUMPFULL=$DUMPFULL."<item>\n";
        $DUMPFULL=$DUMPFULL."<title>$titre</title>\n";
        $DUMPFULL=$DUMPFULL."<description>$resume</description>\n";
        $DUMPFULL=$DUMPFULL."</item>\n";
        $dico{$titre}++;
       }
     }
	 
    } else {
		    print "$file ==> $encodage \n";
		}
   }
  }
 }
}

sub nettoietexte { 
    my $texte=shift; 
    $texte=~s/> +</></g;
    $texte=~ s/&#38;#39;/'/g;
    $texte=~ s/&#38;#34;/"/g;
    $texte=~ s/&#233;/é/g;
    $texte=~ s/&#234;/ê/g; 
    return $texte; 
} 

