123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- <?php
- $query = $_GET['q'];
- $bookmark = null;
- if (array_key_exists("bookmark", $_GET)) {
- $bookmark = urldecode($_GET["bookmark"]);
- }
- $csrftoken = null;
- if (array_key_exists("csrftoken", $_GET)) {
- $csrftoken = $_GET["csrftoken"];
- }
- $url = "https://www.pinterest.com/resource/BaseSearchResource/get/";
- class SearchResult
- {
- public $images;
- public $bookmark;
- }
- $header_function = function($ch, $rawheader)
- {
- global $csrftoken;
- $len = strlen($rawheader);
- $header = explode(":", $rawheader, 2);
- if (count($header) != 2)
- return $len;
- // we are only interested in set-cookie header
- if (trim($header[0]) != "set-cookie")
- return $len;
- $cookie = explode(";", trim($header[1]), 2);
- $cookie = explode("=", $cookie[0], 2);
- switch ($cookie[0])
- {
- case "csrftoken":
- $csrftoken = $cookie[1];
- }
- return $len;
- };
- $prepare_search_curl_obj = function($query, $bookmark) use ($url, $header_function, $csrftoken)
- {
- $data_param_obj = array(
- "options"=>array(
- "query"=>$query
- )
- );
- if ($bookmark != null)
- $data_param_obj["options"]["bookmarks"] = array($bookmark);
- $data_param = urlencode(json_encode($data_param_obj));
- $headers = array();
- if ($csrftoken != null)
- {
- $headers[] = "x-csrftoken: $csrftoken";
- $headers[] = "cookie: csrftoken=$csrftoken";
- }
- $finalurl = $url;
- if ($bookmark == null)
- $finalurl = "$url?data=$data_param";
- $ch = curl_init($finalurl);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
- curl_setopt($ch, CURLOPT_HEADERFUNCTION, $header_function);
- curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
- if ($bookmark != null)
- {
- curl_setopt($ch, CURLOPT_POST, true);
- curl_setopt($ch, CURLOPT_POSTFIELDS, "data=$data_param");
- }
- return $ch;
- };
- $search = function($query, $bookmark) use($prepare_search_curl_obj)
- {
- $ch = $prepare_search_curl_obj($query, $bookmark);
- $response = curl_exec($ch);
- $data = json_decode($response);
- $images = array();
- foreach ($data->{"resource_response"}->{"data"}->{"results"} as $result)
- {
- $image = $result->{"images"}->{"orig"};
- $url = $image->{"url"};
- array_push($images, $url);
- }
- echo json_encode($images);
- $result = new SearchResult();
- $result->images = $images;
- if (property_exists($data->{"resource_response"}, "bookmark"))
- $result->bookmark = $data->{"resource_response"}->{"bookmark"};
- return $result;
- };
- $result = $search($query, $bookmark);
- if ($result->bookmark != null)
- {
- $query_encoded = urlencode($query);
- $bookmark_encoded = urlencode($result->bookmark);
- $csrftoken_encoded = urlencode($csrftoken);
- // echo "<h2 style=\"text-align: center;\"><a href=\"/search.php?q=$query_encoded&bookmark=$bookmark_encoded&csrftoken=$csrftoken_encoded\">Next page</a></h2><br><br><br>";
- }
- header("Content-Type: application/json");
- ?>
|