forked from lolcat/4get
		
	added crowdview lol
This commit is contained in:
		@@ -24,6 +24,7 @@ https://4get.ca
 | 
			
		||||
	- Brave
 | 
			
		||||
	- Yandex
 | 
			
		||||
	- Google
 | 
			
		||||
	- Mwmbl
 | 
			
		||||
	- Mojeek
 | 
			
		||||
	- Marginalia
 | 
			
		||||
	- wiby
 | 
			
		||||
 
 | 
			
		||||
@@ -104,6 +104,7 @@ class config{
 | 
			
		||||
	const PROXY_PINTEREST = false;
 | 
			
		||||
	const PROXY_SEZNAM = false;
 | 
			
		||||
	const PROXY_NAVER = false;
 | 
			
		||||
	const PROXY_CROWDVIEW = false;
 | 
			
		||||
	const PROXY_MWMBL = false;
 | 
			
		||||
	const PROXY_FTM = false; // findthatmeme
 | 
			
		||||
	const PROXY_IMGUR = false;
 | 
			
		||||
 
 | 
			
		||||
@@ -902,6 +902,7 @@ class frontend{
 | 
			
		||||
						"yandex" => "Yandex",
 | 
			
		||||
						"google" => "Google",
 | 
			
		||||
						"yep" => "Yep",
 | 
			
		||||
						"crowdview" => "Crowdview",
 | 
			
		||||
						"mwmbl" => "Mwmbl",
 | 
			
		||||
						"mojeek" => "Mojeek",
 | 
			
		||||
						"marginalia" => "Marginalia",
 | 
			
		||||
@@ -1019,6 +1020,11 @@ class frontend{
 | 
			
		||||
				$lib = new facebook();
 | 
			
		||||
				break;*/
 | 
			
		||||
			
 | 
			
		||||
			case "crowdview":
 | 
			
		||||
				include "scraper/crowdview.php";
 | 
			
		||||
				$lib = new crowdview();
 | 
			
		||||
				break;
 | 
			
		||||
			
 | 
			
		||||
			case "mwmbl":
 | 
			
		||||
				include "scraper/mwmbl.php";
 | 
			
		||||
				$lib = new mwmbl();
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										145
									
								
								scraper/crowdview.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										145
									
								
								scraper/crowdview.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,145 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
class crowdview{
 | 
			
		||||
	
 | 
			
		||||
	public function __construct(){
 | 
			
		||||
		
 | 
			
		||||
		include "lib/backend.php";
 | 
			
		||||
		$this->backend = new backend("crowdview");
 | 
			
		||||
		
 | 
			
		||||
		include "lib/fuckhtml.php";
 | 
			
		||||
		$this->fuckhtml = new fuckhtml();
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	public function getfilters($page){
 | 
			
		||||
 | 
			
		||||
		return [];
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	private function get($proxy, $url, $get = []){
 | 
			
		||||
		
 | 
			
		||||
		$curlproc = curl_init();
 | 
			
		||||
		
 | 
			
		||||
		if($get !== []){
 | 
			
		||||
			$get = http_build_query($get);
 | 
			
		||||
			$url .= "?" . $get;
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		curl_setopt($curlproc, CURLOPT_URL, $url);
 | 
			
		||||
		
 | 
			
		||||
		curl_setopt($curlproc, CURLOPT_ENCODING, ""); // default encoding
 | 
			
		||||
		curl_setopt($curlproc, CURLOPT_HTTPHEADER,
 | 
			
		||||
			["User-Agent: " . config::USER_AGENT,
 | 
			
		||||
			"Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8",
 | 
			
		||||
			"Accept-Language: en-US,en;q=0.5",
 | 
			
		||||
			"Accept-Encoding: gzip",
 | 
			
		||||
			"DNT: 1",
 | 
			
		||||
			"Connection: keep-alive",
 | 
			
		||||
			"Upgrade-Insecure-Requests: 1",
 | 
			
		||||
			"Sec-Fetch-Dest: document",
 | 
			
		||||
			"Sec-Fetch-Mode: navigate",
 | 
			
		||||
			"Sec-Fetch-Site: none",
 | 
			
		||||
			"Sec-Fetch-User: ?1"]
 | 
			
		||||
		);
 | 
			
		||||
		
 | 
			
		||||
		curl_setopt($curlproc, CURLOPT_RETURNTRANSFER, true);
 | 
			
		||||
		curl_setopt($curlproc, CURLOPT_SSL_VERIFYHOST, 2);
 | 
			
		||||
		curl_setopt($curlproc, CURLOPT_SSL_VERIFYPEER, true);
 | 
			
		||||
		curl_setopt($curlproc, CURLOPT_CONNECTTIMEOUT, 30);
 | 
			
		||||
		curl_setopt($curlproc, CURLOPT_TIMEOUT, 30);
 | 
			
		||||
		
 | 
			
		||||
		$this->backend->assign_proxy($curlproc, $proxy);
 | 
			
		||||
		
 | 
			
		||||
		$data = curl_exec($curlproc);
 | 
			
		||||
		
 | 
			
		||||
		if(curl_errno($curlproc)){
 | 
			
		||||
			
 | 
			
		||||
			throw new Exception(curl_error($curlproc));
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		curl_close($curlproc);
 | 
			
		||||
		return $data;
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	public function web($get){
 | 
			
		||||
		
 | 
			
		||||
		$search = $get["s"];
 | 
			
		||||
		if(strlen($search) === 0){
 | 
			
		||||
			
 | 
			
		||||
			throw new Exception("Search term is empty!");
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		$proxy = $this->backend->get_ip();
 | 
			
		||||
		
 | 
			
		||||
		try{
 | 
			
		||||
			$json = $this->get(
 | 
			
		||||
				$proxy,
 | 
			
		||||
				"https://crowdview-next-js.onrender.com/api/search-v3",
 | 
			
		||||
				[
 | 
			
		||||
					"query" => $search
 | 
			
		||||
				]
 | 
			
		||||
			);
 | 
			
		||||
		}catch(Exception $error){
 | 
			
		||||
			
 | 
			
		||||
			throw new Exception("Failed to fetch JSON");
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		$out = [
 | 
			
		||||
			"status" => "ok",
 | 
			
		||||
			"spelling" => [
 | 
			
		||||
				"type" => "no_correction",
 | 
			
		||||
				"using" => null,
 | 
			
		||||
				"correction" => null
 | 
			
		||||
			],
 | 
			
		||||
			"npt" => null,
 | 
			
		||||
			"answer" => [],
 | 
			
		||||
			"web" => [],
 | 
			
		||||
			"image" => [],
 | 
			
		||||
			"video" => [],
 | 
			
		||||
			"news" => [],
 | 
			
		||||
			"related" => []
 | 
			
		||||
		];
 | 
			
		||||
		
 | 
			
		||||
		$json = json_decode($json, true);
 | 
			
		||||
		
 | 
			
		||||
		if($json === NULL){
 | 
			
		||||
			
 | 
			
		||||
			throw new Exception("Failed to decode JSON");
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		foreach($json["results"] as $item){
 | 
			
		||||
			
 | 
			
		||||
			$description = explode("<b>", $item["snippet"], 2);
 | 
			
		||||
			
 | 
			
		||||
			$out["web"][] = [
 | 
			
		||||
				"title" => $this->sanitize($item["title"]),
 | 
			
		||||
				"description" => $this->sanitize($description[1]),
 | 
			
		||||
				"url" => $item["link"],
 | 
			
		||||
				"date" => strtotime($description[0]),
 | 
			
		||||
				"type" => "web",
 | 
			
		||||
				"thumb" => [
 | 
			
		||||
					"url" => null,
 | 
			
		||||
					"ratio" => null
 | 
			
		||||
				],
 | 
			
		||||
				"sublink" => [],
 | 
			
		||||
				"table" => []
 | 
			
		||||
			];
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		return $out;
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	private function sanitize($html){
 | 
			
		||||
		
 | 
			
		||||
		return
 | 
			
		||||
			trim(
 | 
			
		||||
				$this->fuckhtml
 | 
			
		||||
				->getTextContent(
 | 
			
		||||
					html_entity_decode(
 | 
			
		||||
						$html
 | 
			
		||||
					)
 | 
			
		||||
				),
 | 
			
		||||
				". "
 | 
			
		||||
			);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
@@ -125,6 +125,10 @@ $settings = [
 | 
			
		||||
						"value" => "yep",
 | 
			
		||||
						"text" => "Yep"
 | 
			
		||||
					],
 | 
			
		||||
					[
 | 
			
		||||
						"value" => "crowdview",
 | 
			
		||||
						"text" => "Crowdview"
 | 
			
		||||
					],
 | 
			
		||||
					[
 | 
			
		||||
						"value" => "mwmbl",
 | 
			
		||||
						"text" => "Mwmbl"
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user