Όνομα εργαλείου: getall.pl


Περιγραφή:

Αυτό το εργαλείο διαβάζει το αρχείο all.dblist στον τρέχοντα κατάλογο (κατεβάστε το από εδώ: http://noc.wikimedia.org/conf/all.dblist ), βρίσκει τις γλώσσες οι οποίες έχουν ενεργό Βικιλεξικό, κατεβάζει το αρχείο latest-all-titles-in-ns0 για το κάθε ΒΛ, και δημιουργεί ένα αρχείο που περιέχει, για κάθε γλωσσική έκδοση της ΒΛ τη λίστα των λημμάτων που περιέχει. Το αρχείο δημιουργείται στον τρέχοντα φάκελο και λέγεται ΥΥΥΥ-mm-dd.txt, με YYYY = το έτος, mm = ο μήνας, dd = η μέρα που τρέχετε το πρόγραμμα.

Κάθε γραμμή του αρχείου έχει τη μορφή isocode:τίτλος-λήμματος

Για παράδειγμα:

af:Ou Engels

Αν ξανατρέξετε το εργαλείο την ίδια μέρα στον ίδιο φάκελο, θα σβήσει το αρχείο και θα το ξαναφτιάξει από την αρχή.

Παράμετροι:

  • δεν υπάρχουν

Προϋποθέσεις:

  • περιβάλλον unix/linux ή άλλο περιβάλλον με perl
  • Πρέπει να κατεβάσετε το αρχείο all.dblist από το http://noc.wikimedia.org/conf/all.dblist και να το βάλετε στον ίδιο φάκελο.


→ Πίσω στα Εργαλεία

getall.pl επεξεργασία

(Αρχική πηγή: Συζήτηση χρήστη:Lou bot/tranInter2/getall.pl)


#!/usr/bin/perl

# Encoding : UTF8
# Is used with RAW XML !!!
# 

my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
$year += 1900 ;
$mon += 1 ;

# create list of valid languages that have wiktionaries
open(LANGSFILE, "< all.dblist" )  || 
    die ('failed to open file all.dblist, you can retrieve it from http://noc.wikimedia.org/conf/all.dblist');
while (<LANGSFILE>) {
    $line = $_;
    chomp($line);
    if ($line =~ /wiktionary$/) {
	$line =~ s/wiktionary$// ;
	push( @ttlang , $line );
    }
}
close(LANGSFILE);

$today = "$year-$mon-$mday" ;

open( RESFILE,">$today.txt");

foreach ( @ttlang ) {
    $lang_cur = $_ ;
    $url1 = "http://download.wikimedia.org/" ;
    $url2 = "wiktionary/latest/" ;
    $url3 = "wiktionary-latest-all-titles-in-ns0" ;
    `wget $url1$lang_cur$url2$lang_cur$url3.gz` ;
    `gunzip $lang_cur$url3.gz`;
    open( XMLFILE, "< $lang_cur$url3" ) ;

    $line = <XMLFILE> ; # we don't take the first line into account
    while ( $line = <XMLFILE> ) {
	$line =~ s/_/ /g;
	print RESFILE "$lang_cur:$line" ;
    }
    `rm $lang_cur$url3` ;
}