#!/usr/bin/perl
use File::Spec;
use XML::XPath;
use XML::XPath::XMLParser;

<<DOC;
Pierre Marchal (INaLCO)

JANVIER 2008

usage : bao2-treetagger.pl [répertoire à parcourir]

Le programme prend en entrée le nom du répertoire contenant les fichiers à traiter.
Le programme construit en sortie un fichier structuré contenant sur chaque ligne le nom du fichier et le résultat du filtrage.

DOC

mkdir "./output/";
mkdir "./xml/";

my $rep="$ARGV[0]";
   $rep=~ s/[\/]$//;

%rubriques=("3208","une",
			"3210","international",
			"3214","europe",
			"3224","societe",
			"3232","opinions",
			"3234","economie",
			"3236","medias",
			"3238","rendez-vous",
			"3242","sports",
			"3244","environnement-sciences",
			"3246","culture",
			"3260","livres",
			"3404","examens_2008",
			"3476","cinema",
			"3546","voyages",
			"651865","technologies",
			"823353","politique",
			"987718","municipales-cantonales_2008",);
			
%cara=("&amp;#39;","'",
	   "&amp;#34;","\"",
	   "&#39;","'",
	   "&#34;","\"",
	   "&nbsp;"," ",
	   "&lt;", "<",);

foreach $rubrique (values %rubriques) {
	my $output="./output/".$rubrique;
	if (!open (FILEOUT,$output)) {
		die "Pb a l'ouverture du fichier $output";
	}
	close(FILEOUT);
}


&arborescence($rep);


foreach $rubrique (values %rubriques) {
	my $output="./output/".$rubrique;
	if (!open (FILEOUT,$output)) {
		die "Pb a l'ouverture du fichier $output";}
	close(FILEOUT);
	system("perl ./treetagger/tokenise-fr.pl $output | ./treetagger/bin/tree-tagger.exe ./treetagger/lib/french.par -lemma -token -no-unknown > ./etiquetage/$rubrique");
	system("dos2unix ./etiquetage/$rubrique");
	system("perl ./treetagger/treetagger2xml.pl ./etiquetage/$rubrique ./xml/$rubrique.xml");
}

exit;


######################
## /S PROG. "ARBORESCENCE" ##
######################

sub arborescence {

my $path=shift(@_);
opendir(DIR, $path) or die "can't open $path : $!\n";
my @files=readdir(DIR);
closedir(DIR);

# le contenu du dossier est trié par ordre numérique croissant
@files = sort {$a <=> $b} @files;

foreach my $file (@files) {
	
	next if ($file =~ /^\.\.?$/);
	
	$file=$path."/".$file;
	
	my $contenu = "";

	if (-d $file) {
		&arborescence($file);
	}
	
	if (-f $file) {
		my $xp = XML::XPath->new(filename => $file);
		my $nodeset = $xp->find('//item/title/following-sibling::description[1]');
		foreach my $node ($nodeset->get_nodelist) {
			$temp = XML::XPath->getNodeText($node);
			foreach $car(keys %cara){
				my $remplace = $cara{$car};
				$temp=~ s/$car/$remplace/g;
				$temp=~ s/<\/?(p|img |a\W)[^>]*>//g;
				chomp ($temp);
			}
			
			unless ($contenu =~ $temp){			
				$contenu .= $temp."\n";
			}
		}
	}
		
		
	foreach $code(keys %rubriques){
		my $rubrique = $rubriques{$code};
		if($file=~/$code/){
			$output="./output/".$rubrique;
			if (!open (FILEOUT,$output)) {
				die "Pb a l'ouverture du fichier $output";
			}
			print FILEOUT $contenu;
		}

	}
	close(FILEOUT);
}
}	
	