The Mount Prospect Public Library wanted to have the New York Times Bestsellers list on their website. So I decided to create a program that would do that for them. The program works by fetching JSON data from the NYT API, comparing it against the libraries catalog to make sure they own a copy, then creating an xml file with information about the items in the list. A page on the website loads that XML file and parses it. The whole program is run on a cron job once a week when the new Best Sellers lists come out.
chdir(dirname(__FILE__)); function PullData($listType) { $curl = curl_init(); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $query = array( // You'll need your own API key "api-key" => "", "list" => $listType ); curl_setopt($curl, CURLOPT_URL, "https://api.nytimes.com/svc/books/v3/lists.json" . "?" . http_build_query($query) ); $data = json_decode(curl_exec($curl)); $listTitle = $data->results[0]->list_name; $listCount = count($data->results); $fileTitle = str_replace(' ', '_', $listTitle); $fileTitle1 = str_replace(':', '', $fileTitle); // Opening the file to write to it. $filename = $fileTitle1.".xml"; $file = fopen($filename, "w"); fwrite($file, ""); fwrite($file, "\n"); fwrite($file,"\n "); fclose($file); } // End PullData // Create a new XML file for each book list PullData("combined-print-and-e-book-nonfiction"); PullData("combined-print-and-e-book-fiction"); PullData("hardcover-fiction"); PullData("young-adult"); PullData("childrens-middle-grade"); PullData("hardcover-nonfiction"); echo "Finished";$listTitle "); for ($i=0; $i < $listCount ; $i++) { $isbn = $data->results[$i]->book_details[0]->primary_isbn13; $title1 = $data->results[$i]->book_details[0]->title; $title = str_replace('&', '&', $title1); $author1 = $data->results[$i]->book_details[0]->author; $author = str_replace('&', '&', $author1); $description1 = $data->results[$i]->book_details[0]->description; $description = str_replace('&', '&', $description1); $cSession1 = curl_init(); // You'll need your own version of the SirsiDynix Web Services API $sirsiDynixWebServicesApi = ""; // You'll need your own clientID for the SirsiDynix Web Services API $clientID = ""; curl_setopt($cSession1, CURLOPT_URL, $sirsiDynixWebServicesApi."/rest/standard/searchCatalog?clientID=".$clientID."&term=$isbn&indexID=ISBNEX"); curl_setopt($cSession1, CURLOPT_RETURNTRANSFER, true); curl_setopt($cSession1, CURLOPT_HEADER, false); $response = curl_exec($cSession1); curl_close($cSession1); $catalogCheck = simplexml_load_string($response); $inCatalog = $catalogCheck->totalHits; $bibNumber = $catalogCheck->titleInfo->titleKey; if ($inCatalog == 1){ fwrite($file, "\n"); if($isbn != ""){ fwrite($file, "\n "); } } fwrite($file, "\nhttps://secure.syndetics.com/index.aspx?isbn=$isbn/mc.gif&upc=&oclc=&client=mounp "); } else { fwrite($file, "\nimages/missing-image.png "); } fwrite($file, "\n$bibNumber "); fwrite($file, "\n$title "); if($author != "") { fwrite($file, "\n$author "); } if($description != "") { fwrite($file, "\n$description "); } fwrite($file, "\nhttp://mtpros.ent.sirsi.net/client/default/search/results?qu=$bibNumber"); fwrite($file, "\n$isbn "); fwrite($file, "\n