comparison xml/getAmazonInfo.php @ 19:84a412b8122c

try to protect against a range of missing info
author Charlie Root
date Thu, 30 Aug 2018 17:18:12 -0400
parents c41a5802b26c
children 46382face560
comparison
equal deleted inserted replaced
18:c41a5802b26c 19:84a412b8122c
106 //$lastReqTime=(int)(microtime(true)*1000); // milliseconds 106 //$lastReqTime=(int)(microtime(true)*1000); // milliseconds
107 curl_close($crl); 107 curl_close($crl);
108 108
109 /*$xml = new SimpleXMLElement("<?xml version=\"1.0\"?><ItemLookupErrorResponse xmlns=\"http://ecs.amazonaws.com/doc/2009-03-31/\"><Error><Code>AccountLimitExceeded</Code><Message>Account limit of 2056 requests per hour exceeded.</Message></Error><RequestID>290ed059-730c-4789-93b4-6d21e11053d3</RequestID></ItemLookupErrorResponse>");*/ 109 /*$xml = new SimpleXMLElement("<?xml version=\"1.0\"?><ItemLookupErrorResponse xmlns=\"http://ecs.amazonaws.com/doc/2009-03-31/\"><Error><Code>AccountLimitExceeded</Code><Message>Account limit of 2056 requests per hour exceeded.</Message></Error><RequestID>290ed059-730c-4789-93b4-6d21e11053d3</RequestID></ItemLookupErrorResponse>");*/
110 $review = ""; 110 $review = "";
111 $review1 = "";
112 $review2 = "";
113 $review3 = "";
111 // HST added this 114 // HST added this
112 if (preg_match("<Error>",$output)) { 115 if (preg_match("<Error>",$output)) {
113 $xml = new SimpleXMLElement($output); 116 $xml = new SimpleXMLElement($output);
114 $resName=$xml->getName(); 117 $resName=$xml->getName();
115 $code=$xml->Error->Code; 118 $code=$xml->Error->Code;
143 // /var/ywww/xml/getAmazonInfo.php on line [109] 146 // /var/ywww/xml/getAmazonInfo.php on line [109]
144 // See the dumped structure at the end of this file for the 147 // See the dumped structure at the end of this file for the
145 // cause 148 // cause
146 restore_error_handler(); 149 restore_error_handler();
147 //echo $review; 150 //echo $review;
148 $review1 = "";
149 $review2 = "";
150 $review3 = "";
151 } 151 }
152 if ($review != "") 152 if ($review != "")
153 { 153 {
154 $text = @file_get_contents($review . "&truncate=300"); 154 $text = @file_get_contents($review . "&truncate=300");
155 $removeTop1 = preg_replace('~<div class="crIFrameHeaderLeftColumn">(.*?)<div class="crIFrameHeaderHistogram">~si', '', $text); 155 $removeTop1 = preg_replace('~<div class="crIFrameHeaderLeftColumn">(.*?)<div class="crIFrameHeaderHistogram">~si', '', $text);
258 //echo $errorCode; 258 //echo $errorCode;
259 259
260 if($errorCode != "AccountLimitExceeded") 260 if($errorCode != "AccountLimitExceeded")
261 { 261 {
262 if($go == 1) { 262 if($go == 1) {
263 $item = $xml->Items->Item[0];
264 if ($item && $item->ItemAttributes && $item->ItemAttributes->Title) {
265 $title = $item->ItemAttributes->Title; }
266 else { $title = "[no title]"; };
263 file_put_contents('/var/ywww/debug/phpDebug',"win: ". 267 file_put_contents('/var/ywww/debug/phpDebug',"win: ".
264 $xml->Items->Item->ItemAttributes->Title."\n", 268 $title."\n",
265 FILE_APPEND); 269 FILE_APPEND);
266 return $output; 270 return $output;
267 } 271 }
268 else 272 else
273 {
274 if ($xml->Items->Item) {
275 $title = $xml->Items->Item[0]->ItemAttributes->Title;
276 $author = $xml->Items->Item[0]->ItemAttributes->Author;
277 $binding = $xml->Items->Item[0]->ItemAttributes->Binding;
278 $dewey = $xml->Items->Item[0]->ItemAttributes->DeweyDecimalNumber;
279 if($dewey == "")
280 $dewey = "null";
281 $imageURL = $xml->Items->Item[0]->MediumImage->URL;
282 $salesRank = $xml->Items->Item[0]->SalesRank;
283 $pubDate = $xml->Items->Item[0]->ItemAttributes->PublicationDate;
284 $publisher = $xml->Items->Item[0]->ItemAttributes->Publisher;
285 }
286 else {
287 $title = $salesRank = "";
288 $dewey = "null";
289 }
290
291 $genreID = "";
292 $genre = "";
293 $genArr = array();
294
295 if ($xml->Items->Item[0] && $xml->Items->Item[0]->BrowseNodes) {
296 for($i=0;$i<sizeof($xml->Items->Item->BrowseNodes->BrowseNode);$i++){
297 //sexy recursive function
298 findGenre($xml->Items->Item->BrowseNodes->BrowseNode[$i], $genreID, $genre);
299
300 if($genre != "")
301 $genArr[strval($genreID)] = strval($genre);
302 //$genArr[$i] = array(strval($genreID) => strval($genre));
303
304 //echo $genre;
305 //echo $genreID;
306
307 $genre = "";
308 $genreID = "";
309 }
310 }
311
312 $g1 = "null";
313 $g2 = "null";
314 $g3 = "null";
315 $loop = 1;
316
317 foreach ($genArr as $key => $value) {
318 //echo "$key => $value";
319 $queryG = "CALL b_addBrowseNode($key,\"$value\")"; //add the name value pair for genre to new table
320 //echo $queryG;
321 include "../../private/db.php";
322 $resG = mysqli_query($link, $queryG);
323 mysqli_close($link);
324
325 switch ($loop) {
326 case 1:
327 $g1 = $key;
328 break;
329 case 2:
330 $g2 = $key;
331 break;
332 case 3:
333 $g3 = $key;
334 break;
335 }
336
337 $loop++;
338 }
339
340 if($salesRank == "")
341 $salesRank = "null";
342
343 $title = strtr($title, '"', "'");
344 include "../../private/db.php";
345 $review1 = mysqli_real_escape_string($link,$review1);
346 $review2 = mysqli_real_escape_string($link,$review2);
347 $review3 = mysqli_real_escape_string($link,$review3);
348
349 if($title != "")
269 { 350 {
270 $title = $xml->Items->Item->ItemAttributes->Title; 351 $queryInsert = "CALL b_addNewBook(\"$searchparameterdata\",\"$title\", \"$author\",\"$binding\",\"$imageURL\", $dewey, $salesRank,\"$pubDate\",\"$publisher\",$g1,$g2,$g3,$loc)";
271 $author = $xml->Items->Item->ItemAttributes->Author; 352 //echo $queryInsert;
272 $binding = $xml->Items->Item->ItemAttributes->Binding; 353 $queryInsertReviews = "CALL b_insertReviews(\"$searchparameterdata\",\"$review1\",\"$review2\",\"$review3\")";
273 $dewey = $xml->Items->Item->ItemAttributes->DeweyDecimalNumber;
274 if($dewey == "")
275 $dewey = "null";
276 $imageURL = $xml->Items->Item->MediumImage->URL;
277 $salesRank = $xml->Items->Item->SalesRank;
278 $pubDate = $xml->Items->Item->ItemAttributes->PublicationDate;
279 $publisher = $xml->Items->Item->ItemAttributes->Publisher;
280
281 $genreID = "";
282 $genre = "";
283 $genArr = array();
284
285 for($i=0;$i<sizeof($xml->Items->Item->BrowseNodes->BrowseNode);$i++){
286 //sexy recursive function
287 findGenre($xml->Items->Item->BrowseNodes->BrowseNode[$i], $genreID, $genre);
288 354
289 if($genre != "") 355 $resG = mysqli_query($link, $queryInsert) or exit( mysqli_error( $link ));
290 $genArr[strval($genreID)] = strval($genre); 356 if($review1 != "" && $review2 != "" && $review3 != "")
291 //$genArr[$i] = array(strval($genreID) => strval($genre)); 357 $resG = mysqli_query($link, $queryInsertReviews) or exit( mysqli_error( $link ));
292
293 //echo $genre;
294 //echo $genreID;
295
296 $genre = "";
297 $genreID = "";
298 }
299
300 $g1 = "null";
301 $g2 = "null";
302 $g3 = "null";
303 $loop = 1;
304
305 foreach ($genArr as $key => $value) {
306 //echo "$key => $value";
307 $queryG = "CALL b_addBrowseNode($key,\"$value\")"; //add the name value pair for genre to new table
308 //echo $queryG;
309 include "../../private/db.php";
310 $resG = mysqli_query($link, $queryG);
311 mysqli_close($link);
312
313 switch ($loop) {
314 case 1:
315 $g1 = $key;
316 break;
317 case 2:
318 $g2 = $key;
319 break;
320 case 3:
321 $g3 = $key;
322 break;
323 }
324
325 $loop++;
326 }
327
328 if($salesRank == "")
329 $salesRank = "null";
330
331 $title = strtr($title, '"', "'");
332 include "../../private/db.php";
333 $review1 = mysqli_real_escape_string($link,$review1);
334 $review2 = mysqli_real_escape_string($link,$review2);
335 $review3 = mysqli_real_escape_string($link,$review3);
336
337 if($title != "")
338 {
339 $queryInsert = "CALL b_addNewBook(\"$searchparameterdata\",\"$title\", \"$author\",\"$binding\",\"$imageURL\", $dewey, $salesRank,\"$pubDate\",\"$publisher\",$g1,$g2,$g3,$loc)";
340 //echo $queryInsert;
341 $queryInsertReviews = "CALL b_insertReviews(\"$searchparameterdata\",\"$review1\",\"$review2\",\"$review3\")";
342
343 $resG = mysqli_query($link, $queryInsert) or exit( mysqli_error( $link ));
344 if($review1 != "" && $review2 != "" && $review3 != "")
345 $resG = mysqli_query($link, $queryInsertReviews) or exit( mysqli_error( $link ));
346 358
347 mysqli_close($link); //do not remove. reset is needed otherwise mysqli_fetch_array doesn't work after first loop 359 mysqli_close($link); //do not remove. reset is needed otherwise mysqli_fetch_array doesn't work after first loop
348 }
349
350 echo $output;
351 } 360 }
361
362 echo $output;
363 }
352 } 364 }
353 else 365 else
354 { 366 {
355 //look up info from db 367 //look up info from db
356 include "../../private/db.php"; 368 include "../../private/db.php";