Utilisateur:Jmfayard-fauxnez/Adq.pl

Un article 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
        ;
}


/*
  • /