Print

Print


Hi,

have a look at the Catmandu framework for Perl.

Install Catmandu ( https://metacpan.org/pod/Catmandu) and Catmandu::OAI 
( https://metacpan.org/pod/Catmandu::OAI).

# in the perl script:

use Catmandu::Importer::OAI;
my $importer = Catmandu::Importer::OAI->new(
url => "...",
metadataPrefix => "..." , ); $importer->each(sub { my $hashref = $_[0]; 
# do something with $hashref... });


or directly from the command line:
$ catmandu convert OAI --url http://pub.uni-bielefeld.de/oai to JSON

(the arxiv oai interface seems to be very slow.)

There's also an importer for arxiv.org: Catmandu::ArXiv ( 
https://metacpan.org/pod/Catmandu::ArXiv)

Everything is also on github: https://github.com/LibreCat

Cheers,
Vitali

On 14.01.2014 21:01, Eka Grguric wrote:
> Hi,
>
> I am a complete newbie to Perl (and to Code4Lib) and am trying to set up a harvester to get complete metadata records from oai-pmh repositories. My current approach is to use things already built as much as possible - specifically the Net::Oai::Harvester (http://search.cpan.org/~esummers/OAI-Harvester-1.0/lib/Net/OAI/Harvester.pm). The code I'm using is located in the synopsis and specific parts of it seem to work with some samples I've tried. For example, if I submit a request for a list of sets to the oai url for arXiv.org (http://arXiv.org/oai2) I get the correct list.
>
> The error I run into reads "can't call listRecords() on an undefined value in *filename* line *#*". listRecords() seems to have been an issue in past iterations but I'm not sure how to get around it.
>
> At the moment it looks like this:
>   ## list all the records in a repository
>       my $list = $harvester->listRecords(
> 		metadataPrefix = 'oai_dc'
> 	 );
>
> Any help (or Perl resources) would be appreciated!
>
> Thanks,
>
> Eka
> MLIS Candidate, UBC iSchool


-- 
Vitali Peil
Fachreferent
PUB <pub.uni-bielefeld.de>
Raum E1-144, Tel. 0521 106 6125
Universitätsbibliothek Bielefeld