From a0984ce9f4c0a38990f46cd54976a94dbb0a3376 Mon Sep 17 00:00:00 2001 From: Dobrica Pavlinusic Date: Thu, 12 Sep 2013 14:54:09 +0200 Subject: [PATCH] create liberated.marc file --- crolist2marc.pl | 32 ++++++++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/crolist2marc.pl b/crolist2marc.pl index ef4b056..fdb5402 100755 --- a/crolist2marc.pl +++ b/crolist2marc.pl @@ -13,7 +13,7 @@ sub csv_file { my ($file,$parse) = @_; print STDERR "# reading $file "; - my $lines = 0; + my $lines = 1; open(my $fh, '<', $file); my $h = <$fh>; # header @@ -23,7 +23,7 @@ sub csv_file { $lines++; if ( ! $text ) { - print STDERR "\nSKIP $lines [$_] "; + print STDERR "\nSKIP $file +$lines [$_] "; next; } @@ -36,7 +36,7 @@ sub csv_file { $sfi =~ s/^\$// || die "can't fix subfield [$sfi]"; - $text =~ tr/^~]}\|[{@`/ČčĆćĐ𩹮ž/; # CROASCII (YUS|HRN) B1.002:1982 + $text =~ tr/^~]}\\|[{@`/ČčĆćĐ𩹮ž/; # CROASCII (YUS|HRN) B1.002:1982 $data->{$idsl}->{$tag}->[ $tagno ]->[ 0 ] = $i1; $data->{$idsl}->{$tag}->[ $tagno ]->[ 1 ] = $i2; @@ -72,7 +72,31 @@ csv_file( 'LONTAG.csv', sub { print STDERR "\n# getting all ids "; my @ids = keys %$data; print STDERR scalar(@ids), " found\n"; + +my $marc_file = 'liberated.marc'; +open(my $marc_fh, '>:encoding(UTF-8)', $marc_file); +my $number = 0; + foreach my $id ( @ids ) { - print "# $id ",dump($data->{$id}); + my $rec = MARC::Record->new; + $rec->encoding( 'UTF-8' ); + foreach my $field ( sort keys %{ $data->{$id} } ) { + foreach my $arr ( @{ $data->{$id}->{$field} } ) { + if ( ! $arr ) { + print STDERR "SKIPPED $id $field ",dump( $data->{$id} ); + next; + } + $rec->add_fields( $field, @$arr ); + } + } + + #print $rec->as_formatted; + #print "# $id ",dump($data->{$id}); + + print $marc_fh $rec->as_usmarc; + $number++; + print "$number " if $number % 1000 == 0; } +close($marc_fh); +print "$marc_file ",-s $marc_file, " bytes\n"; -- 2.20.1