vortaro.pl
author viric@llimona
Sat, 17 Mar 2007 02:40:40 +0100
changeset 5 9d50eeadcc33
parent 2 ba9cb8ffbe7e
permissions -rwxr-xr-x
Mi finfaris la kreilon por dict-vortaro.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
989e7bea32e5 Ne finita. Komenca intenco.
viric@llimona
parents:
diff changeset
     1
#!/usr/bin/perl
989e7bea32e5 Ne finita. Komenca intenco.
viric@llimona
parents:
diff changeset
     2
989e7bea32e5 Ne finita. Komenca intenco.
viric@llimona
parents:
diff changeset
     3
use utf8;
989e7bea32e5 Ne finita. Komenca intenco.
viric@llimona
parents:
diff changeset
     4
5
9d50eeadcc33 Mi finfaris la kreilon por dict-vortaro.
viric@llimona
parents: 2
diff changeset
     5
binmode STDOUT, ":utf8";
0
989e7bea32e5 Ne finita. Komenca intenco.
viric@llimona
parents:
diff changeset
     6
5
9d50eeadcc33 Mi finfaris la kreilon por dict-vortaro.
viric@llimona
parents: 2
diff changeset
     7
$unua_vortonumero = 2;
9d50eeadcc33 Mi finfaris la kreilon por dict-vortaro.
viric@llimona
parents: 2
diff changeset
     8
$lasta_vortonumero = 50925;
9d50eeadcc33 Mi finfaris la kreilon por dict-vortaro.
viric@llimona
parents: 2
diff changeset
     9
9d50eeadcc33 Mi finfaris la kreilon por dict-vortaro.
viric@llimona
parents: 2
diff changeset
    10
if (scalar(@ARGV) != 1) {
2
ba9cb8ffbe7e Provo de nombro de parametroj.
viric@llimona
parents: 0
diff changeset
    11
	print "Unua parametro: dosierujo de la html dosieroj\n";
ba9cb8ffbe7e Provo de nombro de parametroj.
viric@llimona
parents: 0
diff changeset
    12
	exit;
ba9cb8ffbe7e Provo de nombro de parametroj.
viric@llimona
parents: 0
diff changeset
    13
}
0
989e7bea32e5 Ne finita. Komenca intenco.
viric@llimona
parents:
diff changeset
    14
$origino = $ARGV[0];
989e7bea32e5 Ne finita. Komenca intenco.
viric@llimona
parents:
diff changeset
    15
989e7bea32e5 Ne finita. Komenca intenco.
viric@llimona
parents:
diff changeset
    16
# States
989e7bea32e5 Ne finita. Komenca intenco.
viric@llimona
parents:
diff changeset
    17
$s_komenco = 0;
989e7bea32e5 Ne finita. Komenca intenco.
viric@llimona
parents:
diff changeset
    18
$s_nomo = 1;
5
9d50eeadcc33 Mi finfaris la kreilon por dict-vortaro.
viric@llimona
parents: 2
diff changeset
    19
$s_antaŭdifinoj = 2;
9d50eeadcc33 Mi finfaris la kreilon por dict-vortaro.
viric@llimona
parents: 2
diff changeset
    20
$s_difinoj = 3;
9d50eeadcc33 Mi finfaris la kreilon por dict-vortaro.
viric@llimona
parents: 2
diff changeset
    21
$s_fino = 4;
9d50eeadcc33 Mi finfaris la kreilon por dict-vortaro.
viric@llimona
parents: 2
diff changeset
    22
9d50eeadcc33 Mi finfaris la kreilon por dict-vortaro.
viric@llimona
parents: 2
diff changeset
    23
