stop on empty next_marc
authorDobrica Pavlinusic <dpavlin@rot13.org>
Thu, 26 Apr 2012 20:58:50 +0000 (22:58 +0200)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Thu, 26 Apr 2012 20:58:50 +0000 (22:58 +0200)
DPLA.pm
server.pl

diff --git a/DPLA.pm b/DPLA.pm
index 31808d6..090846b 100644 (file)
--- a/DPLA.pm
+++ b/DPLA.pm
@@ -151,11 +151,19 @@ sub next_marc {
 
        diag "# marc ", $marc->as_formatted;
 
-       my $id = $item->{'dpla.id'} || warn "no dpla.id in ",dump($item);
-       $self->save_marc( "$id.marc", $marc->as_usmarc );
+       warn dump( $marc->as_usmarc );
 
        $self->mech->back; # return to search results for next page
 
+       my $id = $item->{'dpla.id'};
+
+       if ( ! $id ) {
+                       warn "no dpla.id in ",dump($item);
+                       return;
+       }
+
+       $self->save_marc( "$id.marc", $marc->as_usmarc );
+
        return $id;
 
 }
index 8262c2a..b7029a3 100755 (executable)
--- a/server.pl
+++ b/server.pl
@@ -149,7 +149,9 @@ sub FetchHandle {
        my $from = $rs->{from} || die "no from?";
        # fetch records up to offset
        while(  $#{ $rs->{results} } < $offset ) {
-               push @{ $rs->{results} }, $from->next_marc;
+               my $marc = $from->next_marc;
+               last if ! $marc; # abort results
+               push @{ $rs->{results} }, $marc;
                warn "# rs result ", $#{ $rs->{results} },"\n";
        }