/[webpac]/trunk/all2xml.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 /trunk/all2xml.pl

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

revision 619 by dpavlin, Fri Dec 31 04:22:49 2004 UTC revision 628 by dpavlin, Sun Jan 2 22:09:01 2005 UTC
# Line 684  print STDERR "reading ./import_xml/$type Line 684  print STDERR "reading ./import_xml/$type
684          my $start_t = time();          my $start_t = time();
685          sub progress {          sub progress {
686                  return if (! $show_progress);                  return if (! $show_progress);
687                  my $current = shift || 1;                  my $current = shift;
688                  my $total = shift || 1;                  my $total = shift || 1;
689                  my $p = int($current * 100 / $total);                  my $p = int($current * 100 / $total);
690                  if ($p != $last_p) {                  if ($p < $last_p || $current == 1) {
691                            $start_t = time();
692                            $last_p = 0;
693                    } elsif ($p != $last_p) {
694                          my $rate = ($current / (time() - $start_t || 1));                          my $rate = ($current / (time() - $start_t || 1));
695                          my $eta = ($total-$current) / ($rate || 1);                          my $eta = ($total-$current) / ($rate || 1);
696                          printf STDERR ("%5d [%-38s] %-5d %0.1f/s %s\r",$current,"=" x ($p/3)."$p%>", $total, $rate, fmt_time($eta));                          printf STDERR ("%5d [%-38s] %-5d %0.1f/s %s\r",$current,"=" x ($p/3)."$p%>", $total, $rate, fmt_time($eta));
# Line 696  print STDERR "reading ./import_xml/$type Line 699  print STDERR "reading ./import_xml/$type
699          }          }
700    
701          my $fake_dir = 1;          my $fake_dir = 1;
702            my $fake_pos = 0;
703            my $last_fake_t = time();
704          sub fakeprogress {          sub fakeprogress {
705                  return if (! $show_progress);                  return if (! $show_progress);
706                  my $current = shift @_;                  my $current = shift @_;
707    
708                  my @ind = ('-','\\','|','/','-','\\','|','/', '-');                  my @ind = ('-','\\','|','/','-','\\','|','/');
709    
710                  $last_p += $fake_dir;                  if ($current < $fake_pos) {
711                  $fake_dir = -$fake_dir if ($last_p > 1000 || $last_p < 0);                          $start_t = time();
712                  if ($last_p % 10 == 0) {                          $last_fake_t = 0;
713                          printf STDERR ("%5d / %5s [%-51s]\r",$current,"?"," " x ($last_p/20).$ind[($last_p/20) % $#ind]);                          $fake_dir = 1;
714                            $fake_pos = 0;
715                    }
716    
717                    if (time()-$last_fake_t >= 1) {
718                            $last_fake_t = time();
719                            $fake_pos += $fake_dir;
720                            $fake_dir = -$fake_dir if ($fake_pos > 38);
721                    }
722    
723                    if ($current % 10 == 0) {
724                            my $rate = ($current / (time() - $start_t || 1));
725                            printf STDERR ("%5d [%-38s] %0.1f/s\r",$current, " " x $fake_pos .$ind[($current / 10) % 8], $rate);
726                  }                  }
727          }          }
728    
# Line 811  print STDERR "using: $type...\n"; Line 828  print STDERR "using: $type...\n";
828                  }                  }
829          } elsif ($type_base eq "marc") {          } elsif ($type_base eq "marc") {
830    
831                  require MARC;                  require MARC::File::USMARC;
832                                    
833                  $import2cp = Text::Iconv->new($config->{marc_codepage},$codepage);                  $import2cp = Text::Iconv->new($config->{marc_codepage},$codepage);
834                  my $marc_file = $cfg -> val($database, 'marc_file') || die "$database doesn't have 'marc_file' defined!";                  my $marc_file = $cfg -> val($database, 'marc_file') || die "$database doesn't have 'marc_file' defined!";
835    
836                  # optional argument is format                  # optional argument is format
837                  my $format = x($config->{marc_format}) || 'usmarc';                  warn "marc_format is no longer used!" if ($config->{marc_format});
   
838                  print STDERR "Reading MARC file '$marc_file'\n";                  print STDERR "Reading MARC file '$marc_file'\n";
839    
840                  my $marc = new MARC;                  my $marc = MARC::File::USMARC->in( $marc_file )
841                  my $nr = $marc->openmarc({                          || die "Can't open MARC file '$marc_file': ".$MARC::File::ERROR;
                                 file=>$marc_file, format=>$format  
                         }) || die "Can't open MARC file '$marc_file' with format '$format'";  
842    
843                  # read MARC file in memory                  # count records in MARC file
844                  $marc->nextmarc(-1);                  sub marc_count {
845                            my $filename = shift || die;
846                            my $file = MARC::File::USMARC->in($filename) || die $MARC::File::ERROR;
847                            my $count = 0;
848                            while ($file->skip()) {
849                                    $count++;
850                            }
851                            return $count;
852                    }
853    
854                  my $max_rec = $marc->marc_count();                  my $count = marc_count($marc_file) || warn "no records in '$marc_file'?";
855    
856                  for(my $i=1; $i<=$max_rec; $i++) {                  my $i = 0;
857    
858                          progress($i,$max_rec);                  while( my $rec = $marc->next() ) {
859    
860                          # store value for marc_sf.pm                          progress($i++,$count);
                         $main::cache->{marc_record} = $i;  
861    
862                          my $swishpath = $database."#".$i;                          my $swishpath = $database."#".$i;
863    
864                          if (my $xml = data2xml($type_base,$marc,$add_xml,$cfg,$database)) {                          if (my $xml = data2xml($type_base,$rec,$add_xml,$cfg,$database)) {
865                                  $xml = $cp2utf->convert($xml);                                  $xml = $cp2utf->convert($xml);
866                                  use bytes;      # as opposed to chars                                  use bytes;      # as opposed to chars
867                                  print "Path-Name: $swishpath\n";                                  print "Path-Name: $swishpath\n";
# Line 911  all2xml.pl - read various file formats a Line 932  all2xml.pl - read various file formats a
932    
933  =head1 DESCRIPTION  =head1 DESCRIPTION
934    
935  This command will read ISIS data file using OpenIsis perl module, MARC  This command will read ISIS data file using IsisDB perl module, MARC
936  records using MARC module and optionally Micro$oft Excel files to  records using MARC module and optionally Micro$oft Excel files to
937  create one XML file for usage with I<SWISH-E> indexer. Dispite it's name,  create one XML file for usage with I<SWISH-E> indexer. Dispite it's name,
938  this script B<isn't general xml generator> from isis files (isis allready  this script B<isn't general xml generator> from isis files (isis allready

Legend:
Removed from v.619  
changed lines
  Added in v.628

  ViewVC Help
Powered by ViewVC 1.1.26