X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=pubmed_search;h=acd327d594710f5d04876de5aba39213a55a379a;hb=56c8d8b286ae38e170ce915472f9aa86fabf9fee;hp=23333ea3004257c94b48930759ecc996087c84ab;hpb=683c8aef9d3cf8660d2ed553809ea385c8d9e465;p=bin.git diff --git a/pubmed_search b/pubmed_search index 23333ea..acd327d 100755 --- a/pubmed_search +++ b/pubmed_search @@ -1,9 +1,9 @@ #! /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 . -# $Id: perl_script 1825 2011-01-02 01:53:43Z don $ +# Copyright 2011,2017 by Don Armstrong . + use warnings; @@ -12,7 +12,7 @@ use strict; use Getopt::Long; use Pod::Usage; -use Bio::DB::SoapEUtilities; +use Bio::DB::EUtilities; use Encode qw(encode_utf8); use Term::ANSIColor qw(:constants); @@ -70,7 +70,7 @@ GetOptions(\%options, '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}; @@ -86,18 +86,23 @@ if (not @ARGV) { 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(); -if ($result eq '0') { +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; } -my @ids = $result->ids; if (@ids > 0 and ref($ids[0])) { @ids = @{$ids[0]}; } @@ -110,12 +115,13 @@ if ($options{org_mode}) { } 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;