#/usr/bin/perl
<<DOC; 
 usage : perl script repertoire-a-parcourir
 Par exemple : perl extraction_perl_full.pl 2017
DOC


my $rep="$ARGV[0]";
my %redondant;
my $num = 0;
my $nb_file = 0;


$rep=~ s/[\/]$//; # on s'assure que le nom du répertoire ne se termine pas par un "/"

#------------------------------------
# INITIALISATION DES FICHIERS SORTIE
open(my $txtout, ">>:encoding(utf8)", "sortie_$rubrique.txt");
open(my $xmlout, ">>:encoding(utf8)", "sortie_$rubrique.xml");
print $xmlout "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n";
print $xmlout "<rubrique id=\"$rubrique\">\n";

#-------------------------------------
# APPEL DE LA FONCTION PRINCIPALE
&parcoursarborescencefichiers($rep);


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) {
			&parcoursarborescencefichiers($file);
		}
		
		if (-f $file) {

				$nb_file++;
				my $ensemble="";
		
		   		# Ouverture du fichier
		   		open(FILEIN,"<:encoding(utf8)", $file);
				    
				# Nettoyage à la volée
				while (my $ligne=<FILEIN>){
					chomp $ligne;
					$ligne=~s/^ +//; # suppression des espaces en début de ligne
					$ligne=~s/ +$//; # supression des espaces en fin de ligne
					$ligne=~s/> +</></; # supression des espaces entre les balises
		
					$ensemble = $ensemble . $ligne;
				}
				while ($ensemble =~ m/<item>.*?<title>(.+?)<\/title>.*?<description>(.+?)<\/description>.*?<\/item>/g){
				    my $title = $1;
				    my $description= $2;
				    
				    # Vérication de l'unicité du titre grâce à un hash
				    if (!exists $redondant{$title})
				    {
				        $redondant{$title}=1;
				        
				        # Fichier texte avec titre et description
				        print $txtout "# $title\n$description\n\n";
			
					#Fichier xml simple
					print $xmlout "<item id=\"$num\">\n\t<TITRE> $title </TITRE>\n";
					print $xmlout "\t<DESCRIPTION> $description </DESCRIPTION>\n</item>\n";

					$num++;
				    }
                		}
                		close FILEIN;
		}
    }
}

print $xmlout "</rubrique>\n";
close $txtout;
close $xmlout;

print "$nb_file fichiers traités.\n";