sub elhtmligi {
9d50eeadcc33 Mi finfaris la kreilon por dict-vortaro.
viric@llimona
parents: 2
diff changeset
    24
	$ĉeno = $_[0];
9d50eeadcc33 Mi finfaris la kreilon por dict-vortaro.
viric@llimona
parents: 2
diff changeset
    25
9d50eeadcc33 Mi finfaris la kreilon por dict-vortaro.
viric@llimona
parents: 2
diff changeset
    26
	$ĉeno =~ s/<u><i><b>/[/g;
9d50eeadcc33 Mi finfaris la kreilon por dict-vortaro.
viric@llimona
parents: 2
diff changeset
    27
	$ĉeno =~ s/<\/b><\/i><\/u>/]/g;
9d50eeadcc33 Mi finfaris la kreilon por dict-vortaro.
viric@llimona
parents: 2
diff changeset
    28
9d50eeadcc33 Mi finfaris la kreilon por dict-vortaro.
viric@llimona
parents: 2
diff changeset
    29
	$ĉeno =~ s/&#265;/ĉ/g;
9d50eeadcc33 Mi finfaris la kreilon por dict-vortaro.
viric@llimona
parents: 2
diff changeset
    30
9d50eeadcc33 Mi finfaris la kreilon por dict-vortaro.
viric@llimona
parents: 2
diff changeset
    31
	$ĉeno =~ s/&#265;/ĉ/g;
9d50eeadcc33 Mi finfaris la kreilon por dict-vortaro.
viric@llimona
parents: 2
diff changeset
    32
	$ĉeno =~ s/&#285;/ĝ/g;
9d50eeadcc33 Mi finfaris la kreilon por dict-vortaro.
viric@llimona
parents: 2
diff changeset
    33
	$ĉeno =~ s/&#293;/ĥ/g;
9d50eeadcc33 Mi finfaris la kreilon por dict-vortaro.
viric@llimona
parents: 2
diff changeset
    34
	$ĉeno =~ s/&#309;/ĵ/g;
9d50eeadcc33 Mi finfaris la kreilon por dict-vortaro.
viric@llimona
parents: 2
diff changeset
    35
	$ĉeno =~ s/&#349;/ŝ/g;
9d50eeadcc33 Mi finfaris la kreilon por dict-vortaro.
viric@llimona
parents: 2
diff changeset
    36
	$ĉeno =~ s/&#365;/ŭ/g;
9d50eeadcc33 Mi finfaris la kreilon por dict-vortaro.
viric@llimona
parents: 2
diff changeset
    37
9d50eeadcc33 Mi finfaris la kreilon por dict-vortaro.
viric@llimona
parents: 2
diff changeset
    38
	$ĉeno =~ s/&#264;/Ĉ/g;
9d50eeadcc33 Mi finfaris la kreilon por dict-vortaro.
viric@llimona
parents: 2
diff changeset
    39
	$ĉeno =~ s/&#284;/Ĝ/g;
9d50eeadcc33 Mi finfaris la kreilon por dict-vortaro.
viric@llimona
parents: 2
diff changeset
    40
	$ĉeno =~ s/&#292;/Ĥ/g;
9d50eeadcc33 Mi finfaris la kreilon por dict-vortaro.
viric@llimona
parents: 2
diff changeset
    41
	$ĉeno =~ s/&#308;/Ĵ/g;
9d50eeadcc33 Mi finfaris la kreilon por dict-vortaro.
viric@llimona
parents: 2
diff changeset
    42
	$ĉeno =~ s/&#348;/Ŝ/g;
9d50eeadcc33 Mi finfaris la kreilon por dict-vortaro.
viric@llimona
parents: 2
diff changeset
    43
	$ĉeno =~ s/&#354;/Ŭ/g;
9d50eeadcc33 Mi finfaris la kreilon por dict-vortaro.
viric@llimona
parents: 2
diff changeset
    44
9d50eeadcc33 Mi finfaris la kreilon por dict-vortaro.
viric@llimona
parents: 2
diff changeset
    45
	return $ĉeno;
9d50eeadcc33 Mi finfaris la kreilon por dict-vortaro.
viric@llimona
parents: 2
diff changeset
    46
}
0
989e7bea32e5 Ne finita. Komenca intenco.
viric@llimona
parents:
diff changeset
    47
989e7bea32e5 Ne finita. Komenca intenco.
viric@llimona
parents:
diff changeset
    48
