Allow predictable sessions PAZ-1030
[pazpar2-moved-to-github.git] / zeerex / zeerex_fetchall.pl
1 #!/usr/bin/perl -w
2
3 use strict;
4 use ZOOM;
5 use XML::Simple;
6 use Data::Dumper;
7 use URI::Escape;
8
9 if (!$ARGV[0])
10 {
11     die("Usage xx irspy-server\n");
12 }
13 my $server = $ARGV[0];
14
15 my $c = new ZOOM::Connection($server);
16 my $res = $c->search(new ZOOM::Query::CQL('cql.allRecords=1'));
17 $res->option(schema => 'zeerex');
18 print STDERR "Hits: " . $res->size() . "\n";
19 my $i;
20 for ($i = 0; $i < $res->size(); $i++)
21 {
22     my $rec = $res->record($i);
23     my $txt = $rec->raw();
24     my $r = XML::Simple::XMLin($txt, forceArray =>
25             ['set', 'index', 'map', 'attr', 'supports', 'missing',
26             'recordSyntax', 'elementSet']);
27     my $si = $r->{serverInfo};
28     if ($si->{protocol} ne 'Z39.50')
29     {
30         next;
31     }
32     $si->{host} =~ s/^ *//;
33     $si->{host} =~ s/ *$//;
34     $si->{port} =~ s/^ *//;
35     $si->{port} =~ s/ *$//;
36     $si->{database} =~ s/^ *//;
37     $si->{database} =~ s/ *$//;
38     my $id = $si->{host} . ":" . $si->{port} . "/" . $si->{database};
39     $id = uri_escape($id);
40     print STDERR $id . "\n";
41     open O, ">records/$id" or die "$id: $!";
42     print O $txt;
43     close O;
44 }