From: Don Armstrong Date: Tue, 24 Jan 2017 16:20:15 +0000 (-0800) Subject: fix multiple catalog records per id X-Git-Url: https://git.donarmstrong.com/?p=reference.git;a=commitdiff_plain;h=6eca5aec481210de2f3fa2a3fb22aed90c7efa5a;hp=9c67489ca8d50da846d0cbc96ff01cb86eb9ed42 fix multiple catalog records per id --- diff --git a/debian/changelog b/debian/changelog index 091d371..04f7482 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +libreference-perl (0.2-3) unstable; urgency=medium + + * Fix multiple catalog records per id + + -- Don Armstrong Tue, 24 Jan 2017 10:09:53 -0600 + libreference-perl (0.2-2) unstable; urgency=medium * New update for odd journal names diff --git a/lib/Reference/Retrieve/PubMed.pm b/lib/Reference/Retrieve/PubMed.pm index 9c47775..6cc771b 100644 --- a/lib/Reference/Retrieve/PubMed.pm +++ b/lib/Reference/Retrieve/PubMed.pm @@ -337,7 +337,7 @@ sub _fix_medline_journal($$$;){ $ISSN = $ISSN->{content}; } my $url = qq(http://www.ncbi.nlm.nih.gov/nlmcatalog/?term=${ISSN}[ISSN]&format=text&report=xml); - print STDERR "url: $url" if $DEBUG; + print STDERR "url: $url\n" if $DEBUG; my $request = HTTP::Request->new('GET', $url); my $response = $ua->request($request); $response = $response->content; @@ -345,10 +345,17 @@ sub _fix_medline_journal($$$;){ $response =~ s/\<///; - print STDERR "response: $response" if $DEBUG; + print STDERR "response: $response\n" if $DEBUG; my $xa = new XML::Simple; my $ref_struct = $xa->XMLin($response,ForceArray=>['NCBICatalogRecord'],KeyAttr=>[]); - my $ref = $ref_struct->{NCBICatalogRecord}[0]; + my $ref; + for (0..@{$ref_struct->{NCBICatalogRecord}}) { + if (exists $ref_struct->{NCBICatalogRecord}[$_]{JrXml}) { + $ref = $ref_struct->{NCBICatalogRecord}[$_]; + last; + } + } + $ref = $ref_struct->{NCBICatalogRecord}[0] if not defined $ref; print STDERR Dumper($ref) if $DEBUG; my %journal; @@ -362,9 +369,11 @@ sub _fix_medline_journal($$$;){ $journal{lc($2)} = $3; } } + print STDERR Dumper($ref) if $DEBUG; if (ref $ref->{JrXml}{Serial}{ISSN} ne 'ARRAY') { $ref->{JrXml}{Serial}{ISSN} = [$ref->{JrXml}{Serial}{ISSN}]; } + print STDERR Dumper($ref->{JrXml}) if $DEBUG; my $print_issn = $ref->{JrXml}{Serial}{ISSN}[0]{IssnType} eq 'Print' ? 0 : 1; my @journal_entry = (title => $ref->{JrXml}{Serial}{Title},