projects
/
crolist2marc
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
use tab delimited files
[crolist2marc]
/
crolist2marc.pl
diff --git
a/crolist2marc.pl
b/crolist2marc.pl
index
1819d46
..
39eb028
100755
(executable)
--- a/
crolist2marc.pl
+++ b/
crolist2marc.pl
@@
-48,31
+48,31
@@
sub csv_file {
print STDERR "\n";
}
print STDERR "\n";
}
-csv_file( 'TEKTAG.csv', sub {
+csv_file( '
tsv/
TEKTAG.csv', sub {
my $line = shift;
my $line = shift;
- my ( $idsl, $tag, $tagno, $id, $sfi, $sfino, $textkey, $textres ) = split(/
,
/,$_);
+ my ( $idsl, $tag, $tagno, $id, $sfi, $sfino, $textkey, $textres ) = split(/
\t
/,$_);
my $text = $textkey . $textres; # FIXME fix CAPITAL letters in $textkey
return ( $idsl, $tag, $tagno, $id, $sfi, $sfino, $text );
});
my $text = $textkey . $textres; # FIXME fix CAPITAL letters in $textkey
return ( $idsl, $tag, $tagno, $id, $sfi, $sfino, $text );
});
-csv_file( 'LONTAG.csv', sub {
+csv_file( '
tsv/
LONTAG.csv', sub {
my $line = shift;
my $line = shift;
- my ( $idsl, $tag, $tagno, $id, $sfi, $sfino, $text ) = split(/
;
/,$_, 7);
+ my ( $idsl, $tag, $tagno, $id, $sfi, $sfino, $text ) = split(/
\t
/,$_, 7);
- $text =~ s/
;
+$//;
- $text =~ s/
;
/\n/g; # join OPIS[1-11]
+ $text =~ s/
\t
+$//;
+ $text =~ s/
\t
/\n/g; # join OPIS[1-11]
return ( $idsl, $tag, $tagno, $id, $sfi, $sfino, $text );
});
return ( $idsl, $tag, $tagno, $id, $sfi, $sfino, $text );
});
-csv_file( 'IDNTAG.csv', sub {
+csv_file( '
tsv/
IDNTAG.csv', sub {
my $line = shift;
my $line = shift;
- my ( $idsl, $tag, $STSL, $KZVS, $BIBRAZ, $HIRAZ, $KPS, $OKO ) = split(/
,
/,$_);
+ my ( $idsl, $tag, $STSL, $KZVS, $BIBRAZ, $HIRAZ, $KPS, $OKO ) = split(/
\t
/,$_);
my @leader;
$leader[5] = $STSL;
my @leader;
$leader[5] = $STSL;
@@
-89,15
+89,15
@@
csv_file( 'IDNTAG.csv', sub {
return;
});
return;
});
-csv_file( 'OBRTAG.csv', sub {
+csv_file( '
tsv/
OBRTAG.csv', sub {
my $line = shift;
my $line = shift;
- my ( $IDSL, $TAG, $TAGNO, $ID, $SFI, $SFINO, $CODINF ) = split(/
,
/,$_);
+ my ( $IDSL, $TAG, $TAGNO, $ID, $SFI, $SFINO, $CODINF ) = split(/
\t
/,$_);
return ( $IDSL, $TAG, $TAGNO, $ID, $SFI, $SFINO, $CODINF );
});
print STDERR "\n# getting all ids ";
return ( $IDSL, $TAG, $TAGNO, $ID, $SFI, $SFINO, $CODINF );
});
print STDERR "\n# getting all ids ";
-my @ids = keys %$data;
+my @ids =
sort
keys %$data;
print STDERR scalar(@ids), " found\n";
my $marc_file = 'liberated.marc';
print STDERR scalar(@ids), " found\n";
my $marc_file = 'liberated.marc';
@@
-107,6
+107,8
@@
my $number = 0;
foreach my $id ( @ids ) {
my $rec = MARC::Record->new;
$rec->encoding( 'UTF-8' );
foreach my $id ( @ids ) {
my $rec = MARC::Record->new;
$rec->encoding( 'UTF-8' );
+ $rec->add_fields( [ '001', $id ] );
+
foreach my $field ( sort keys %{ $data->{$id} } ) {
if ( $field eq 'leader' ) {
$rec->leader( $data->{$id}->{$field} );
foreach my $field ( sort keys %{ $data->{$id} } ) {
if ( $field eq 'leader' ) {
$rec->leader( $data->{$id}->{$field} );
@@
-114,9
+116,10
@@
foreach my $id ( @ids ) {
}
foreach my $arr ( @{ $data->{$id}->{$field} } ) {
if ( ! $arr ) {
}
foreach my $arr ( @{ $data->{$id}->{$field} } ) {
if ( ! $arr ) {
-
print STDERR "SKIPPED $id $field ",dump( $data->{$id}->{$field} ), "\n";
+
#
print STDERR "SKIPPED $id $field ",dump( $data->{$id}->{$field} ), "\n";
next;
}
next;
}
+ $arr = [ $arr->[3] ] if ( $field < 010 ); # control fields don't have idicators or subfields
$rec->add_fields( $field, @$arr );
}
}
$rec->add_fields( $field, @$arr );
}
}