finish conversion to marc
authorDobrica Pavlinusic <dpavlin@rot13.org>
Tue, 3 May 2016 20:12:38 +0000 (22:12 +0200)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Tue, 3 May 2016 20:12:38 +0000 (22:12 +0200)
zavrsni-radovi/json2marc.pl

index 981d141..c0a38f6 100755 (executable)
@@ -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(<DATA>) {
+       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