#/usr/bin/perl
use utf8;
use strict;
binmode(STDOUT, ":encoding(UTF-8)");

# Pour lancer : perl BAO1.pl nom_du_dossier numero_rubrique


if ($#ARGV != 1) {print "Il manque un argument à votre programme....\n";exit;} 
my $rep="$ARGV[0]";
my $RUBRIQUE="$ARGV[1]";
$rep=~ s/[\/]$//;

#On ouvre deux fichiers en écriture, encodage UTF-8 : 
#- un fichier de texte brut
#- un fichier XML. 
open my $txt, ">:encoding(UTF-8)","titre-description-$RUBRIQUE.txt";
open my $xml, ">:encoding(UTF-8)","titre-description-$RUBRIQUE.xml";
print $xml "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<corpus>\n";
&parcoursarborescencefichiers($rep);
print $xml "</corpus>\n";
close $txt;
close $xml;

exit;

# &parcoursarborescencefichiers va parcourir toutes l'arborescence des fichiers et écrire les résultats dans les fichiers de sorite.
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 $txt "$titre \n";
					print $txt "$description \n";
					print $txt "----------------------------\n";
					print $xml "<item><titre>$titre</titre><description>$description</description></item>\n";
				}
			}
		}
    }
}

# Sous-programme nettoyage :
sub nettoyage {
	my $texte=shift @_;
	$texte=~s/(^<!\[CDATA\[)|(\]\]>$)//g;
	$texte.=".";
	$texte=~s/\.+$/\./;
	return $texte;
}

