#!/usr/bin/perl

use XML::RSS;
use Unicode::String qw(utf8);


my $rep="$ARGV[0]";
my $rubrique="$ARGV[1]";
my %redondant;
my $num = 0;

if(! $rubrique){
	print "Il manque l'ID de la rubrique à traiter.\n";
	exit;
}

$rep=~ s/[\/]$//; # on s'assure que le nom du répertoire ne se termine pas par un "/"

# Initialisation des fichiers de sortie
open(TXT,">>:encoding(utf-8)","sortie-xmlrss_$rubrique.txt");
open(XML,">>:encoding(utf-8)","sortie-xmlrss_$rubrique.xml");
print XML "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n";
print XML "<rubrique id=\"$rubrique\">\n";


#-------------------------------------
# APPEL DE LA FONCTION PRINCIPALE
&parcoursarborescencefichiers($rep);

#-------------------------------------

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) {
		&parcoursarborescencefichiers($file);
	}
	
		if (-f $file) {
			# Sélection des fichiers de la rubrique en paramètre
			    if ($file =~ m/$rubrique.+\.xml$/) {

				open(FILEIN,"<:encoding(utf8)", $file);
		
				my $rss=new XML::RSS;
				eval {$rss->parsefile($file); };
		
				if( $@ ) {
					$@ =~ s/at \/.*?$//s;
				# remove module line number
				print STDERR "\nERROR in '$file':\n$@\n";
				}
		
				else {
					print XML "<items>\n";
					print TXT "#";
					foreach my $item (@{$rss->{'items'}}) {
				
						my $titre=$item->{'title'};
						my $resume=$item->{'description'};
						$titre=&nettoietexte($titre);
						$resume=&nettoietexte($resume);
				
						if (uc($encodage) ne "UTF-8") {utf8($titre);utf8($resume);}
						print TXT "Titre : $titre \n";
						print TXT "Description : $resume \n";;
						print XML "<item><titre>$titre</titre><description>$resume</description></item>\n";
					}
					print XML "</items>\n";
				}
			}
		}
	}
}
print XML "</rubrique>\n";
close(TXT);
close(XML);
close(FILEIN);

#----------------------------------------------------------
#----------------------------------------------------------
sub nettoietexte {
	my $texte=shift;
	$texte=~s/&#39;/'/g;
	$texte=~s/&#34;/"/g;
	$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;
	return $texte;
}
