#! /usr/bin/perl
-# , and is released
+# pubmed_search searches for articles on pubmed, and is released
# under the terms of the GPL version 2, or any later version, at your
# option. See the file README and COPYING for more information.
-# Copyright 2011 by Don Armstrong <don@donarmstrong.com>.
-# $Id: perl_script 1825 2011-01-02 01:53:43Z don $
+# Copyright 2011,2017 by Don Armstrong <don@donarmstrong.com>.
+
use warnings;
use Getopt::Long;
use Pod::Usage;
-use Bio::DB::SoapEUtilities;
+use Bio::DB::EUtilities;
use Encode qw(encode_utf8);
use Term::ANSIColor qw(:constants);
'color|c!',
'org_mode|org-mode',
'pmid_only|pmid-only',
- 'abstract|a!',
+ 'abstract|abstracts|a!',
'debug|d+','help|h|?','man|m');
pod2usage() if $options{help};
pod2usage(join("\n",@USAGE_ERRORS)) if @USAGE_ERRORS;
-my $fac = Bio::DB::SoapEUtilities->new();
-
-my $result = $fac->esearch(-email => 'don@donarmstrong.com',
- -db => 'pubmed',
- -term => join(' ',@ARGV),
- -retmax => 1000,
- )->run();
-my @ids = $result->ids;
+my $result =
+ Bio::DB::EUtilities->new(-email => 'don@donarmstrong.com',
+ -db => 'pubmed',
+ -term => join(' ',@ARGV),
+ -retmax => 1000,
+ -eutil => 'esearch',
+ );
+my @ids;
+eval {
+ # this warns for everything, so hide the warning.
+ local $SIG{__WARN__} = sub {};
+ @ids = $result->get_ids('pubmed')
+};
+if (not @ids) {
+ print "No results\n";
+ exit;
+}
if (@ids > 0 and ref($ids[0])) {
@ids = @{$ids[0]};
}
}
print scalar(@ids)." results:\n";
exit 0 unless @ids;
-my $raw_xml = $fac->efetch(-email => 'don@donarmstrong.com',
- -db => 'pubmed',
- -id => \@ids
- )->run(-raw_xml => 1);
+my $raw_xml = Bio::DB::EUtilities->new(-email => 'don@donarmstrong.com',
+ -db => 'pubmed',
+ -id => \@ids,
+ -eutil => 'efetch',
+ );
use XML::LibXML;
-my $xml = XML::LibXML->load_xml(string => $raw_xml);
+my $xml = XML::LibXML->load_xml(string => $raw_xml->get_Response->content);
print STDERR $xml->toString if $DEBUG;
for my $article ($xml->findnodes(q{//*[local-name()='MedlineCitation']})) {
print STDERR $article->toString if $DEBUG;