sub procezi_dosieron {
989e7bea32e5 Ne finita. Komenca intenco.
viric@llimona
parents:
diff changeset
    49
	my $nomo = $_[0];
989e7bea32e5 Ne finita. Komenca intenco.
viric@llimona
parents:
diff changeset
    50
	my $stato = $s_komenco;
989e7bea32e5 Ne finita. Komenca intenco.
viric@llimona
parents:
diff changeset
    51
	my $linio;
989e7bea32e5 Ne finita. Komenca intenco.
viric@llimona
parents:
diff changeset
    52
5
9d50eeadcc33 Mi finfaris la kreilon por dict-vortaro.
viric@llimona
parents: 2
diff changeset
    53
	open ($dosiero, "<:utf8", $nomo) or die "DIED: File not found";
0
989e7bea32e5 Ne finita. Komenca intenco.
viric@llimona
parents:
diff changeset
    54
989e7bea32e5 Ne finita. Komenca intenco.
viric@llimona
parents:
diff changeset
    55
	while(<$dosiero>) {
989e7bea32e5 Ne finita. Komenca intenco.
viric@llimona
parents:
diff changeset
    56
		$linio = $_;
989e7bea32e5 Ne finita. Komenca intenco.
viric@llimona
parents:
diff changeset
    57
		if ($stato == $s_komenco) {
989e7bea32e5 Ne finita. Komenca intenco.
viric@llimona
parents:
diff changeset
    58
			if ($linio eq
989e7bea32e5 Ne finita. Komenca intenco.
viric@llimona
parents:
diff changeset
    59
			"<table cellpadding=\"2\" cellspacing=\"2\">\n") {
989e7bea32e5 Ne finita. Komenca intenco.
viric@llimona
parents:
diff changeset
    60
				$stato = $s_nomo;
989e7bea32e5 Ne finita. Komenca intenco.
viric@llimona
parents:
diff changeset
    61
			}
989e7bea32e5 Ne finita. Komenca intenco.
viric@llimona
parents:
diff changeset
    62
		} elsif ($stato == $s_nomo) {
5
9d50eeadcc33 Mi finfaris la kreilon por dict-vortaro.
viric@llimona
parents: 2
diff changeset
    63
			$linio =~ /font [^>]*>([^<]+)<\/b><\/td><\/tr>/;
9d50eeadcc33 Mi finfaris la kreilon por dict-vortaro.
viric@llimona
parents: 2
diff changeset
    64
			# Ni skribas la kapvorton
9d50eeadcc33 Mi finfaris la kreilon por dict-vortaro.
viric@llimona
parents: 2
diff changeset
    65
			print ":" . $1 . ":";
9d50eeadcc33 Mi finfaris la kreilon por dict-vortaro.
viric@llimona
parents: 2
diff changeset
    66
			$stato = $s_antaŭdifinoj;
9d50eeadcc33 Mi finfaris la kreilon por dict-vortaro.
viric@llimona
parents: 2
diff changeset
    67
		} elsif ($stato == $s_antaŭdifinoj) {
9d50eeadcc33 Mi finfaris la kreilon por dict-vortaro.
viric@llimona
parents: 2
diff changeset
    68
			if ($linio eq
9d50eeadcc33 Mi finfaris la kreilon por dict-vortaro.
viric@llimona
parents: 2
diff changeset
    69
			"<table cellpadding=\"1\" cellspacing=\"2\">\n") {
9d50eeadcc33 Mi finfaris la kreilon por dict-vortaro.
viric@llimona
parents: 2
diff changeset
    70
				$stato = $s_difinoj;
9d50eeadcc33 Mi finfaris la kreilon por dict-vortaro.
viric@llimona
parents: 2
diff changeset
    71
			}
9d50eeadcc33 Mi finfaris la kreilon por dict-vortaro.
viric@llimona
parents: 2
diff changeset
    72
		} elsif ($stato == $s_difinoj) {
9d50eeadcc33 Mi finfaris la kreilon por dict-vortaro.
viric@llimona
parents: 2
diff changeset
    73
			if ($linio eq "</table>\n") {
9d50eeadcc33 Mi finfaris la kreilon por dict-vortaro.
viric@llimona
parents: 2
diff changeset
    74
				$stato = $s_fino;
9d50eeadcc33 Mi finfaris la kreilon por dict-vortaro.
viric@llimona
parents: 2
diff changeset
    75
				last;
9d50eeadcc33 Mi finfaris la kreilon por dict-vortaro.
viric@llimona
parents: 2
diff changeset
    76
			}
9d50eeadcc33 Mi finfaris la kreilon por dict-vortaro.
viric@llimona
parents: 2
diff changeset
    77
			if ($linio =~ /^\t<tr>.*font size=\"1\"><i>([0-9]+).*size=\"2\">(.*)<\/td><\/tr>\n/) {
9d50eeadcc33 Mi finfaris la kreilon por dict-vortaro.
viric@llimona
parents: 2
diff changeset
    78
				# Ni skribas la linion de difino/traduko
9d50eeadcc33 Mi finfaris la kreilon por dict-vortaro.
viric@llimona
parents: 2
diff changeset
    79
				print $1 . ". " . elhtmligi($2) . "\n";
9d50eeadcc33 Mi finfaris la kreilon por dict-vortaro.
viric@llimona
parents: 2
diff changeset
    80
			}
0
989e7bea32e5 Ne finita. Komenca intenco.
viric@llimona
parents:
diff changeset
    81
		}
989e7bea32e5 Ne finita. Komenca intenco.
viric@llimona
parents:
diff changeset
    82
	}
5
9d50eeadcc33 Mi finfaris la kreilon por dict-vortaro.
viric@llimona
parents: 2
diff changeset
    83
9d50eeadcc33 Mi finfaris la kreilon por dict-vortaro.
viric@llimona
parents: 2
diff changeset
    84
	if ($stato != $s_fino && $stato != $s_komenco) {
9d50eeadcc33 Mi finfaris la kreilon por dict-vortaro.
viric@llimona
parents: 2
diff changeset
    85
		die;
9d50eeadcc33 Mi finfaris la kreilon por dict-vortaro.
viric@llimona
parents: 2
diff changeset
    86
	}
9d50eeadcc33 Mi finfaris la kreilon por dict-vortaro.
viric@llimona
parents: 2
diff changeset
    87
9d50eeadcc33 Mi finfaris la kreilon por dict-vortaro.
viric@llimona
parents: 2
diff changeset
    88
	close $dosiero;
0
989e7bea32e5 Ne finita. Komenca intenco.
viric@llimona
parents:
diff changeset
    89
}
989e7bea32e5 Ne finita. Komenca intenco.
viric@llimona
parents:
diff changeset
    90
