X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=zeerex%2Fzeerex_fetchall.pl;fp=zeerex%2Fzeerex_fetchall.pl;h=92675547fa8cbcbdf064d8ec0e3eb6a2fc8b6c45;hb=e954f104fba0c6ef9142f09042e0b7e7f73d7388;hp=0000000000000000000000000000000000000000;hpb=4890bf9ca6032cb363b3f07c9a89d3de3aedd211;p=pazpar2-moved-to-github.git diff --git a/zeerex/zeerex_fetchall.pl b/zeerex/zeerex_fetchall.pl new file mode 100755 index 0000000..9267554 --- /dev/null +++ b/zeerex/zeerex_fetchall.pl @@ -0,0 +1,44 @@ +#!/usr/bin/perl -w + +use strict; +use ZOOM; +use XML::Simple; +use Data::Dumper; +use URI::Escape; + +if (!$ARGV[0]) +{ + die("Usage xx irspy-server\n"); +} +my $server = $ARGV[0]; + +my $c = new ZOOM::Connection($server); +my $res = $c->search(new ZOOM::Query::CQL('cql.allRecords=1')); +$res->option(schema => 'zeerex'); +print STDERR "Hits: " . $res->size() . "\n"; +my $i; +for ($i = 0; $i < $res->size(); $i++) +{ + my $rec = $res->record($i); + my $txt = $rec->raw(); + my $r = XML::Simple::XMLin($txt, forceArray => + ['set', 'index', 'map', 'attr', 'supports', 'missing', + 'recordSyntax', 'elementSet']); + my $si = $r->{serverInfo}; + if ($si->{protocol} ne 'Z39.50') + { + next; + } + $si->{host} =~ s/^ *//; + $si->{host} =~ s/ *$//; + $si->{port} =~ s/^ *//; + $si->{port} =~ s/ *$//; + $si->{database} =~ s/^ *//; + $si->{database} =~ s/ *$//; + my $id = $si->{host} . ":" . $si->{port} . "/" . $si->{database}; + $id = uri_escape($id); + print STDERR $id . "\n"; + open O, ">records/$id" or die "$id: $!"; + print O $txt; + close O; +}