16 |
use strict; |
use strict; |
17 |
use Getopt::Std; |
use Getopt::Std; |
18 |
use Lingua::Spelling::Alternative; |
use Lingua::Spelling::Alternative; |
19 |
|
require Unicode::Map8; |
20 |
|
|
21 |
my $sadrzaj=0; |
my $sadrzaj=0; |
22 |
my $nr=0; |
my $nr=0; |
27 |
my $aname; ## ancor name na originalnim stranicama |
my $aname; ## ancor name na originalnim stranicama |
28 |
|
|
29 |
my $nn_dir="../"; # dir u kojem su wget-ani fileovi |
my $nn_dir="../"; # dir u kojem su wget-ani fileovi |
30 |
|
my $url="http://www.nn.hr/CijeliBrojS.asp?god=%d&br=%s&mid=%s#%d"; |
31 |
|
|
32 |
my %opts; |
my %opts; |
33 |
getopts("vqdl:", \%opts); |
getopts("vqdl:", \%opts); |
39 |
#$hr->load_affix("$nn_dir/search/croatian.aff"); |
#$hr->load_affix("$nn_dir/search/croatian.aff"); |
40 |
$hr->load_findaffix("$nn_dir/prvih_50.txt"); |
$hr->load_findaffix("$nn_dir/prvih_50.txt"); |
41 |
|
|
42 |
|
my $l2_map = Unicode::Map8->new("ISO-8859-2") || die; |
43 |
|
|
44 |
#-------------------------------------------------------------------- |
#-------------------------------------------------------------------- |
45 |
|
sub dump_to_swish { |
46 |
|
my $xml = shift @_; |
47 |
|
my ($god,$br,$nr,$aname) = @_; |
48 |
|
|
49 |
|
use utf8; |
50 |
|
|
51 |
|
print "Path-Name: ".sprintf($url,$god,$br,$nr,$aname)."\n". |
52 |
|
"Content-Length: ".length($xml)."\n". |
53 |
|
"Document-Type: XML\n". |
54 |
|
"\n$xml"; |
55 |
|
} |
56 |
|
|
57 |
|
#-------------------------------------------------------------------- |
58 |
|
|
59 |
|
|
60 |
opendir(DIR,$nn_dir) || warn "opendir: $!"; |
opendir(DIR,$nn_dir) || warn "opendir: $!"; |
61 |
my @files; |
my @files; |
68 |
} |
} |
69 |
closedir(DIR); |
closedir(DIR); |
70 |
|
|
|
print "<xml>\n"; |
|
|
|
|
71 |
foreach my $file (@files) { |
foreach my $file (@files) { |
72 |
open(IN,"$nn_dir/$file") || die "can't open '$nn_dir/$file': $!"; |
open(IN,"$nn_dir/$file") || die "can't open '$nn_dir/$file': $!"; |
73 |
|
|
99 |
$naslov_czs =~ tr/a-zA-Z/ /cs; # non a-z -> space |
$naslov_czs =~ tr/a-zA-Z/ /cs; # non a-z -> space |
100 |
$naslov_czs = join(" ",$hr->alternatives(split(/ /,$naslov_czs))); |
$naslov_czs = join(" ",$hr->alternatives(split(/ /,$naslov_czs))); |
101 |
# $naslov_czs = $hr->minimal(split(/ /,$naslov_czs)); |
# $naslov_czs = $hr->minimal(split(/ /,$naslov_czs)); |
102 |
print "<br>$br</br><god>$god</god><nr>$nr</nr><aname>$aname</aname>\n<naslov>$naslov</naslov>\n<naslov_czs>$naslov_czs</naslov_czs>\n"; |
my $xml="<nn>\n<br>$br</br>\n<god>$god</god>\n<nr>$nr</nr>\n<aname>$aname</aname>\n"; |
103 |
|
my $naslov_utf=$l2_map->tou($naslov)->utf8; |
104 |
|
|
105 |
|
# Escape <, >, & and ", and to produce valid XML |
106 |
|
my %escape = ('<'=>'<', '>'=>'>', '&'=>'&', '"'=>'"'); |
107 |
|
my $escape_re = join '|' => keys %escape; |
108 |
|
$naslov_utf =~ s/($escape_re)/$escape{$1}/g; |
109 |
|
|
110 |
|
$xml.="<naslov>$naslov_utf</naslov>\n"; |
111 |
|
$xml.="<naslov_czs>$naslov_czs</naslov_czs>\n</nn>\n\n"; |
112 |
|
dump_to_swish($xml,$god,$br,$nr,$aname); |
113 |
|
|
114 |
$naslov=""; |
$naslov=""; |
115 |
$nr=0; |
$nr=0; |
116 |
$zakona++; |
$zakona++; |
117 |
} |
} |
118 |
|
|
119 |
if ($sadrzaj) { |
if ($sadrzaj) { |
120 |
if (s/<a href="#([^"]+)">\s*(\d+)\.\s*<[^>]+>//i) { |
if (s/<a href="#([^"]+)">\s*(\S+)\.\s*<[^>]+>//i) { |
121 |
($aname,$nr) = ($1,$2); |
($aname,$nr) = ($1,$2); |
122 |
} elsif (s/<a href="Javascript:Mojdok\((\d+),(\d+),'*(\w+)'*,(\d+)\)[^>]*>//i) { |
} elsif (s/<a href="Javascript:Mojdok\((\d+),(\d+),'*(\w+)'*,(\d+)\)[^>]*>//i) { |
123 |
($nr,$aname) = ($3,$4); |
($nr,$aname) = ($3,$4); |
135 |
close(IN); |
close(IN); |
136 |
} |
} |
137 |
|
|
|
print "</xml>\n"; |
|
|
|
|
138 |
print STDERR "Ukupno $brojeva brojeva NN, sa $zakona zakona...\n" if (! $opts{q}); |
print STDERR "Ukupno $brojeva brojeva NN, sa $zakona zakona...\n" if (! $opts{q}); |
139 |
|
|