#!/usr/bin/perl
use Unicode::String qw(utf8);

my $racine = $ARGV[0];
$racine =~ s/[\/]$//; #si ça se termine par / on l'enlève

my $content1 = ""; #pour fichier XML
my $content2 = ""; #pour fichier TXT
my $nbArticles = 0;
my $nbfic = 0;
my %dicoTitres = ();
my %dicoDesc = ();
my $output1="Sortie.xml";
my $output2 = "Sortie.txt";
if (!open (FILEOUTXML, ">:encoding(utf-8)", "$output1")) { die "Pb ouverture XML !"; }
if (!open (FILEOUTXT, ">:encoding(utf-8)", "$output2")) { die "Pb ouverture TXT !";} #Modif pour Cordial

&parc_recurse($racine);

print FILEOUTXML "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n";
print FILEOUTXML "<PARCOURS>\n";
print FILEOUTXML "<NOM>keke</NOM>\n";
print FILEOUTXML "<FILTRAGE>".$content1."</FILTRAGE>\n";
print FILEOUTXML "</PARCOURS>\n";
close(FILEOUTXML);

print FILEOUTXT $content2;
close(FILEOUTXT);
exit;


#Solution+ Gestion des doublons, Encodage
sub parc_recurse{
    my $dossier = shift(@_);
    opendir(DOSSIER,$dossier) or die "keke can't open $dossier: $!\n";
    my @files = readdir(DOSSIER); 
    closedir(DOSSIER);
    foreach my $file (@files) {
	#print $file,"\n";
		next if ($file=~/^\.\.?$/);
		$file=$dossier."/".$file;
		if (-d $file){
	    	&parc_recurse($file);
		}
		if (-f $file){
	    	if (($file=~/\.xml$/) &&($file!~/\/fil.+\.xml$/)){
			#print $nbfic++, "\n";
				open(FILEIN, $file); #OK
				#dŽtection de l'encodage
				my $texte="";
				while (my $ligne = <FILEIN>) {
					$ligne =~ s/\r//g;
		    		$ligne =~ s/\n//g;
		    		$texte .= $ligne;
				}
				close(FILEIN);
				$texte=~/encoding ?= ?[\'\"]([^\'\"]+)[\'\"]/i;
				my $encodage=$1; #l'encodage identifiŽ
				
				#suppresion des malformations caractres
				if($encodage ne ""){
					open(FILE,"<:encoding($encodage)", $file);
					$texte="";
					while (my $ligne=<FILE>){
		    			$ligne =~s/\r//g;
						$ligne =~ s/\n//g;
						$texte .= $ligne;
		    		}
		    		close(FILE);
		    		$texte=~s/> *</></gi;
		    		while ($texte =~/<item><title>(.+?)<\/title>.+?<description>(.+?)<\/description>/g) {
						my $titre=$1;
						my $resume=$2;
						if (uc($encodage) ne "UTF-8") {utf8($titre);utf8($resume);}
						$titre = &nettoieText($1);
						$resume = &nettoieText($2);	
						$nbArticles++;
						$content1.="<article numero=\"$nbArticles\">\n";
						#traitement doublons titre
						if (!(exists($dicoTitres{$titre}))){
			    			$content1.="<item><title>$titre</title><abstract>$resume</abstract></item>\n";
			    			$content2.="$titre\n\n";
			    			$content2.="$resume\n\n\n\n";  #mise en forme
			    			$dicoTitres{$titre}++;
						}
						else {
			    			$dicoTitres{$titre}++;
			    			$content1.="<abstract>-</abstract>\n";
						}
					}
					
					
				}		
				else{
				$content1.="<abstract>-</abstract>\n";
				}
				
			}
		}
		
	}
}



sub nettoieText {
    my $texte=shift;
    $texte =~ s/&lt;/</g;
    $texte =~ s/&gt;/>/g;
    $texte =~ s/<a href[^>]+>//g;
    $texte =~ s/<img[^>]+>//g;
    $texte =~ s/<\/a>//g;
    $texte =~ s/&#38;#39;/'/g;
    $texte =~ s/&#38;#34;/"/g;
    $texte =~ s/<[^>]+>//g;
    $texte =~ s/&#233;/é/g;
    $texte =~ s/&#234;/ê/g;
    return $texte;
}
