From 427643776939332a73d718640353713be5b17188 Mon Sep 17 00:00:00 2001 From: Dobrica Pavlinusic Date: Tue, 3 May 2016 22:12:38 +0200 Subject: [PATCH] finish conversion to marc --- zavrsni-radovi/json2marc.pl | 73 +++++++++++++++++++++++++++++++------ 1 file changed, 62 insertions(+), 11 deletions(-) diff --git a/zavrsni-radovi/json2marc.pl b/zavrsni-radovi/json2marc.pl index 981d141..c0a38f6 100755 --- a/zavrsni-radovi/json2marc.pl +++ b/zavrsni-radovi/json2marc.pl @@ -11,6 +11,7 @@ use MARC::Record; open(my $json, '<', 'report_62836_1046_ZavrsniRadovi.json'); { + local $/; undef $/; my $data = <$json>; close($json); @@ -18,10 +19,18 @@ open(my $json, '<', 'report_62836_1046_ZavrsniRadovi.json'); } #warn dump($json->[0]); -open(my $marc_fh, '>', 'radovi.marc'); +open(my $marc_fh, '>:utf8', 'radovi.marc'); my $stat; +my $udk; +while() { + chomp; + my ($smjer,$udk_broj) = split(/\t+/,$_,2); + $udk->{$smjer} = $udk_broj; +} +warn "# udk = ",dump($udk); + foreach my $rad ( @$json ) { print dump($rad), "\n"; @@ -35,23 +44,52 @@ foreach my $rad ( @$json ) { my $marc = MARC::Record->new; $marc->encoding( 'UTF-8' ); + my $year = $1 if $rad->{datumzavrsetka} =~ m/^(\d{4})/; + my $jezik = substr($rad->{jezikrada},0,3); + $marc->add_fields( grep { ref($_) eq 'ARRAY' } - [ '100', '1', '#', a => $rad->{prezime} . ', ' . $rad->{ime}, g => 'JMBAG:' . $rad->{jmbag} ], - [ '245', '1', '0', a => $rad->{naslovhr} ], - [ '246', '1', - $rad->{nasloven} =~ m/The / ? 4 : - $rad->{nasloven} =~ m/A / ? 2 : ' ' # FIXME? - , a => $rad->{nasloven}, i => 'Naslov na engleskom: ' + [ '003', 'HR-ZaFER' ], + [ '008', '160221s'.$year.' ci ||||| m||| 00| 0 '.$jezik.' d' ], + [ '035', ' ', ' ', a => '(HR-ZaFER)' . 'rbrzad' . $rad->{rbrzad} ], + [ '040', ' ', ' ', a => 'HR-ZaFER', b => 'hrv', c => 'HR-ZaFER', e => 'ppiak' ], + #[ '080', ' ', ' ', a => $udk->{ $rad->{smjer} } ], + #[ '100', '1', '#', a => $rad->{prezime} . ', ' . $rad->{ime}, g => 'JMBAG:' . $rad->{jmbag} ], + [ '100', '1', '#', a => $rad->{prezime} . ', ' . $rad->{ime} ], + [ '245', '1', '0', + a => $rad->{naslovhr} . ' :', + b => + $rad->{studij} =~ m/^preddiplomski/ ? 'završni rad /' : + $rad->{studij} =~ m/^diplomski/ ? 'diplomski rad /' : '', + c => $rad->{ime} . ' ' . $rad->{prezime} . '.' ], + [ '246', '1', ' ' + # $rad->{nasloven} =~ m/The / ? 4 : + # $rad->{nasloven} =~ m/A / ? 2 : '0' # FIXME? + , a => $rad->{nasloven}, i => 'Naslov na engleskom: ' + ], + [ '260', ' ', ' ', a => 'Zagreb,', b => substr($rad->{ime},0,1) . '. ' . $rad->{prezime} . ',', c => substr($rad->{datumzavrsetka},0,4) . '.' ], $rad->{'brojstranica'} ? [ '300', '#', '#', a => $rad->{'brojstranica'} . ' str. ;', c => '30 cm' ] : '', - [ '502', '#', '#', b => $rad->{studij} . ' studij', c => 'Fakultet elektrotehnike i računarstva u Zagrebu', g => 'smjer: ' . $rad->{smjer}, g => 'šifra smjera: ' . $rad->{sifsmjer}, d => $rad->{datumzavrsetka} ], + [ '502', '#', '#', b => $rad->{studij} . ' studij', c => 'Fakultet elektrotehnike i računarstva u Zagrebu', g => 'smjer: ' . $rad->{smjer} . ', ' . 'šifra smjera: ' . $rad->{sifsmjer} . ', ' . 'datum predaje: ' . $rad->{datumpredaje} . ', ' . 'datum završetka: ' . $rad->{datumzavrsetka} ], $rad->{sazetakhr} ? [ '520', '3', '#', a => 'Sažetak na hrvatskom: ' . $rad->{sazetakhr} ] : '', $rad->{sazetaken} ? [ '520', '3', '#', a => 'Sažetak na engleskom: ' . $rad->{sazetaken} ] : '', - $rad->{keywords} ? [ '653', '#', '#', map { ( a => $_ ) } split(/;\s*/, $rad->{keywords} ) ] : '', - $rad->{keywords_en} ? [ '653', '#', '#', map { ( a => $_ ) } split(/;\s*/, $rad->{keywords_en}) ] : '', + $rad->{keywords} ? [ '653', ' ', '1', map { ( a => $_ ) } split(/;\s*/, $rad->{keywords} ) ] : '', + $rad->{keywords_en} ? [ '653', ' ', '1', map { ( a => $_ ) } split(/;\s*/, $rad->{keywords_en}) ] : '', + #[ '700', '1', '#', a => $rad->{prezmentor} . ', ' . $rad->{imementor}, 4 => 'ths', g => 'ID:' . $rad->{oznmentor} ], [ '700', '1', '#', a => $rad->{prezmentor} . ', ' . $rad->{imementor}, 4 => 'ths' ], - $rad->{prezmentor2} ? [ '700', '1', '#', a => $rad->{prezmentor2} . ', ' . $rad->{imementor2}, 4 => 'ths' ] : '' + $rad->{prezmentor2} ? [ '700', '1', '#', a => $rad->{prezmentor2} . ', ' . $rad->{imementor2}, 4 => 'ths', g => 'ID:' . $rad->{oznmentor2} ] : '', + [ '942', ' ', ' ', + c => + $rad->{studij} =~ m/^preddiplomski/ ? 'Z' : + $rad->{studij} =~ m/^diplomski/ ? 'Y' : '' + ], + [ '952', ' ', ' ', + a => 'SRE', b => 'SRE', c => 'KF', + y => + $rad->{studij} =~ m/^preddiplomski/ ? 'Z' : + $rad->{studij} =~ m/^diplomski/ ? 'Y' : '' + ] + ); print $marc_fh $marc->as_usmarc; @@ -68,3 +106,16 @@ print "# stat = ",dump($stat); ($recordid, $biblioitemnumber) = AddBiblio($marc_record, $framework); =cut + +__DATA__ +Automatika 681.5 +Elektroenergetika 631.31 +Elektroničko i računalno inženjerstvo 621.37+621.391+004.02/.05 +Elektronika 621.38 +Elektrotehnički sustavi i tehnologija 621.3 +Obradba informacija 004.7/.9+621.397 +Programsko inženjerstvo i informacijski sustavi 004.4+004.6/.7 +Računalno inženjerstvo 004.4/.5+004.03/.05 +Računarska znanost 004.2/.3+004.45+004.8/.9 +Radiokomunikacijske tehnologije 621.396 +Telekomunikacije i informatika 621.391/.396 -- 2.20.1