test both providers
[Biblio-Z3950.git] / Aleph.pm
index 71d67a7..d478aae 100644 (file)
--- a/Aleph.pm
+++ b/Aleph.pm
@@ -8,11 +8,8 @@ use Data::Dump qw/dump/;
 
 use base 'Scraper';
 
-our $mech = WWW::Mechanize->new();
-our $hits;
-
 sub diag {
-       print "# ", @_, $/;
+       warn "# ", @_, $/;
 }
 
 # Koha Z39.50 query:
@@ -60,8 +57,7 @@ sub usemap {{
 #      12              => '',
 #      1007    => '',
 #      1016    => '',
-
-};
+}};
 
 
 sub search {
@@ -89,8 +85,8 @@ diag "submit search $query";
                },
        );
 
-       $hits = 0;
-       if ( $mech->content =~ m{ukupno\s+(\d+).*(do\s+(\d+))}s ) {
+       my $hits = 0;
+       if ( $mech->content =~ m{ukupno\s+(\d+).*do\s+(\d+)}s ) {
                $hits = $1;
                $hits = $2 if $2 && $2 < $1; # correct for max. results
        } else {
@@ -110,59 +106,51 @@ diag "in MARC format";
 }
 
 
+our ( $hash, $marc );
+
 sub next_marc {
        my ($self,$format) = @_;
 
+       $format ||= 'marc';
+
        my $mech = $self->{mech} || die "no mech?";
 
-print $mech->content;
+#warn "## ", $mech->content;
 
        if ( $mech->content =~ m{Zapis\s+(\d+)}s ) {
 
                my $nr = $1;
 
-diag "parse $nr";
+warn "parse $nr";
 
-               my $marc = MARC::Record->new;
+               $marc = MARC::Record->new;
+               $hash = {};
 
                my $html = $mech->content;
-               my $hash;
 
                sub field {
                        my ( $f, $v ) = @_;
                        $v =~ s/\Q&nbsp;\E/ /gs;
-warn "# $f\t$v\n";
+#warn "## $f\t$v\n";
                        $hash->{$f} = $v;
                        my ($i1,$i2) = (' ',' ');
                        ($i1,$i2) = ($2,$3) if $f =~ s/^(...)(.)?(.)?/$1/;
                        my @sf = split(/\|/, $v);
                        shift @sf;
                        @sf = map { s/^(\w)\s+//; { $1 => $_ } } @sf;
-diag "sf = ", dump(@sf);
+#warn "## sf = ", dump(@sf);
                        $marc->add_fields( $f, $i1, $i2, @sf ) if $f =~ m/^\d+$/;
                }
 
                $html =~ s|<tr>\s*<td class=td1 id=bold[^>]*>(.+?)</td>\s*<td class=td1>(.+?)</td>|field($1,$2)|ges;
-               diag dump($hash);
+#              diag "# hash ",dump($hash);
 
                my $id = $hash->{SYS} || die "no SYS";
 
-
-
-               my $path = "marc/$id.$format";
-
-               open(my $out, '>:utf8', $path);
-               print $out $marc->as_usmarc;
-               close($out);
-
-               diag "created $path ", -s $path, " bytes";
-
-               diag $marc->as_formatted;
+               $self->save_marc( $id, $marc->as_usmarc );
 
                $nr++;
 
-               die if $nr == 3; # FIXME
-
                $mech->follow_link( url_regex => qr/set_entry=0*$nr/ );
 
                return $marc->as_usmarc;