49. kasu praktikoa: Wikipediako kategoria bateko artikulu-lista lau hizkuntzatan.

Wikipedian ekarpena egin nahi baduzu alor batean, eta zein sarrera itzuli erabaki aurretik ondo dago jakitea espainieraz, euskaraz, ingelesez eta katalanez alor horretan (wikipediako kategoria batean) zein artikulu dauden eta zenbat hitz duten.

Adibidez, erdarazko Informática kategoría emanda, kategoria horretako artikuluak Wikipedian aztertzea da helburua.

Oraindik hobetu eta garbitu daiteke wikigaiak4koa.pl programa hau baina dagoen bezala ere praktiko izan daitekeela uste dugu.

Erabileraren adibideak ikus ditzakezue wikigaiak4koa_es.txt, wikigaiak4koa_ca.txt, wikigaiak4koa_en.txt fitxategietan. Espero genuen bezala Katalanaren fitxategiak dirudi interesgarriena  wikigaiak4koa_ca.txt
Informatikan bakarrik ez, Wikipediako beste kategoriekin ere erabil ahal izango da wikipedia nondik aberastu beharko litzatekeen zehazteko.  Ea martxan jar dezakezuen zuek ere.
   $ perl wikigaiak4koa.pl “ca” “eu” “en” “es” “Informàtica”  

Hau da, bilatu katalanezko Wikipedian “Informàtica” kategoriako artikuluak eta esan ea dauden euskarazko, ingelesezko eta espainierazko wikipedian. Baldin badaude, esan zein den sarreraren tamaina. Adibidez:

Tecnologies_de_la_Informació_i_la_Comunicació   180.15 Kb
eu    Informazio_eta_komunikazio_teknologiak    18.18 Kb
en    Information_technology    19.75 Kb
es    Tecnologías_de_la_información_y_la_comunicació    24.52 Kb
FLOPS    23.26 Kb
en    FLOPS    95.49 Kb
es    Operaciones_de_punto_flotante_por_segundo    32.42 Kb

$ perl wikigaiak4koa.pl  “es” “eu” “en” “ca” “Informática” 
Berdin baina espainierazko Wikipedian “Informática” kategoriarekin
$ perl wikigaiak4koa.pl  “en” “eu” “es” “ca” “Computer science”
Berdin baina ingelesezko Wikipedian “Computer science” kategoriarekin

Programa (wikigaiak4koa.pl):

#!/usr/local/bin/perl
use utf8;
use warnings;
use strict;
use Encode;
use LWP::Simple;
use URI::Escape;

#erabilera-adibidea:
# $ perl wikigaiak4koa.pl  “es” “eu” “en” “ca” “Informática”

#$ENV{‘LC_ALL’} = “es_ES.UTF-8”;

#binmode STDIN, “:utf8”;
binmode STDOUT, “:utf8”;

my $coding = “latin1”;
$coding = “utf8” if $ENV{‘LANG’} =~ /utf/i;

my (%hiztegitxoa, $wiki_sarrera_es, $estekarena, $wiki_sarrera_eu);
my $jatorri = decode($coding, shift);
my $helburu = decode($coding, shift);
my $helburu2 = decode($coding, shift);
my $helburu3 = decode($coding, shift);
my $wiki_kat_main = decode($coding, shift);

my %cat_lang = (“en” => “Category”,
“es” => “Categoría”,
“eu” => “Kategoria”,
“ca” => “Categoria”);

my $lcat = $cat_lang{$jatorri};
die “$jatorri has no category string!\n” unless $lcat;

my $url = “http://$jatorri.wikipedia.org/wiki/$lcat:$wiki_kat_main”;
#my $url = “http://es.wikipedia.org/wiki/Categoría:Informática”;

