1 #!/usr/bin/perl |
1 #!/usr/bin/perl |
2 |
2 |
3 use utf8; |
3 use utf8; |
4 |
4 |
5 $maks_vortoj = 1; |
5 binmode STDOUT, ":utf8"; |
6 |
6 |
7 $celdosierujo = "prova"; |
7 $unua_vortonumero = 2; |
8 if ($#ARGV != 1) { |
8 $lasta_vortonumero = 50925; |
|
9 |
|
10 if (scalar(@ARGV) != 1) { |
9 print "Unua parametro: dosierujo de la html dosieroj\n"; |
11 print "Unua parametro: dosierujo de la html dosieroj\n"; |
10 exit; |
12 exit; |
11 } |
13 } |
12 $origino = $ARGV[0]; |
14 $origino = $ARGV[0]; |
13 |
15 |
14 # States |
16 # States |
15 $s_komenco = 0; |
17 $s_komenco = 0; |
16 $s_nomo = 1; |
18 $s_nomo = 1; |
17 $s_antauxdifinoj = 1; |
19 $s_antaŭdifinoj = 2; |
18 $s_difinoj = 1; |
20 $s_difinoj = 3; |
|
21 $s_fino = 4; |
|
22 |
|
23 sub elhtmligi { |
|
24 $ĉeno = $_[0]; |
|
25 |
|
26 $ĉeno =~ s/<u><i><b>/[/g; |
|
27 $ĉeno =~ s/<\/b><\/i><\/u>/]/g; |
|
28 |
|
29 $ĉeno =~ s/ĉ/ĉ/g; |
|
30 |
|
31 $ĉeno =~ s/ĉ/ĉ/g; |
|
32 $ĉeno =~ s/ĝ/ĝ/g; |
|
33 $ĉeno =~ s/ĥ/ĥ/g; |
|
34 $ĉeno =~ s/ĵ/ĵ/g; |
|
35 $ĉeno =~ s/ŝ/ŝ/g; |
|
36 $ĉeno =~ s/ŭ/ŭ/g; |
|
37 |
|
38 $ĉeno =~ s/Ĉ/Ĉ/g; |
|
39 $ĉeno =~ s/Ĝ/Ĝ/g; |
|
40 $ĉeno =~ s/Ĥ/Ĥ/g; |
|
41 $ĉeno =~ s/Ĵ/Ĵ/g; |
|
42 $ĉeno =~ s/Ŝ/Ŝ/g; |
|
43 $ĉeno =~ s/Ţ/Ŭ/g; |
|
44 |
|
45 return $ĉeno; |
|
46 } |
19 |
47 |
20 sub procezi_dosieron { |
48 sub procezi_dosieron { |
21 my $nomo = $_[0]; |
49 my $nomo = $_[0]; |
22 my $stato = $s_komenco; |
50 my $stato = $s_komenco; |
23 my $linio; |
51 my $linio; |
24 |
52 |
25 open $dosiero, $nomo or die "DIED: File not found"; |
53 open ($dosiero, "<:utf8", $nomo) or die "DIED: File not found"; |
26 |
54 |
27 while(<$dosiero>) { |
55 while(<$dosiero>) { |
28 $linio = $_; |
56 $linio = $_; |
29 if ($stato == $s_komenco) { |
57 if ($stato == $s_komenco) { |
30 if ($linio eq |
58 if ($linio eq |
31 "<table cellpadding=\"2\" cellspacing=\"2\">\n") { |
59 "<table cellpadding=\"2\" cellspacing=\"2\">\n") { |
32 $stato = $s_nomo; |
60 $stato = $s_nomo; |
33 print "Statosxangxo!"; |
|
34 } |
61 } |
35 } elsif ($stato == $s_nomo) { |
62 } elsif ($stato == $s_nomo) { |
36 $stato = $s_antauxdifinoj; |
63 $linio =~ /font [^>]*>([^<]+)<\/b><\/td><\/tr>/; |
|
64 # Ni skribas la kapvorton |
|
65 print ":" . $1 . ":"; |
|
66 $stato = $s_antaŭdifinoj; |
|
67 } elsif ($stato == $s_antaŭdifinoj) { |
|
68 if ($linio eq |
|
69 "<table cellpadding=\"1\" cellspacing=\"2\">\n") { |
|
70 $stato = $s_difinoj; |
|
71 } |
|
72 } elsif ($stato == $s_difinoj) { |
|
73 if ($linio eq "</table>\n") { |
|
74 $stato = $s_fino; |
|
75 last; |
|
76 } |
|
77 if ($linio =~ /^\t<tr>.*font size=\"1\"><i>([0-9]+).*size=\"2\">(.*)<\/td><\/tr>\n/) { |
|
78 # Ni skribas la linion de difino/traduko |
|
79 print $1 . ". " . elhtmligi($2) . "\n"; |
|
80 } |
37 } |
81 } |
38 } |
82 } |
|
83 |
|
84 if ($stato != $s_fino && $stato != $s_komenco) { |
|
85 die; |
|
86 } |
|
87 |
|
88 close $dosiero; |
39 } |
89 } |
40 |
90 |
41 sub krei_dosiernomon { |
91 sub krei_dosiernomon { |
42 my $num = $_[0]; |
92 my $num = $_[0]; |
43 return "$origino/diego$num.html"; |
93 return "$origino/diego$num.html"; |
44 } |
94 } |
45 |
95 |
46 for $i (1 .. $maks_vortoj) { |
96 for $i ($unua_vortonumero .. $lasta_vortonumero) { |
47 $nomo = krei_dosiernomon($i); |
97 $nomo = krei_dosiernomon($i); |
48 print $nomo |
|
49 |
98 |
50 procezi_dosieron($nomo); |
99 procezi_dosieron($nomo); |
51 } |
100 } |