X-Git-Url: http://git.equinoxoli.org/?p=migration-tools.git;a=blobdiff_plain;f=fingerprinter;h=f388174a447f8bc0554d384aa58b9389b71a4eb2;hp=a3af67a50be1cb9d8ac614d4db62e129d99e51b8;hb=af66e5408e31e25bc6fed62b99cc39be95d480ef;hpb=94b89a418c3615a8c9e687b38b056a7596c73391 diff --git a/fingerprinter b/fingerprinter index a3af67a..f388174 100755 --- a/fingerprinter +++ b/fingerprinter @@ -25,6 +25,7 @@ use MARC::Batch; use Unicode::Normalize; use MARC::File::XML ( BinaryEncoding => 'utf-8' ); use Equinox::Migration::SubfieldMapper; +use Equinox::Migration::Utils qw/normalize_oclc_number/; my $conf = {}; # configuration hashref my $count = 0; my $scount = 0; @@ -148,13 +149,19 @@ sub populate_marc { # oclc $marc{oclc} = []; - push @{ $marc{oclc} }, $record->field('001')->as_string() - if ($record->field('001') and $record->field('003') and - $record->field('003')->as_string() =~ /OCo{0,1}LC/); + if ($record->field('001') && + $record->field('003') && + $record->field('003')->as_string() =~ /OCo{0,1}LC/ && + defined normalize_oclc_number($record->field('001')->as_string())) { + push @{ $marc{oclc} }, normalize_oclc_number($record->field('001')->as_string()); + } for ($record->field('035')) { my $oclc = $_->subfield('a'); - push @{ $marc{oclc} }, $oclc - if (defined $oclc and $oclc =~ /\(OCoLC\)/ and $oclc =~/([0-9]+)/); + if (defined $oclc && + ($oclc =~ /\(OCoLC\)/ || $oclc =~ /(ocm|ocl7|ocn|on)/) && + defined normalize_oclc_number($oclc)) { + push @{ $marc{oclc} }, normalize_oclc_number($oclc); + } } if ($record->field('999')) {