On Thursday, August 21, 2003, at 01:10 PM, Bill White wrote:

Is there an easy perl way to retrieve a MARC record for a given ISBN?

Yes, using Z39.50! :-)


With Net::Z3950 you can do something like this (untested, error handling omitted):

  use Net::Z3950;
  my %options = (
      'databaseName' => $db_name,
      'querytype' => 'prefix',
      'preferredRecordSyntax' => 19,  # USMARC
      ... other options ...
  );
  my %searches = (
      'isbn' => '@attr 1=7 @attr 4=1 "%s"',
      'issn' => '@attr 1=8 @attr 4=1 "%s"',
      ... other types of search if desired ...
  );
  my $conn = Net::Z3950::Connection->new($host, $port, %options);
  my $result_set = $conn->search(sprintf $searches{isbn}, $isbn);
  foreach my $i (1..$result_set->size) {
      my $record = $result_set->record($i);
      my $marc = MARC::Record->new_from_usmarc($record->rawdata);
      ... do something with the record ...
  }
  $conn->close;

You can use syntaxes other than prefix, but that's the one I know best.

FWIW, the specs on bib-1 searches in Z39.50 aren't too horribly complicated:

ftp://ftp.loc.gov/pub/z3950/defs/bib1.txt

Some good Z39.50 resources are available:

  http://www.ilrt.bris.ac.uk/discovery/z3950/resources/
  http://www.niso.org/standards/resources/Z3950_Resources.html

The Library of Congress keeps a list of servers that have been made available for testing purposes, including their own:

http://lcweb.loc.gov/z3950/agency/resources/testport.html

Make sure you read the info here before using them:

http://lcweb.loc.gov/z3950/agency/proced.html#hosts

FWIW, I'm working on a Perl module that makes bib-1 searching via Z39.50 a bit simpler:

  use Zoose;
  $z = Zoose->new(
      'host' => $host,
      'port' => $port,
      ...
  );
  $rs = $z->search('isbn' => $isbn);
  foreach my $i (1..$rs->count) {
      $book = $rs->match($i);
      print $book->title_proper, "\n";
      ... other MARC::Record operations here ...
  }

But it will be a little while till it's ready for release. Bug me if you want me to hurry. :-)

HTH,

Paul.

--
Paul Hoffman :: Taubman Medical Library :: Univ. of Michigan
[EMAIL PROTECTED] :: [EMAIL PROTECTED] :: http://www.nkuitse.com/



Reply via email to