#/usr/bin/perl
#FAZLIU Doruntina
#BAO1 - « extraction du texte » : parcourir toute l'arborescence et extraire les contenus textuels de tous les fils (classement des #		textes extraits par RUBRIQUE)
#-----------------------------------------------------------
use utf8;
use strict;
binmode(STDOUT, ":encoding(UTF-8)");

#-----------------------------------------------------------

# Récupérer les arguments de la liste @ARGV sur laquelle le programme été exécuté
if ($#ARGV != 1) {print "Il manque un argument à votre programme....\n";exit;} 


my $rep="$ARGV[0]";
my $RUBRIQUE="$ARGV[1]";
#Echapemment des caractéres "/" dans le chemin du répertoire
$rep=~ s/[\/]$//;

#Créer les fichiers de sortie
open my $sortie_txt, ">:encoding(UTF-8)","titre-description-propre_$RUBRIQUE.txt";
open my $sortie_xml, ">:encoding(UTF-8)","titre-description-propre_$RUBRIQUE.xml";

print $sortie_xml "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<corpus>\n";

#récuperation du contenu textuel avec la fonction de recursion
&parcoursarborescencefichiers($rep);

print $sortie_xml "</corpus>\n";

# fermeture des fichier
close $sortie_txt;
close $sortie_xml;

exit;

#-----------------------------------------------------------

sub parcoursarborescencefichiers {
	
    my $path = shift(@_);
	
    opendir(DIR, $path) or die "Impossible d'ouvrir $path: $!\n";
  
	my @files = readdir(DIR);
    

	closedir(DIR);

    foreach my $file (@files) {
		
		
		next if $file =~ /^\.\.?$/;
		
		$file = $path."/".$file;
		
		
		if (-d $file) {
			print "On entre dans le REPERTOIRE : $file \n";
			&parcoursarborescencefichiers($file);
			print "On sort du REPERTOIRE :  $file \n";
		}
		
		
		if (-f $file) {
			
			
			if ($file =~ /$RUBRIQUE.+\.xml$/) {
				
			
				print "Traitement du fichier $file \n";
				
			
				open my $input, "<:encoding(UTF-8)",$file;
				
				
				$/=undef;
				
			
				my $ligne=<$input> ;
			
				close($input);
				
				while ($ligne=~/<item><title>(.+?)<\/title>.+?<description>(.+?)<\/description>/gs) {
					
					
					my $titre=&nettoyage($1);
					
					my $description=&nettoyage($2);
					
					
					print $sortie_txt "$titre \n";
					
				
					print $sortie_txt "$description \n";
					
					
					print $sortie_txt "----------------------------\n";
					
					
					print $sortie_xml "<item><titre>$titre</titre><description>$description</description></item>\n";
				}
			}
		}
    }
}

#----------------------------------------------


sub nettoyage {
	my $texte=shift @_;
	$texte=~s/(^<!\[CDATA\[)|(\]\]>$)//g;
	$texte.=".";
	$texte=~s/\.+$/\./;
	return $texte;
}
#----------------------------------------------