989e7bea32e5 Ne finita. Komenca intenco.
viric@llimona
parents:
diff changeset
    91
sub krei_dosiernomon {
989e7bea32e5 Ne finita. Komenca intenco.
viric@llimona
parents:
diff changeset
    92
	my $num = $_[0];
989e7bea32e5 Ne finita. Komenca intenco.
viric@llimona
parents:
diff changeset
    93
	return "$origino/diego$num.html";
989e7bea32e5 Ne finita. Komenca intenco.
viric@llimona
parents:
diff changeset
    94
}
989e7bea32e5 Ne finita. Komenca intenco.
viric@llimona
parents:
diff changeset
    95
5
9d50eeadcc33 Mi finfaris la kreilon por dict-vortaro.
viric@llimona
parents: 2
diff changeset
    96
for $i ($unua_vortonumero .. $lasta_vortonumero) {
0
989e7bea32e5 Ne finita. Komenca intenco.
viric@llimona
parents:
diff changeset
    97
	$nomo = krei_dosiernomon($i);
989e7bea32e5 Ne finita. Komenca intenco.
viric@llimona
parents:
diff changeset
    98
989e7bea32e5 Ne finita. Komenca intenco.
viric@llimona
parents:
diff changeset
    99
	procezi_dosieron($nomo);
989e7bea32e5 Ne finita. Komenca intenco.
viric@llimona
parents:
diff changeset
   100
}