Utilisateur:Jmfayard-fauxnez/Adq.pl

Une page de Wikipédia, l'encyclopédie libre.

/*

*/

#!/usr/bin/perl 

## Localization
my %subpage 	= ( en => "subpage", fr => "sous-page" );
my %image   	= ( en => "images",  fr => "images"  );
my %FA		= ( en => "Is Featured here", fr =>  "ADQ français" );
my %base	= ( en => "Wikipedia:Translation", fr => "Projet:Traduction" );

if ($#ARGV<3) {
	print "Usage : perl adq.pl Code_langue_origine Code_Langue_destination  Fichier_liste_articles Style\n\n";
}
($origin_LANG,$dest_LANG,$FILE,$style) = @ARGV;
sub round {
    my($number) = shift;
    return int($number + .5);
}


sub what_links_here() {
	($LANG, $NAME) = @_ ;
	my ($ligne, $link, @result);
	@result=();
	open( IN, "wget 'http://$LANG.wikipedia.org/w/index.php?title=$NAME&action=raw' -O - 2>/dev/null |") ;
	while( $ligne=<IN> ) {
		while ( $ligne =~ m/\[\[([^\]:]+)\]\]/g ) {
			$link = $1;
			$link =~ s/\|.*$// ; 
			#print "$link\n";
			push @result, $link;
		}
	}
	close( IN );
	return @result;
}
sub articles_in_file() {
	($FILE) = @_ ;
	my ($ligne, $link, @result);
	@result=();
	open( IN, "$FILE") ;
	while( $ligne=<IN> ) {
		chomp $ligne;
		push @result,$ligne;
	}
	close( IN );
	return @result;
}
sub read_adq() {
	my ($origin_LANG, $dest_LANG, $ARTICLE) =@_ ;
	my ($interwiki,$interwiki_is_adq,$nb_images,$nb_images_interwiki,$nb_char,$nb_char_interwiki) 
		= ("", 0, 0, 0, 0, 0);

	open( IN, "wget 'http://$origin_LANG.wikipedia.org/w/index.php?title=$ARTICLE&action=raw' -O - 2>/dev/null |") ;
#	print "http://$origin_LANG.wikipedia.org/w/index.php?title=$ARTICLE&action=raw\n";
	while( $ligne=<IN> ) {
		$nb_char=$nb_char+length($ligne) ;
		if ( ($ligne =~ m/\[\[Image:/) || ($ligne =~ m/.jpg\]\]/) || ($ligne =~ m/.jpeg\]\]/) || ($ligne =~ m/.svg\]\]/)) {
			$nb_images++;
		}
		while ( $ligne =~ m/\[\[$dest_LANG:([^\]:]+)\]\]/g ) {
			$interwiki = $1;
			$interwiki =~ s/\|.*$// ; 
			#print "$link\n";
		}
		if ( $ligne =~ m/\{\{Link FA\|$dest_LANG\}\}/  ) {
			$interwiki_is_adq = 1;
		}
	}
	close(IN);
	open( IN, "wget 'http://$dest_LANG.wikipedia.org/w/index.php?title=$interwiki&action=raw' -O - 2>/dev/null |") ;
	while( $ligne=<IN> ) {
		$nb_char_interwiki=$nb_char_interwiki+length($ligne) ;
		if ( 
($ligne =~ m/\[\[Image:/) || 
($ligne =~ m/\[\[Bild:/) || 
($ligne =~ m/\.jpg/) || 
($ligne =~ m/\.jpeg/) || 
($ligne =~ m/\.svg/) || 
($ligne =~ m/\.JPG/) || 
($ligne =~ m/\.JPEG/) || 
($ligne =~ m/\.SVG/) || 
($ligne =~ m/\.png/) || 
($ligne =~ m/\.PNG/) 
		) {
			$nb_images_interwiki++;
		}
	}
	close(IN);
	return ($interwiki,$interwiki_is_adq,$nb_images,$nb_images_interwiki,round($nb_char/1000),round($nb_char_interwiki/1000));
}
sub interwiki() {
	my ($origin_LANG, $dest_LANG, $ARTICLE) =@_ ;
	my ($link, $ligne);
	open( IN, "wget 'http://$origin_LANG.wikipedia.org/w/index.php?title=$ARTICLE&action=raw' -O - 2>/dev/null |") ;
	while( $ligne=<IN> ) {
		while ( $ligne =~ m/\[\[$dest_LANG:([^\]:]+)\]\]/g ) {
			$link = $1;
			$link =~ s/\|.*$// ; 
			#print "$link\n";
			return "$link";
		}
	}
	return "AUCUN INTERWIKI";
}


@l_ARTICLE=&articles_in_file( $FILE ) ;
foreach $adq (@l_ARTICLE) {
	if ($adq =~ m/==/) {
print <<SECTION

$adq

SECTION
;		next;
	}

	my ($interwiki,$interwiki_is_adq,$nb_images,$nb_images_interwiki,$nb_char,$nb_char_interwiki) 
		=&read_adq( $origin_LANG, $dest_LANG, $adq );

        my $pagetraduc="[[$base{$origin_LANG}/$interwiki|$subpage{$origin_LANG}]]";
        if ($interwiki eq "") {
                $interwiki="??";
                $pagetraduc="[[??]]";
        }

	print <<ITEM
|-$style
|[[:$origin_LANG:$adq]] ($nb_char ko, $nb_images $images{$origin_LANG})
|[[$interwiki]] ($nb_char_interwiki ko, $nb_images_interwiki $images{$origin_LANG} $FA{$origin_LANG})
|$pagetraduc
|
ITEM
	;
}


/*
  • /