App-PDFLibrarian

 view release on metacpan or  search on metacpan

bin/pdf-lbr-query-ads  view on Meta::CPAN

#
# You should have received a copy of the GNU General Public License
# along with App::PDFLibrarian. If not, see <http://www.gnu.org/licenses/>.

use strict;
use warnings;

use Carp;
use FindBin qw($Script);
use Getopt::Long qw(:config no_ignore_case);
use HTTP::Request;
use JSON;
use LWP::UserAgent;
use Pod::Usage;
use Text::Unidecode;
use URI;

FindBin::again();

use App::PDFLibrarian qw($cfgdir);
use App::PDFLibrarian::TitleAbbr qw(get_aas_macros);

bin/pdf-lbr-query-ads  view on Meta::CPAN


# escape any colons and parentheses in query value
$query =~ s{^([^:]*):(.*)$}{ my $k = $1; my $v = $2; $v =~ s|:|\\:|g; "$k:$v" }e;
$query =~ s/([()])/\\$1/g;

# send query to ADS
my $querycontent;
{
  my $adsuri = URI->new('https://api.adsabs.harvard.edu/v1/search/query');
  $adsuri->query_form(rows => 1, fl => 'bibcode', 'q' => $query);
  my $request = HTTP::Request->new('GET', $adsuri);
  $request->header('Authorization' => "Bearer $api_token");
  my $result = $useragent->request($request);
  if (!$result->is_success) {
    my $status = $result->status_line;
    croak "$Script: ADS query failed: $status";
  }
  $querycontent = $result->content;
}

# parse ADS query response from JSON

bin/pdf-lbr-query-ads  view on Meta::CPAN

eval {
  $exportcontent = encode_json({ bibcode => [$queryjson->{response}->{docs}->[0]->{bibcode}]});
  1;
} or do {
  croak "$Script: could not construct ADS export request: $@";
};

# export BibTeX record from ADS
{
  my $adsuri = URI->new('https://api.adsabs.harvard.edu/v1/export/bibtex');
  my $request = HTTP::Request->new('POST', $adsuri);
  $request->header('Authorization' => "Bearer $api_token");
  $request->header('Content-Type' => 'application/json');
  $request->content($exportcontent);
  my $result = $useragent->request($request);
  if (!$result->is_success) {
    my $status = $result->status_line;
    croak "$Script: ADS export failed: $status";
  }
  $exportcontent = $result->content;
}



( run in 0.573 second using v1.01-cache-2.11-cpan-acf6aa7dc9e )