#!/usr/bin/perl
<<DOC; 
Votre Nom : Nidia Hernandez - Xianfan Zhang
JANVIER 2016
DOC
use XML::RSS;
#use Unicode::String qw(utf8);


##################################################
my $file="$ARGV[0]"; #flux d'entree
my $rubrique = "$ARGV[1]";

my $output0="$rubrique-surface-lib.txt"; # flux de sortie txt
if (!open (FILEOUT,">$output0")) { die "Pb a l'ouverture du fichier $output0"};
close(FILEOUT);

my $output1="$rubrique-surface-lib.xml"; # flux de sortie xml
if (!open (FILEOUT,">$output1")) { die "Pb a l'ouverture du fichier $output1"};
print FILEOUT "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n";
print FILEOUT "<PARCOURS>\n";
close (FILEOUT);
####################################################
$file=~ s/[\/]$//;
&parcoursfichier($file);
open (FILEOUT,">>:encoding(utf-8)", "$output1");
print FILEOUT "</PARCOURS>\n";
close (FILEOUT);
exit;
#################################################### SOUS-PROGRAMME
sub parcoursfichier{
    my $path = shift(@_);#on enleve le premier argument qu'on lit, parce que c'est un dossier mais pas fichier qu'on veut
    opendir(DIR, $path) or die "pb d'ouvrire $path: $!\n";
    my @contenuRep = readdir(DIR); 
    closedir(DIR);
    foreach my $fichier (@contenuRep) {
        next if $fichier =~ /^\.\.?$/; 
        $fichier = $path."/".$fichier; 
        if (-d $fichier) {
            print "<NOUVEAU REPERTOIRE> ==> ",$fichier,"\n";
            &parcoursfichier($fichier); 
            print "<FIN REPERTOIRE> ==> ",$fichier,"\n";
        }
        if (-f $fichier) {
        	if ($fichier=~/$rubrique.*.xml$/){ #CETTE LIGNE PEUT DONNER ERREUR S'IL Y A DES FICHIERS VIDES DANS L'ARBORESCENCE
        	print $fichier, "\n";
            open (IN, "<:encoding(utf-8)", $fichier);
        	open (OUT1, ">>:encoding(utf-8)", $output0);
            open (OUT2, ">>:encoding(utf-8)", $output1);
            print OUT2 "<file id=\"$fichier\">\n";
#-----------------------------------------------------------
            my $ficher="$fichier";
            my $rss=new XML::RSS; # nouvelle instance du module  
#-----------------------------------------------------------
            $rss->parsefile($fichier);
            my $nombredechampdescription=0;
            foreach my $item (@{$rss->{'items'}}) { #pour chaque élément contenu dans <item>
                $nombredechampdescription++;
                my $title=$item->{'title'}; # on récupère le texte contenu dans <title>
                $title.= ".";
                my $description=$item->{'description'}; # on récupère le texte contenu dans <description>
                $title=&nettoyage($title);
                $description=&nettoyage($description);
                print OUT1 "$title\n";
                print OUT1 "$description\n";
                print OUT2 "<item><title>$title</title><description>$description</description></item>\n";
             
            }
        	
            print OUT2 "</file>\n";
            close (OUT1);
            close (OUT2);
            close (IN);
    		}
    	}
    }
}

#################################################### SOUS-PROGRAMME
sub nettoyage {
    my $description=shift;
    $description =~ s/&lt;/</g;
    $description =~ s/&gt;/>/g;
    $description =~ s/<a href[^>]+>//g;
    $description =~ s/<img[^>]+>//g;
    $description =~ s/<\/a>//g;
    $description=~ s/&#38;#39;/'/g;
    $description =~ s/&#38;#34;/"/g;
    $description =~ s/<[^>]+>//g;
    $description =~s/&#39;/\'/g;
    return $description
}