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;
# 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')) {
}
}
- if ($conf->{fingerprints}{edition} and $marc->{edition}) {
+ if ($conf->{fingerprints}{edition} and $marc->{edition} and $marc->{author}) {
print OF join("\t", $marc->{score}, $marc->{id}, "edition",
$marc->{item_form}, $marc->{date1},
$marc->{record_type}, $marc->{bib_lvl},
- $marc->{title}, $marc->{edition}), "\n";
+ $marc->{title}, $marc->{author}, $marc->{edition}), "\n";
}
if ($conf->{fingerprints}{issn} and $marc->{issn}) {