# HG changeset patch # User viric@llimona # Date 1174095640 -3600 # Node ID 9d50eeadcc3355bb2fbaedbc82bdab3f83a738f2 # Parent d92ff57936e2fc8eb87e9213f3b9dda12a1dfc9f Mi finfaris la kreilon por dict-vortaro. diff -r d92ff57936e2 -r 9d50eeadcc33 LEGUMIN --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/LEGUMIN Sat Mar 17 02:40:40 2007 +0100 @@ -0,0 +1,11 @@ +Paŝoj por konstrui la dict-vortaron: + +1. Rekodigu ĉiujn html-dosierojn al utf-8/uniksaj linioŝanĝoj: + Ekz: ./encoding.sh DeDiego/html html-reencoded +2. Ŝanĝu la variablojn de la Makefile por ke ĝi trovu viajn HTML dosierojn. (la + novajn en html-reencoded, laŭ la antaŭa ekzemplo) +3. Ruligu na "make". + +Post tio, vi ŝajne povas kopii viajn de-diego.dict.dz kaj de-diego.index al via +dict-dosierujo (kutime /usr/lib/dict), meti ilin en via dictd.conf dosiero, kaj +vi jam povas reŝalti la dict-servilon (dictd). diff -r d92ff57936e2 -r 9d50eeadcc33 Makefile --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Makefile Sat Mar 17 02:40:40 2007 +0100 @@ -0,0 +1,12 @@ +HTMLDIR?=html-reencoded + +BASE=de-diego + +$(BASE).dict.dz: $(BASE).dict + dictzip $(BASE).dict + +$(BASE).dict: $(BASE).txt + dictfmt -j $(BASE) --locale="es_ES.UTF-8" -s "Gran Diccionario Español-Esperanto de Fernando de Diego" -u "http://www.esperanto-es.net/diccionario/" --without-info < $(BASE).txt + +$(BASE).txt: vortaro.pl + ./vortaro.pl $(HTMLDIR) > $(BASE).txt diff -r d92ff57936e2 -r 9d50eeadcc33 encoding.sh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/encoding.sh Sat Mar 17 02:40:40 2007 +0100 @@ -0,0 +1,26 @@ +#!/bin/bash + +# Tio ĉi prenas la originalajn dosierojn kaj ilin rekodigas al UTF-8 kaj +# al uniksa liniofina stilo. + + +if [ $# -ne 2 ] ; then + echo usage: $0 ORIGIN DEST + exit 1 +fi + +ORIGINDIR=$1 +DESTDIR=$2 + +mkdir -p $DESTDIR + +for a in `seq 1 60000`; do + echo -n "$a "; + ORIGIN=$ORIGINDIR/diego$a.html + DEST=$DESTDIR/diego$a.html + if [ ! -f $ORIGIN ]; then + break ; + fi; + + cat $ORIGIN | dos2unix | recode latin1..utf-8 > $DEST +done diff -r d92ff57936e2 -r 9d50eeadcc33 vortaro.pl --- a/vortaro.pl Wed Mar 14 14:37:48 2007 +0100 +++ b/vortaro.pl Sat Mar 17 02:40:40 2007 +0100 @@ -2,10 +2,12 @@ use utf8; -$maks_vortoj = 1; +binmode STDOUT, ":utf8"; -$celdosierujo = "prova"; -if ($#ARGV != 1) { +$unua_vortonumero = 2; +$lasta_vortonumero = 50925; + +if (scalar(@ARGV) != 1) { print "Unua parametro: dosierujo de la html dosieroj\n"; exit; } @@ -14,15 +16,41 @@ # States $s_komenco = 0; $s_nomo = 1; -$s_antauxdifinoj = 1; -$s_difinoj = 1; +$s_antaŭdifinoj = 2; +$s_difinoj = 3; +$s_fino = 4; + +sub elhtmligi { + $ĉeno = $_[0]; + + $ĉeno =~ s//[/g; + $ĉeno =~ s/<\/b><\/i><\/u>/]/g; + + $ĉeno =~ s/ĉ/ĉ/g; + + $ĉeno =~ s/ĉ/ĉ/g; + $ĉeno =~ s/ĝ/ĝ/g; + $ĉeno =~ s/ĥ/ĥ/g; + $ĉeno =~ s/ĵ/ĵ/g; + $ĉeno =~ s/ŝ/ŝ/g; + $ĉeno =~ s/ŭ/ŭ/g; + + $ĉeno =~ s/Ĉ/Ĉ/g; + $ĉeno =~ s/Ĝ/Ĝ/g; + $ĉeno =~ s/Ĥ/Ĥ/g; + $ĉeno =~ s/Ĵ/Ĵ/g; + $ĉeno =~ s/Ŝ/Ŝ/g; + $ĉeno =~ s/Ţ/Ŭ/g; + + return $ĉeno; +} sub procezi_dosieron { my $nomo = $_[0]; my $stato = $s_komenco; my $linio; - open $dosiero, $nomo or die "DIED: File not found"; + open ($dosiero, "<:utf8", $nomo) or die "DIED: File not found"; while(<$dosiero>) { $linio = $_; @@ -30,12 +58,34 @@ if ($linio eq "\n") { $stato = $s_nomo; - print "Statosxangxo!"; } } elsif ($stato == $s_nomo) { - $stato = $s_antauxdifinoj; + $linio =~ /font [^>]*>([^<]+)<\/b><\/td><\/tr>/; + # Ni skribas la kapvorton + print ":" . $1 . ":"; + $stato = $s_antaŭdifinoj; + } elsif ($stato == $s_antaŭdifinoj) { + if ($linio eq + "
\n") { + $stato = $s_difinoj; + } + } elsif ($stato == $s_difinoj) { + if ($linio eq "
\n") { + $stato = $s_fino; + last; + } + if ($linio =~ /^\t.*font size=\"1\">([0-9]+).*size=\"2\">(.*)<\/td><\/tr>\n/) { + # Ni skribas la linion de difino/traduko + print $1 . ". " . elhtmligi($2) . "\n"; + } } } + + if ($stato != $s_fino && $stato != $s_komenco) { + die; + } + + close $dosiero; } sub krei_dosiernomon { @@ -43,9 +93,8 @@ return "$origino/diego$num.html"; } -for $i (1 .. $maks_vortoj) { +for $i ($unua_vortonumero .. $lasta_vortonumero) { $nomo = krei_dosiernomon($i); - print $nomo procezi_dosieron($nomo); }