fixed bing images failing to load, added flickr
This commit is contained in:
		
							parent
							
								
									3e2c3fc5d9
								
							
						
					
					
						commit
						ff8b1addf7
					
				| @ -939,6 +939,7 @@ class frontend{ | |||||||
| 						"brave" => "Brave", | 						"brave" => "Brave", | ||||||
| 						"yandex" => "Yandex", | 						"yandex" => "Yandex", | ||||||
| 						"google" => "Google", | 						"google" => "Google", | ||||||
|  | 						//"google_api" => "Google API",
 | ||||||
| 						"google_cse" => "Google CSE", | 						"google_cse" => "Google CSE", | ||||||
| 						"startpage" => "Startpage", | 						"startpage" => "Startpage", | ||||||
| 						"qwant" => "Qwant", | 						"qwant" => "Qwant", | ||||||
| @ -970,10 +971,12 @@ class frontend{ | |||||||
| 						"yep" => "Yep", | 						"yep" => "Yep", | ||||||
| 						"solofield" => "Solofield", | 						"solofield" => "Solofield", | ||||||
| 						"pinterest" => "Pinterest", | 						"pinterest" => "Pinterest", | ||||||
|  | 						"flickr" => "Flickr", | ||||||
| 						"fivehpx" => "500px", | 						"fivehpx" => "500px", | ||||||
| 						"vsco" => "VSCO", | 						"vsco" => "VSCO", | ||||||
| 						"imgur" => "Imgur", | 						"imgur" => "Imgur", | ||||||
| 						"ftm" => "FindThatMeme" | 						"ftm" => "FindThatMeme", | ||||||
|  | 						//"sankakucomplex" => "SankakuComplex"
 | ||||||
| 					] | 					] | ||||||
| 				]; | 				]; | ||||||
| 				break; | 				break; | ||||||
|  | |||||||
							
								
								
									
										58
									
								
								proxy.php
									
									
									
									
									
								
							
							
						
						
									
										58
									
								
								proxy.php
									
									
									
									
									
								
							| @ -34,36 +34,62 @@ try{ | |||||||
| 		) | 		) | ||||||
| 	){ | 	){ | ||||||
| 		 | 		 | ||||||
| 		if( | 		if(!isset($image["path"])){ | ||||||
| 			!isset($image["query"]) || |  | ||||||
| 			!isset($image["path"]) || |  | ||||||
| 			$image["path"] != "/th" |  | ||||||
| 		){ |  | ||||||
| 			 | 			 | ||||||
| 			header("X-Error: Invalid bing image path"); | 			header("X-Error: Missing bing image path"); | ||||||
| 			$proxy->do404(); | 			$proxy->do404(); | ||||||
| 			die(); | 			die(); | ||||||
| 		} | 		} | ||||||
| 		 | 		 | ||||||
| 		parse_str($image["query"], $str); | 		//
 | ||||||
| 		 | 		// get image ID
 | ||||||
| 		if(!isset($str["id"])){ | 		// formations:
 | ||||||
|  | 		// https://tse2.mm.bing.net/th/id/OIP.3yLBkUPn8EXA1wlhWP2BHwHaE3
 | ||||||
|  | 		// https://tse2.mm.bing.net/th?id=OIP.3yLBkUPn8EXA1wlhWP2BHwHaE3
 | ||||||
|  | 		//
 | ||||||
|  | 		$id = null; | ||||||
|  | 		if(isset($image["query"])){ | ||||||
| 			 | 			 | ||||||
| 			header("X-Error: Missing bing ID"); | 			parse_str($image["query"], $str); | ||||||
|  | 			 | ||||||
|  | 			if(isset($str["id"])){ | ||||||
|  | 				 | ||||||
|  | 				$id = $str["id"]; | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 		 | ||||||
|  | 		if($id === null){ | ||||||
|  | 			 | ||||||
|  | 			// fallback to getting ID from path
 | ||||||
|  | 			$id = explode("/", $image["path"]); | ||||||
|  | 		 | ||||||
|  | 			for($i=count($id) - 1; $i>0; $i--){ | ||||||
|  | 				 | ||||||
|  | 				if(trim($id[$i]) != ""){ | ||||||
|  | 					 | ||||||
|  | 					$id = $id[$i]; | ||||||
|  | 					break; | ||||||
|  | 				} | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 		 | ||||||
|  | 		if(is_array($id)){ | ||||||
|  | 			 | ||||||
|  | 			header("X-Error: Missing bing id parameter"); | ||||||
| 			$proxy->do404(); | 			$proxy->do404(); | ||||||
| 			die(); | 			die(); | ||||||
| 		} | 		} | ||||||
| 			 | 			 | ||||||
| 		switch($_GET["s"]){ | 		switch($_GET["s"]){ | ||||||
| 			 | 			 | ||||||
| 			case "portrait": $req = "&w=50&h=90&p=0&qlt=90"; break; | 			case "portrait": $req = "?w=50&h=90&p=0&qlt=90"; break; | ||||||
| 			case "landscape": $req = "&w=160&h=90&p=0&qlt=90"; break; | 			case "landscape": $req = "?w=160&h=90&p=0&qlt=90"; break; | ||||||
| 			case "square": $req = "&w=90&h=90&p=0&qlt=90"; break; | 			case "square": $req = "?w=90&h=90&p=0&qlt=90"; break; | ||||||
| 			case "thumb": $req = "&w=236&h=180&p=0&qlt=90"; break; | 			case "thumb": $req = "?w=236&h=180&p=0&qlt=90"; break; | ||||||
| 			case "cover": $req = "&w=207&h=270&p=0&qlt=90"; break; | 			case "cover": $req = "?w=207&h=270&p=0&qlt=90"; break; | ||||||
| 		} | 		} | ||||||
| 		 | 		 | ||||||
| 		$proxy->stream_linear_image("https://" . $image["host"] . "/th?id=" . urlencode($str["id"]) . $req, "https://www.bing.com"); | 		$proxy->stream_linear_image("https://" . $image["host"] . "/th/id/" . urlencode($id) . $req, "https://www.bing.com"); | ||||||
| 		die(); | 		die(); | ||||||
| 	} | 	} | ||||||
| 	 | 	 | ||||||
|  | |||||||
| @ -1943,10 +1943,41 @@ class ddg{ | |||||||
| 	 | 	 | ||||||
| 	private function bingimg($url){ | 	private function bingimg($url){ | ||||||
| 		 | 		 | ||||||
| 		$parse = parse_url($url); | 		$image = parse_url($url); | ||||||
| 		parse_str($parse["query"], $parts); |  | ||||||
| 		 | 		 | ||||||
| 		return "https://" . $parse["host"] . "/th?id=" . urlencode($parts["id"]); | 		$id = null; | ||||||
|  | 		if(isset($image["query"])){ | ||||||
|  | 			 | ||||||
|  | 			parse_str($image["query"], $str); | ||||||
|  | 			 | ||||||
|  | 			if(isset($str["id"])){ | ||||||
|  | 				 | ||||||
|  | 				$id = $str["id"]; | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 		 | ||||||
|  | 		if($id === null){ | ||||||
|  | 			 | ||||||
|  | 			// fallback to getting ID from path
 | ||||||
|  | 			$id = explode("/", $image["path"]); | ||||||
|  | 		 | ||||||
|  | 			for($i=count($id) - 1; $i>0; $i--){ | ||||||
|  | 				 | ||||||
|  | 				if(trim($id[$i]) != ""){ | ||||||
|  | 					 | ||||||
|  | 					$id = $id[$i]; | ||||||
|  | 					break; | ||||||
|  | 				} | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 		 | ||||||
|  | 		if(is_array($id)){ | ||||||
|  | 			 | ||||||
|  | 			// fuck off, let proxy.php deal with it
 | ||||||
|  | 			return $url; | ||||||
|  | 		} | ||||||
|  | 		 | ||||||
|  | 		return "https://" . $image["host"] . "/th/id/" . $id; | ||||||
| 	} | 	} | ||||||
| 	 | 	 | ||||||
| 	private function bingratio($width, $height){ | 	private function bingratio($width, $height){ | ||||||
|  | |||||||
| @ -410,10 +410,7 @@ class qwant{ | |||||||
| 					"thumb" => | 					"thumb" => | ||||||
| 						$answer["data"]["result"]["thumbnail"]["landscape"] == null ? | 						$answer["data"]["result"]["thumbnail"]["landscape"] == null ? | ||||||
| 						null : | 						null : | ||||||
| 						$this->unshitimage( | 						$this->unshitimage($answer["data"]["result"]["thumbnail"]["landscape"]), | ||||||
| 							$answer["data"]["result"]["thumbnail"]["landscape"], |  | ||||||
| 							false |  | ||||||
| 						), |  | ||||||
| 					"table" => [], | 					"table" => [], | ||||||
| 					"sublink" => [] | 					"sublink" => [] | ||||||
| 				]; | 				]; | ||||||
| @ -770,7 +767,7 @@ class qwant{ | |||||||
| 			}else{ | 			}else{ | ||||||
| 				 | 				 | ||||||
| 				$thumb = [ | 				$thumb = [ | ||||||
| 					"url" => $this->unshitimage($video["thumbnail"], false), | 					"url" => $this->unshitimage($video["thumbnail"]), | ||||||
| 					"ratio" => "16:9" | 					"ratio" => "16:9" | ||||||
| 				]; | 				]; | ||||||
| 			} | 			} | ||||||
| @ -870,7 +867,7 @@ class qwant{ | |||||||
| 			}else{ | 			}else{ | ||||||
| 				 | 				 | ||||||
| 				$thumb = [ | 				$thumb = [ | ||||||
| 					"url" => $this->unshitimage($news["media"][0]["pict_big"]["url"], false), | 					"url" => $this->unshitimage($news["media"][0]["pict_big"]["url"]), | ||||||
| 					"ratio" => "16:9" | 					"ratio" => "16:9" | ||||||
| 				]; | 				]; | ||||||
| 			} | 			} | ||||||
| @ -920,18 +917,79 @@ class qwant{ | |||||||
| 		return trim($text, ". "); | 		return trim($text, ". "); | ||||||
| 	} | 	} | ||||||
| 	 | 	 | ||||||
| 	private function unshitimage($url, $is_bing = true){ | 	private function unshitimage($url){ | ||||||
| 		 | 		 | ||||||
| 		// https://s1.qwant.com/thumbr/0x0/8/d/f6de4deb2c2b12f55d8bdcaae576f9f62fd58a05ec0feeac117b354d1bf5c2/th.jpg?u=https%3A%2F%2Fwww.bing.com%2Fth%3Fid%3DOIP.vvDWsagzxjoKKP_rOqhwrQAAAA%26w%3D160%26h%3D160%26c%3D7%26pid%3D5.1&q=0&b=1&p=0&a=0
 | 		// https://s1.qwant.com/thumbr/0x0/8/d/f6de4deb2c2b12f55d8bdcaae576f9f62fd58a05ec0feeac117b354d1bf5c2/th.jpg?u=https%3A%2F%2Fwww.bing.com%2Fth%3Fid%3DOIP.vvDWsagzxjoKKP_rOqhwrQAAAA%26w%3D160%26h%3D160%26c%3D7%26pid%3D5.1&q=0&b=1&p=0&a=0
 | ||||||
| 		parse_str(parse_url($url)["query"], $parts); | 		// https://s2.qwant.com/thumbr/474x289/7/f/412d13b3fe3a03eb2b89633c8e88b609b7d0b93cdd9a5e52db3c663e41e65e/th.jpg?u=https%3A%2F%2Ftse.mm.bing.net%2Fth%3Fid%3DOIP.9Tm_Eo6m7V7ltN19mxduDgHaEh%26pid%3DApi&q=0&b=1&p=0&a=0
 | ||||||
| 		 | 		 | ||||||
| 		if($is_bing){ | 		$image = parse_url($url); | ||||||
| 			$parse = parse_url($parts["u"]); | 		 | ||||||
| 			parse_str($parse["query"], $parts); | 		if( | ||||||
|  | 			!isset($image["host"]) || | ||||||
|  | 			!isset($image["query"]) | ||||||
|  | 		){ | ||||||
| 			 | 			 | ||||||
| 			return "https://" . $parse["host"] . "/th?id=" . urlencode($parts["id"]); | 			// cant do anything
 | ||||||
|  | 			return $url; | ||||||
| 		} | 		} | ||||||
| 		 | 		 | ||||||
| 		return $parts["u"]; | 		$id = null; | ||||||
|  | 		 | ||||||
|  | 		if( | ||||||
|  | 			preg_match( | ||||||
|  | 				'/s[0-9]+\.qwant\.com$/', | ||||||
|  | 				$image["host"] | ||||||
|  | 			) | ||||||
|  | 		){ | ||||||
|  | 			 | ||||||
|  | 			parse_str($image["query"], $str); | ||||||
|  | 			 | ||||||
|  | 			// we're being served a proxy URL
 | ||||||
|  | 			if(isset($str["u"])){ | ||||||
|  | 				 | ||||||
|  | 				$bing_url = $str["u"]; | ||||||
|  | 			}else{ | ||||||
|  | 				 | ||||||
|  | 				// give up
 | ||||||
|  | 				return $url; | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 		 | ||||||
|  | 		// parse bing URL
 | ||||||
|  | 		$id = null; | ||||||
|  | 		$image = parse_url($bing_url); | ||||||
|  | 		 | ||||||
|  | 		if(isset($image["query"])){ | ||||||
|  | 			 | ||||||
|  | 			parse_str($image["query"], $str); | ||||||
|  | 			 | ||||||
|  | 			if(isset($str["id"])){ | ||||||
|  | 				 | ||||||
|  | 				$id = $str["id"]; | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 		 | ||||||
|  | 		if($id === null){ | ||||||
|  | 			 | ||||||
|  | 			// fallback to getting ID from path
 | ||||||
|  | 			$id = explode("/", $image["path"]); | ||||||
|  | 		 | ||||||
|  | 			for($i=count($id) - 1; $i>0; $i--){ | ||||||
|  | 				 | ||||||
|  | 				if(trim($id[$i]) != ""){ | ||||||
|  | 					 | ||||||
|  | 					$id = $id[$i]; | ||||||
|  | 					break; | ||||||
|  | 				} | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 		 | ||||||
|  | 		if(is_array($id)){ | ||||||
|  | 			 | ||||||
|  | 			// fuck off, let proxy.php deal with it
 | ||||||
|  | 			return $url; | ||||||
|  | 		} | ||||||
|  | 		 | ||||||
|  | 		return "https://" . $image["host"] . "/th/id/" . $id; | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 lolcat
						lolcat