1 |
dpavlin |
1.1 |
#!/usr/bin/perl -w |
2 |
|
|
|
3 |
|
|
use strict; |
4 |
|
|
use MARC; |
5 |
|
|
use URI::Escape; |
6 |
|
|
require "../common.pm"; |
7 |
|
|
|
8 |
dpavlin |
1.3 |
$|++; |
9 |
|
|
my $debug=0; |
10 |
|
|
|
11 |
dpavlin |
1.1 |
my $file = shift @ARGV; |
12 |
dpavlin |
1.3 |
my $index = shift @ARGV || die "Usage: $0 [marc file] [index dir]"; |
13 |
dpavlin |
1.1 |
|
14 |
|
|
my %id_stored; # to aviod duplicates |
15 |
|
|
|
16 |
|
|
my $x = new MARC; |
17 |
|
|
my $nr = $x->openmarc( { file => $file, format => 'usmarc' }) || |
18 |
|
|
die "Can't open MARC file '$file'"; |
19 |
|
|
|
20 |
dpavlin |
1.3 |
my $dir = open_data_files($index,$debug); |
21 |
dpavlin |
1.1 |
my $last_tell=0; |
22 |
|
|
|
23 |
|
|
print MPS "M working...\n"; |
24 |
|
|
|
25 |
|
|
my $rec; |
26 |
|
|
|
27 |
|
|
while ($x->nextmarc(1)) { |
28 |
|
|
# print $x->output({format=>'ascii'}); # FIX |
29 |
|
|
|
30 |
|
|
$rec = $x->marc_count(); |
31 |
|
|
# print $x->getfirstvalue({record=>$rec,field=>245,subfield=>'a',delimiter=>" "}),"<--\n"; |
32 |
dpavlin |
1.3 |
print "file: '$file' 773 t: ",$x->getfirstvalue({record=>$rec,field=>773,subfield=>'t',delimiter=>" "})," [index: $index]\n" if ($last_tell == 0); |
33 |
|
|
|
34 |
dpavlin |
1.1 |
my $bib = ""; |
35 |
|
|
my $mps = ""; |
36 |
|
|
|
37 |
|
|
sub getfld { |
38 |
|
|
my ($f,$s) = @_; |
39 |
|
|
my $out = $x->getfirstvalue({record=>$rec,field=>$f,subfield=>$s,delimiter=>" "}); |
40 |
|
|
# print "$f/$s:$out\n"; |
41 |
|
|
return $out; |
42 |
|
|
} |
43 |
|
|
|
44 |
|
|
|
45 |
|
|
my $id = getfld(856,'u'); |
46 |
|
|
|
47 |
|
|
$bib .= "%tip Èasopis\n"; |
48 |
|
|
$bib .= "%tip on-line\n"; |
49 |
|
|
# url |
50 |
|
|
$bib .= "%856 ".getfld(856,'u')."\n"; |
51 |
|
|
|
52 |
|
|
# naslov |
53 |
|
|
$bib .= "%200+ ".getfld(245,'a')."\n"; |
54 |
|
|
$mps .= mps_expand(2,getfld(245,'a')); |
55 |
|
|
|
56 |
|
|
# izdavanje |
57 |
|
|
$bib .= "%210+ ".getfld(773,'d')."\n"; |
58 |
|
|
$mps .= mps_expand(3,getfld(773,'d')); |
59 |
|
|
|
60 |
|
|
# issn |
61 |
|
|
my $issn = getfld('022','a'); |
62 |
|
|
if ($issn) { # ISSN can be missing? |
63 |
|
|
$bib .= "%ISSN $issn\n"; |
64 |
|
|
$mps .= mps_expand(13,$issn); |
65 |
|
|
} |
66 |
|
|
|
67 |
|
|
$bib .= "%992 ".getfld(856,'3')."\n"; |
68 |
|
|
|
69 |
|
|
# tip |
70 |
|
|
$mps .= mps_expand(17,"on-line casopis"); |
71 |
|
|
|
72 |
|
|
$mps .= "H ".getfld(245,'a')." <i>(on-line, ".getfld(773,'t').")</i>\n"; |
73 |
|
|
|
74 |
|
|
if (defined $id && ! defined $id_stored{$id}) { |
75 |
|
|
|
76 |
|
|
print R $bib."\n"; |
77 |
|
|
$mps .= "T document text/plain ".(tell(R) - $last_tell)." $dir/bib $last_tell ".tell(R)."\n"; |
78 |
|
|
$last_tell=tell(R); |
79 |
|
|
print R "\n"; |
80 |
|
|
$mps .= "E\n"; |
81 |
|
|
print S $mps; |
82 |
|
|
print MPS $mps; |
83 |
|
|
|
84 |
|
|
$id_stored{$id}++; |
85 |
dpavlin |
1.3 |
print "_" if ($debug); |
86 |
dpavlin |
1.1 |
} else { |
87 |
dpavlin |
1.3 |
print "." if ($debug); |
88 |
dpavlin |
1.1 |
} |
89 |
|
|
} |
90 |
|
|
|
91 |
|
|
print S "M over and out\nX\n"; |
92 |
|
|
print MPS "M over and out\nX\n"; |
93 |
|
|
close(MPS); |