#print (“$wiki_kat_es\n”);
#print (“$url\n”);
#my $weba = get($url);  #bertsio zaharra
my $ua = LWP::UserAgent->new;
my $weba = $ua->get($url);
#euskaraz (“http://eu.wikipedia.org/wiki/Kategoria:Informatika”);
my $web_testua = $weba->content;
if (defined $web_testua) {
#print (“$web_testua\n”);
print (“$url definituta dago\n”);
} else {
print (“$url ez dago definituta\n”);
}
my ($url2, $sarrera);
#die $web_testua.”\n”;
while ($web_testua  =~ /<a href=”\/wiki\/([^\”]+)” title=”([^\”]+)”/g) {
#<li><a href=”/wiki/Familia_de_ordenadores” title=”Familia de ordenadores”>Familia de ordenadores</a></li>  {
# Adierazpen erregularraren aukerak:
# g globala (agerpen guztiak)
# i letra larri/xeheak ez bereizi
$sarrera = $1;
my $sarr_str = $ua->get(“http://”.$jatorri.”.wikipedia.org/wiki/”.$sarrera)->content;
printf (“%s\t%.2f Kb\n”, decode(“utf8″, uri_unescape($sarrera)), length($sarr_str)/1024);

# Hitz kopuru zehatza jakin nahi izanez gero:
# my $titulua=$2;
# my $gald_count_H =”http://”.$jatorri.”.wikipedia.org/w/api.php?action=query&list=search&srsearch=”;
# my $gald_count_B =”&srprop=wordcount”;
# my $gald_url = $gald_count_H . $sarrera . $gald_count_B;
# #print “$gald_url\n”;
# my $weba_kont = $ua->get($gald_url);
# #print “$weba_kont\n”;
# my $weba_kont_testua = $weba_kont->content; ;
# if ($weba_kont_testua =~ /title=&quot;$titulua&quot; wordcount=&quot;(\d+)&quot/) {
#     print (”   $1 hitz \n”) ;
# }
if ($sarrera !~ /:/) {
my $url2 = “http://”.$jatorri.”.wikipedia.org/wiki/”.$sarrera;
my $weba2 = $ua->get($url2);
my $web_testu2 = $weba2->content;
if (defined $web_testu2) {
&Beste_Hizkuntza_Batean($web_testu2, $helburu);
&Beste_Hizkuntza_Batean($web_testu2, $helburu2);
&Beste_Hizkuntza_Batean($web_testu2, $helburu3);
} else {
print (“ez dago   $1 \n”) ;
}
}
}

sub Beste_Hizkuntza_Batean {
my ($html, $hizk) = @_;
# html-ez idatzitako testuan bilatu $hizk hizkuntzaren wikipediako esteka

if ($html  =~ /href=”\/\/$hizk.wikipedia.org\/wiki\/([^\”]+)”/) {
my $sarrera2 = $1;

my $sarr_str = $ua->get(“http://”.$hizk.”.wikipedia.org/wiki/”.$sarrera)->content;
printf (“\t%s\t%s\t%.2f Kb\n”, $hizk, decode(“utf8”, uri_unescape($sarrera2)), length($sarr_str)/1024);

# Hitz kopuru zehatza jakin nahi izanez gero:
# print (“\t$hizk\t$1\n”) ;
# my $gald_count_H =”http://”.$hizk.”.wikipedia.org/w/api.php?action=query&list=search&srsearch=”;
# my $gald_count_B =”&srprop=wordcount”;
# my $gald_url = $gald_count_H . $sarrera2 . $gald_count_B;
# #print “$gald_url\n”;
# my $weba_kont = $ua->get($gald_url);
# #print “$weba_kont\n”;
# my $weba_kont_testua = $weba_kont->content;
# $sarrera =~ s/_/\ /;
# if ($weba_kont_testua =~ /title=&quot;$sarrera2&quot; wordcount=&quot;(\d+)&quot/) {
#     print (“\t$hizk\t$1 hitz \n”) ;
# }
}
}

Utzi erantzuna

Zure e-posta helbidea ez da argitaratuko. Beharrezko eremuak * markatuta daude