/[webpac-proto]/isis2stream.pl
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /isis2stream.pl

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.8 by dpavlin, Sun Jun 16 19:39:42 2002 UTC revision 1.20 by dpavlin, Wed Jul 17 19:33:19 2002 UTC
# Line 8  use common; Line 8  use common;
8    
9  my %opts;  my %opts;
10    
11  getopt('dm', \%opts);  getopts('d:m:q', \%opts);
12    
13  die "usage: $0 -d [database_dir] -m [database1,database2] " if (! %opts);  die "usage: $0 -d [database_dir] -m [database1,database2] " if (! %opts);
14    
# Line 41  foreach (split(/\n/,$common::mps_header) Line 41  foreach (split(/\n/,$common::mps_header)
41  require "./search/config.pm";  require "./search/config.pm";
42    
43  #--------------------------------------------------------------------  #--------------------------------------------------------------------
44    # read database configuration, store database names
45    open(CF,$common::database_cf) || die "$common::database_cf: $!";
46    my %DatabaseDescriptions;
47    while(<CF>) {
48            chomp;
49            if (/^database-name:([^=]+)=(.*)$/) {
50                    my ($db_name,$db_desc) = ($1,$2);
51                    $db_desc=~s/^##\w+##//g;
52                    # c_iso_852 is a cludge so that output format would be
53                    # correct 8859-2 again...
54                    $DatabaseDescriptions{$db_name}=c_iso_852($db_desc);
55            }
56    }
57    close(CF);
58    
59    #--------------------------------------------------------------------
60  #  #
61  # expand(nr,"space separated string");  # expand(nr,"space separated string");
62  #  #
# Line 70  sub c_852_iso { Line 86  sub c_852_iso {
86          return $tmp;          return $tmp;
87  }  }
88    
89    sub c_iso_852 {
90            my $tmp = $_[0];
91            $tmp =~ tr/ܫꔼȺ̪㍐슂ٝ// if ($tmp);
92            return $tmp;
93    }
94    
95  sub c_852_czs {  sub c_852_czs {
96          my $tmp = $_[0];          my $tmp = $_[0];
97          $tmp =~ tr//ܫꔼȺ̪㍐슂ٝ/;          $tmp =~ tr//ܫꔼȺ̪㍐슂ٝ/;
# Line 289  foreach (@isis_dirs) { Line 311  foreach (@isis_dirs) {
311          if (-e "$common::isis_data/$db_dir/$_/PERI") {          if (-e "$common::isis_data/$db_dir/$_/PERI") {
312                  push @isis_dbs,"$common::isis_data/$db_dir/$_/PERI/PERI";                  push @isis_dbs,"$common::isis_data/$db_dir/$_/PERI/PERI";
313          }          }
314            if (-e "$common::isis_data/$db_dir/$_/AMS") {
315                    push @isis_dbs,"$common::isis_data/$db_dir/$_/AMS/AMS";
316            }
317            if (-e "$common::isis_data/$db_dir/$_/ARTI") {
318    #               push @isis_dbs,"$common::isis_data/$db_dir/$_/ARTI/ARTI";
319            }
320  }  }
321    
322  foreach my $isis_db (@isis_dbs) {  foreach my $isis_db (@isis_dbs) {
# Line 297  foreach my $isis_db (@isis_dbs) { Line 325  foreach my $isis_db (@isis_dbs) {
325    
326    my $db = OpenIsis::open( "$isis_db" );    my $db = OpenIsis::open( "$isis_db" );
327    
328      if (! defined $db) {
329            die "can't open '$isis_db'";
330      }
331    
332      my $tip = $isis_db; $tip =~ s/^.+?\/([^\/]+)$/$1/;
333      if (defined $default::tip{$tip}) {
334            $tip=$default::tip{$tip};
335      } elsif ($tip eq "AMS") {
336            $tip=$default::tip{'LIBRI'};
337      } else {
338            die "can't find tip for database '$isis_db'";
339      }
340      $tip = c_iso_852($tip);
341    
342    my $max_rowid = OpenIsis::maxRowid( $db );    my $max_rowid = OpenIsis::maxRowid( $db );
343    
344    my $last_pcnt = 0;    my $last_pcnt = 0;
# Line 305  foreach my $isis_db (@isis_dbs) { Line 347  foreach my $isis_db (@isis_dbs) {
347          my $row = OpenIsis::read( $db, $row_id );          my $row = OpenIsis::read( $db, $row_id );
348          if (my $tmp = $row->{'200'}->[0]) {          if (my $tmp = $row->{'200'}->[0]) {
349    
350                  my $bib = "%MFN $row->{mfn}\n";                  my $bib;
351                  my $mps = "W $row->{mfn} 14\n";                  my $mps = "W $row->{mfn} 14\n";
352    
353                    # tip gradje
354                    $mps .= "W ".c_852_czs($tip)." 17\n";
355                    $bib .= "%tip $tip\n";
356    
357                  my $pcnt = int($row->{mfn} * 100 / $max_rowid);                  my $pcnt = int($row->{mfn} * 100 / $max_rowid);
358                  if ($pcnt != $last_pcnt) {                  if ($pcnt != $last_pcnt) {
359                          printf MPS ("M %5d / %5d -- %-2d %%\n",$row->{mfn},$max_rowid,$pcnt);                          printf MPS ("M %5d / %5d -- %-2d %%\n",$row->{mfn},$max_rowid,$pcnt) if (! $opts{q});
360                          $last_pcnt = $pcnt;                          $last_pcnt = $pcnt;
361                  }                  }
362    
363                  my $headline;                  my $headline;
364                  $headline .= isis_sf($row,'200','a',"'");                  $headline .= isis_sf($row,'200','a');
365                  $headline .= isis_sf($row,'200','e'," : ","'");                  $headline .= isis_sf($row,'200','e'," : ");
366                    $headline .= isis_sf($row,'200','f'," / ");
367                    $headline .= isis_sf($row,'210','d'," , ");
368    
369                    # remove newlines, compress spaces
370                    $headline =~ s/[\n\r]//g;
371                    $headline =~ s/^\s+//g;
372                    $headline =~ s/\s+$//g;
373    
374                  # author                  # author
375                  $bib .= isis_to_bib($row,'700','%700+','*',2,'<');                  $bib .= isis_to_bib($row,'700','%700+','ab',undef,'>',', ');
376                  $bib .= isis_to_bib($row,'701','%700+','*',2,'<');                  $bib .= isis_to_bib($row,'701','%700+','ab',undef,'>',', ');
377                  $bib .= isis_to_bib($row,'710','%700+','*',2,'<');                  $bib .= isis_to_bib($row,'701','%700+','cd',undef,'>',', ');
378                  $bib .= isis_to_bib($row,'711','%700+','*',2,'<');  
379                  $bib .= isis_to_bib($row,'503','%700+','*',2,'<');                  my $tmp;
380                    $tmp = isis_sf($row,'710','abc', '', '', (' : ',', '));
381                    $tmp .= isis_sf($row,'710','dfe', ' (', ')', ('', ' ; ',' ; '));
382                    $bib .= "%700+ $tmp\n" if ($tmp);
383    
384                    $tmp = isis_sf($row,'711','abc', '', '', (' : ',', '));
385                    $tmp .= isis_sf($row,'711','dfe', ' (', ')', ('', ' ; ',' ; '));
386                    $bib .= "%700+ $tmp\n" if ($tmp);
387    
388                    $bib .= isis_to_bib($row,'503','%700+','ab',undef,'>',', ');
389    
390                  $mps .= isis_to_mps($row,'700',1);                  $mps .= isis_to_mps($row,'700',1);
391                  $mps .= isis_to_mps($row,'701',1);                  $mps .= isis_to_mps($row,'701',1);
# Line 359  foreach my $isis_db (@isis_dbs) { Line 421  foreach my $isis_db (@isis_dbs) {
421                  $mps .= isis_to_mps($row,'233',2,"ae");                  $mps .= isis_to_mps($row,'233',2,"ae");
422    
423    
                 my $tmp;  
424                  $tmp =  isis_sf($row,'230','v').                  $tmp =  isis_sf($row,'230','v').
425                          isis_sf($row,'230','a',' : ').                          isis_sf($row,'230','a',' : ').
426                          isis_sf($row,'250',undef,'. - ').                          isis_sf($row,'250',undef,'. - ').
# Line 392  foreach my $isis_db (@isis_dbs) { Line 453  foreach my $isis_db (@isis_dbs) {
453                  $mps .= isis_to_mps($row,'272',2);                  $mps .= isis_to_mps($row,'272',2);
454                  $mps .= isis_to_mps($row,'273',2);                  $mps .= isis_to_mps($row,'273',2);
455    
                 $headline .= isis_sf($row,'700','b'," ");  
                 $headline .= isis_sf($row,'700','a'," ");  
   
456                  # izdavac                  # izdavac
457                  $mps .= isis_to_mps($row,'210',3);                  $mps .= isis_to_mps($row,'210',3);
458                  $mps .= isis_to_mps($row,'250',3);                  $mps .= isis_to_mps($row,'250',3);
# Line 413  foreach my $isis_db (@isis_dbs) { Line 471  foreach my $isis_db (@isis_dbs) {
471                  if (my $year = isis_sf($row,'210','d')) {                  if (my $year = isis_sf($row,'210','d')) {
472                          $year =~ s/^\s*cop\.*\s*//i;                          $year =~ s/^\s*cop\.*\s*//i;
473                          $year =~ s/[\[\]]*//g;                          $year =~ s/[\[\]]*//g;
474                            $year =~ s/[\n\r]//g;   # remove cr
475                          $mps .= "D ${year}\n" if ($year !~ m/\?/ && $year =~ /\d{4}/);                          $mps .= "D ${year}\n" if ($year !~ m/\?/ && $year =~ /\d{4}/);
                         $headline .= " ($year)";  
476                  }                  }
477    
478                  $mps .= isis_to_mps($row,'215',15);                  $mps .= isis_to_mps($row,'215',15);
# Line 448  foreach my $isis_db (@isis_dbs) { Line 506  foreach my $isis_db (@isis_dbs) {
506                  $bib .= isis_to_bib($row,'610','%610');                  $bib .= isis_to_bib($row,'610','%610');
507                  $mps .= isis_to_mps($row,'610',8);                  $mps .= isis_to_mps($row,'610',8);
508    
509                  $bib .= isis_to_bib($row,'675','%675+');                  $bib .= isis_to_bib($row,'675','%675+','a');
510                  $mps .= isis_to_mps($row,'675',9);                  $mps .= isis_to_mps($row,'675',9);
511                  $bib .= isis_to_bib($row,'686','%675+');                  $bib .= isis_to_bib($row,'686','%675+','a');
512                  $mps .= isis_to_mps($row,'686',10);                  $mps .= isis_to_mps($row,'686',10);
513    
514                  $bib .= isis_to_bib($row,'990','%990');                  $bib .= isis_to_bib($row,'990','%990');
# Line 459  foreach my $isis_db (@isis_dbs) { Line 517  foreach my $isis_db (@isis_dbs) {
517                  $bib .= isis_to_bib($row,'991','%991');                  $bib .= isis_to_bib($row,'991','%991');
518                  $mps .= isis_to_mps($row,'991',12);                  $mps .= isis_to_mps($row,'991',12);
519    
520                  sub store_isn {                  # Jezik
521                          if (my $isn = shift @_) {                  $bib .= isis_to_bib($row,'101','%101');
522                                  my $nr = shift @_;                  $mps .= isis_to_mps($row,'101',16);
523                                  my $tag = shift @_;                  # Pismo
524                    $bib .= isis_to_bib($row,'998','%101', 'a');
525    
526                    sub isis_isn_to_mps {
527                            my $row = shift @_ || die;
528                            my $isis_id = shift @_ || die;
529                            my $nr = shift @_ || die;
530                            my $i=0;
531                            my $mps='';
532                            while (my $isn=$row->{$isis_id}->[$i]) {
533                                  $isn =~ s/ +//g;        # remove spaces                                  $isn =~ s/ +//g;        # remove spaces
534                                    $isn =~ s/[\n\r]//g;    # remove cr
535                                  $mps .= "W $isn $nr\n";                                  $mps .= "W $isn $nr\n";
                                 $bib .= "$tag $isn\n";  
536                                  if ($isn =~ s/-//g) {                                  if ($isn =~ s/-//g) {
537                                          $mps .= "W $isn $nr\n";                                          $mps .= "W $isn $nr\n";
538                                  }                                  }
539                                    $i++;
540                          }                          }
541                            return $mps;
542                  }                  }
543    
544                  # ISBN                  # ISBN
545                  store_isn($row->{10}->[0],13,'%ISBN');                  $bib .= isis_to_bib($row,'10','%ISBN');
546                  $mps .= isis_to_mps($row,'290',13);                  $mps .= isis_isn_to_mps($row,'10',13);
547                  $mps .= isis_to_mps($row,'291',13);                  $mps .= isis_isn_to_mps($row,'290',13);
548                  $mps .= isis_to_mps($row,'292',13);                  $mps .= isis_isn_to_mps($row,'291',13);
549                  $mps .= isis_to_mps($row,'293',13);                  $mps .= isis_isn_to_mps($row,'292',13);
550                    $mps .= isis_isn_to_mps($row,'293',13);
551    
552                  # ISSN                  # ISSN
553                  #store_isn($row->{11}->[0],14,'%ISSN');                  $bib .= isis_to_bib($row,'11','%ISSN');
554                    $mps .= isis_isn_to_mps($row,'11',13);
555    
556                  $mps .= isis_to_mps($row,'532',1);                  $mps .= isis_to_mps($row,'532',1);
557    
558                  $bib .= isis_to_bib($row,'994','%994a','a');                  # Casopisi
559                    $tmp = isis_to_bib($row,'326','%326');
560                    $tmp =~ s/g1/godinjak/;
561                    $tmp =~ s/g6/dvomjesenik/;
562                    $tmp =~ s/10/godinje 10 brojeva/;
563                    $tmp =~ s/m1/mjesenik/;
564                    $tmp =~ s/m2/polumjesenik/;
565                    $tmp =~ s/nr/neredovito/;
566                    $tmp =~ s/g4/etiri puta godinje/;
567                    $bib .= c_iso_852($tmp);
568                    $bib .= isis_to_bib($row,'992','%992');
569    
570                    $bib .= '%knjiz '.$DatabaseDescriptions{$db_dir}.", ".$row->{mfn}."\n";
571                  # headline                  # headline
572                  if ($headline) {                  if ($headline) {
573                          $headline .= " [".$row->{mfn}."]";      ## debug MFN!                          $headline .= " <i>(".$DatabaseDescriptions{$db_dir}.", ".$row->{mfn}.")</i>";   ## debug MFN!
574                          $headline =~ s/&/&and;/g;                          $headline =~ s/&/&and;/g;
575                          $headline =~ s/</&lt;/g;                          $headline =~ s/</&lt;/g;
576                          $headline =~ s/>/&gt;/g;                          $headline =~ s/>/&gt;/g;

Legend:
Removed from v.1.8  
changed lines
  Added in v.1.20

  ViewVC Help
Powered by ViewVC 1.1.26