fix skipping of fields >= 900
[Biblio-Z3950.git] / DPLA.pm
diff --git a/DPLA.pm b/DPLA.pm
index 31808d6..1ea8ec4 100644 (file)
--- a/DPLA.pm
+++ b/DPLA.pm
@@ -54,7 +54,7 @@ sub diag {
 # @attr 1=1016 any
 
 sub usemap {{
-       4               => 'dpla.title',
+       4               => 'dpla.title_keyword',
        7               => 'dpla.isbn',
        8               => 'dpla.keyword', # XXX fake
        1003    => 'dpla.creator_keyword',
@@ -139,7 +139,7 @@ sub next_marc {
                                $fields->[$i]->[0] = $f;
                                $fields->[$i]->[1] = ' ';
                                $fields->[$i]->[2] = ' ';
-                               push @{ $fields->[$i] }, $sf, $v->[$i];
+                               push @{ $fields->[$i] }, $sf, decode('utf-8', $v->[$i]); # decode here fixes API encoding error
                        }
 
                } else {
@@ -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;
 
 }