Răsfoiți Sursa

handle imgur ip block

lolcat 1 an în urmă
părinte
comite
8d50667b0d
1 a modificat fișierele cu 25 adăugiri și 1 ștergeri
  1. 25 1
      scraper/imgur.php

+ 25 - 1
scraper/imgur.php

@@ -182,6 +182,23 @@ class imgur{
 			throw new Exception("Failed to fetch HTML");
 		}
 		
+		$json = json_decode($html, true);
+		
+		if($json){
+			
+			// {"data":{"error":"Imgur is temporarily over capacity. Please try again later."},"success":false,"status":403}
+			
+			if(isset($json["data"]["error"])){
+				
+				if(stripos($json["data"]["error"], "capacity")){
+					
+					throw new Exception("Imgur IP blocked this 4get instance or request proxy. Try again");
+				}
+			}
+			
+			throw new Exception("Imgur returned an unknown error (IP ban?)");
+		}
+		
 		$this->fuckhtml->load($html);
 		
 		$posts =
@@ -197,7 +214,14 @@ class imgur{
 			
 			$image =
 				$this->fuckhtml
-				->getElementsByTagName("img")[0];
+				->getElementsByTagName("img");
+			
+			if(count($image) === 0){
+				
+				continue;
+			}
+			
+			$image = $image[0];
 			
 			$image_url = "https:" . substr($this->fuckhtml->getTextContent($image["attributes"]["src"]), 0, -5);