#/usr/bin/perl

# perl parcours-arborescence-fichiers-ORIGINE.pl 2016 3208

<<DOC; 
Votre Nom : POULAIN
JANVIER 2016
 usage : perl parcours-arborescence-fichiers repertoire-a-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 :
<FICHIER><NOM>du fichier</NOM></FICHIER><CONTENU>du filtrage</CONTENU></FICHIER>
DOC
print "-----------------------------------------------------------\n";
print "------------------DEBUT DU PROGRAMME -----------------------\n";
print "-----------------------------------------------------------\n";
my $rep="$ARGV[0]";
my $rubrique="$ARGV[1]";
$rep=~ s/[\/]$//;
my %dico;

my $output0="$rubrique.txt";
if (!open (FILEOUT,">:encoding(utf-8)","$output0")) { die "Pb a l'ouverture du fichier $output0"};
close(FILEOUT);

my $output1="$rubrique.xml";
if (!open (FILEOUT,">:encoding(utf-8)","$output1")) { die "Pb a l'ouverture du fichier $output1"};
print FILEOUT "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n";
print FILEOUT "<PARCOURS>\n";
print FILEOUT "<NOM>Mathilde</NOM>\n";
close(FILEOUT);

my $output0="$rubrique-PROF.txt";
if (!open (FILEOUT,">:encoding(utf-8)","$output0")) { die "Pb a l'ouverture du fichier $output0"};
close(FILEOUT);
# my $output2="$rubrique-PROF.xml";
# open (PRO2, ">$rubrique-PROF.xml");
# print PRO2 "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n";
# print PRO2 "<PARCOURS>\n";
# print PRO2 "<NOM>Mathilde</NOM>\n";
# close(PRO2);

#---------------------------------------- APPEL DU SOUS PROGRAMME------------------------------
&parcoursarborescencefichiers($rep);	# on lance la récursion.... et elle se terminera après examen de toute l'arborescence
#---------------------------------------- FIN DU SOUS PROGRAMME------------------------------
open (FILEOUT, ">>:encoding(utf-8)", $output1);
print FILEOUT "</PARCOURS>\n";
# open (PRO2, ">>:encoding(utf-8)", $output2);
# print PRO2 "</PARCOURS>\n";
exit;

#------------------------------- SOUS PROGRAMME QUI PARCOURT L'ARBORESCENCE-------------------------------
sub parcoursarborescencefichiers 
{
    my $path = shift(@_);
    opendir(DIR, $path) or die "can't open $path: $!\n";
    my @files = readdir(DIR);
    closedir(DIR);
    foreach my $file (@files) 
    {
		next if $file =~ /^\.\.?$/;
		$file = $path."/".$file;
		if (-d $file) 
		{
			print "<NOUVEAU REPERTOIRE> ==> ",$file,"\n";
			&parcoursarborescencefichiers($file);
			print "<FIN REPERTOIRE> ==> ",$file,"\n";
		}
		if (-f $file) 
		{
			if ($file =~ /$rubrique.+\.xml$/)
			{
				print "<",$i++,"> ==> ",$file,"\n";
				$codage="utf-8";
				open (FIC, "<:encoding($codage)", $file);
				open (OUT, ">>:encoding($codage)", "$rubrique.txt");
				open (OUT2, ">>:encoding($codage)", "$rubrique.xml");
				my $texte="";
				while (my $ligne = <FIC>) 
				{
					chomp $ligne;
					$texte = $texte . $ligne;
				}
				close FIC;
				while ($texte =~
				m/<item><title>([^<]+?)<\/title><link>([^<]+?)<\/link><description>([^<]+?)<\/description>/g) 
				{
					my $titre=$1;
					my $link=$2;
					my $description=$3;
					$titre=~ s/&lt;.+?&gt;//g;
					$description=~ s/&lt;.+?&gt;//g;
					$link=~ s/#xtor=RSS-3208//g;
					$titre.=".";
 					if (!(exists $dico{$titre}))
 					{
						$dico{$titre} = 1;
						print OUT "Titre = ",$titre,"\n";
						print OUT "Lien = ",$link,"\n";
						print OUT "Description = ",$description,"\n\n";
						print OUT2 "<titre>$titre</titre><description>$description</description>\n";
					}
				}
				close OUT;
				close OUT2;
			}
		}
    }
}