#!/usr/bin/perl
$baseURL = "https://okapi-drew.folio.ebsco.com";
$jsonHeader = "Content-type: application/json";
$xOkapiToken = `cat /opt/folio/okapi-tokens/okapi-token.txt`;
chomp($xOkapiToken);
use JSON;
$json = `curl -s -X GET -G -H '$jsonHeader' -H '$xOkapiToken' -d 'limit=2000' $baseURL/locations?query=code="*"`;
$hash = decode_json $json;
for ( @{$hash->{locations}} ) {
$name = $_->{'name'};
$id = $_->{'id'};
$locationName{$id} = $name;
}
$jsonA = `curl -s -X GET -G -H '$jsonHeader' -H '$xOkapiToken' -d 'limit=100' $baseURL/coursereserves/terms?query=id="*"`;
$hashA = decode_json $jsonA;
for ( @{$hashA->{terms}} ) {
$name = $_->{'name'};
if ($name eq "Spring 2025") {
$termId = $_->{'id'};
}
}
$jsonB = `curl -s -X GET -G -H '$jsonHeader' -H '$xOkapiToken' -d 'limit=1000' $baseURL/coursereserves/courselistings?query=termId=$termId`;
$hashB = decode_json $jsonB;
for ( @{$hashB->{courseListings}} ) {
$courseListingId = $_->{'id'};
for ( @{$_->{'instructorObjects'}} ) {
$profName = $_->{'name'};
}
$jsonC = `curl -s -X GET -G -H '$jsonHeader' -H '$xOkapiToken' -d 'limit=1000' $baseURL/coursereserves/courses?query=courseListingId=$courseListingId`;
$hashC = decode_json $jsonC;
for ( @{$hashC->{courses}} ) {
$courseId = $_->{'id'};
$courseNumber = $_->{'courseNumber'} . "/" . $_->{'sectionName'};
$courseNumber =~ s/\/$//;
$name = $_->{'name'};
push(@courses,"$courseNumber|$profName|$name|\n");
$jsonD = `curl -s -X GET -G -H '$jsonHeader' -H '$xOkapiToken' -d 'limit=1000' $baseURL/coursereserves/reserves?query=courseListingId=$courseListingId`;
$hashD = decode_json $jsonD;
for ( @{$hashD->{reserves}} ) {
$counter++;
$callNumber = $_->{'copiedItem'}{'callNumber'};
$temporaryLocationId = $_->{'copiedItem'}{'temporaryLocationId'};
$location = $locationName{$temporaryLocationId};
$title = $_->{'copiedItem'}{'title'};
$sortTitle = lc($title);
$sortTitle =~ s/^the //;
$sortTitle =~ s/^la //;
$sortTitle =~ s/^an //;
$sortTitle =~ s/^a //;
push(@reserves,"$sortTitle|$title|$callNumber|$courseNumber|$location|\n");
}
}
}
@coursesSorted = sort @courses;
@reservesSorted = sort @reserves;
$html = "<ul>";
foreach $course (@coursesSorted) {
($courseNumber,$profName,$name) = split(/\|/,$course);
$html .= "<p><li><b>$courseNumber $name </b><br>Prof. $profName<ul>";
foreach $reserve (@reservesSorted) {
if ($reserve =~ /\|$courseNumber\|/) {
($sortTitle,$title,$callNumber,$courseNumber,$location) = split(/\|/,$reserve);
$html .= "<li>$title <br> $location $callNumber";
}
}
$html .= "</ul>";
}
$html .= "</ul><!-- @reserves -->";
print "$html";
0 Comments