gallery = $link; $this->link = str_replace(" ", "%20", $link); $this->page = ""; $this->code = 0; } function open() { $this->page = ""; $link = $this->link; $link_info = parse_url($link); $host = $link_info["host"]; @$fp = fsockopen($host, $link_info["port"] ? $link_info["port"] : 80, &$errno, &$errstr); $header = array (); $path = substr($link, strlen("http://" . $host)); if ($fp) { $request = "GET " . str_replace(" ", "%20", $path) . " HTTP/1.0\r\n"; $request .= "Host: " . $host . "\r\n"; $request .= "Referer: http://" . $host . "/\r\n"; $request .= "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322)\r\n"; $request .= "\r\n"; fwrite($fp, $request); while (!feof($fp)) { $string = fgets($fp, 1024); if (!trim($string)) break; $header[] = $string; } $header = join("", $header); if (preg_match("/http\/\d\.\d\s+200\s/i", $header)) { while (!feof($fp)) $this->page .= fgets($fp, 1024); fclose($fp); $result = true; $this->code = 200; } else { fclose($fp); if (preg_match("/http\/\d\.\d\s+(30\d)\s/i", $header, $code)) { $pos = strpos($link, "?"); if ($pos !== false) $base_link = substr($this->link, 0, $pos); if (substr($base_link, -1) == "/") $base_link = substr($base_link, 0, -1); else $base_link = dirname($base_link); preg_match("/Location: ([\s\S]+)\r*\n/iU", $header, $array); $link = $this->_get_full_url($base_link, trim($array[1])); $new_host = parse_url($link); //echo "NEW!!!"; //echo "
" . $new_host["host"] . "
"; $new_host = $new_host["host"]; if (strtolower($new_host) == strtolower($host)) { $this->link = trim($array[1]); $result = $this->open(); } else { $this->link = $link; $result = $this->open(); // $this->code = intval($code[1]); // $result = false; } } else { preg_match("/http\/\d\.\d\s+(\d+)\s/i", $header, $array); $this->code = intval($array[1]); $result = false; } } return $result; } else { $this->code = 400; return false; } } function get_content() { $image_files = preg_split("/\s+/", "jpeg jpg"); $movie_files = preg_split("/\s+/", "mpeg mpg avi wmv"); $content_array = array (); $thumbs_array = array (); $page = $this->page; $link = $this->link; $pos = strpos($link, "?"); if ($pos !== FALSE) $link = substr($link, 0, $pos); if (substr($link, -1) == "/") $base_link = substr($link, 0, -1); else $base_link = dirname($link); if ($count = preg_match_all("/(]+>)/i", $page, $array)) { for ($j = 0; $j < $count; $j++) { $base_link = $array[1][$j]; if (preg_match("/href\s*=\s*[\'\"]?([^>\'\"]+)/i", $base_link, $_array)) { $base_link = $_array[1]; if (substr($base_link, -1) == "/") $base_link = substr($base_link, 0, -1); break; } } } $page = preg_replace("/\s+/", " ", $page); $page = preg_replace("//iU", " ", $page); $page = preg_replace("/]+>)([\s\S]+)(?=<\/a|\$|\'\"]+)/i", $url, $_url); $url = $_url[1]; $c_url = parse_url($url); $c_url = $c_url["path"]; $item = $data[2][$j]; if (preg_match("/\'\"]+)/i", $item, $thumb_url); $thumb_url = $thumb_url[1]; } else { if (preg_match("/\.(" . join("|", $image_files) . ")\$/i", $url)) { $_item = preg_quote(trim($item)); $_item = preg_replace("/[\\\.]+&\w+;\$/", "([\s\S]*)", $_item); if (preg_match("/" . str_replace("/", "\\/", $_item) . "\$/", $url) || preg_match("/" . str_replace("/", "\\/", $_item) . "\$/", rawurldecode($url))) { $content = 1; $type = "pictures"; $thumb_url = ""; } } } if ($content) { $content_url = $this->_get_full_url($base_link, $url); $content_array[] = $content_url; $types_array[] = $type; $thumbs_array[] = $this->_get_full_url($base_link, $thumb_url); } } } $content = array ( "images" => array (), "clips" => array () ); foreach ($content_array as $key => $entry) { if ($types_array[$key] == "pictures") $content["images"][] = $entry; else $content["clips"][] = $entry; $content["thumbs"][] = $thumbs_array[$key]; } return $content; } function _get_full_url($base_url, $url) { if (!$url) return ""; if (substr($url, 0, 7) == "http://") return $url; if (substr($url, 0, 1) == "/") { $_url = parse_url($base_url); return "http://" . $_url["host"] . $url; } if (substr($url, 0, 3) == "../") { while (substr($url, 0, 3) == "../") { $base_url = dirname($base_url); $url = substr($url, 3); } return $base_url . "/" . $url; } elseif (substr($url, 0, 2) == "./") return $base_url . "/" . substr($url, 2); else return $base_url . "/" . $url; } function download($link, $filename) { echo "link: " . $link . "
"; echo "filename: " . $filename . "
"; $link_info = parse_url($link); $host = $link_info["host"]; @$fp = fsockopen($host, $link_info["port"] ? $link_info["port"] : 80, &$errno, &$errstr, 5); echo "
host: " . $host . "
"; if ($fp) { $request = "GET " . str_replace(" ", "%20", $link) . " HTTP/1.0\r\n"; $request .= "Host: " . $host . "\r\n"; $request .= "Referer: http://" . $host . "/\r\n"; $request .= "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322)\r\n"; $request .= "Accept-Encoding: gzip, deflate\r\n"; $request .= "Accept-Language: ru\r\n"; $request .= "Accept: */*\r\n"; $request .= "Connection-Type: Keep-Alive\r\n"; $request .= "\r\n"; fwrite($fp, $request); $header = ""; while (!feof($fp)) { $string = fgets($fp, 1024); if (preg_match("/^\s*$/", $string)) break; $header .= $string; } echo "
header: " . $header . "
"; if (preg_match("/http\/\d\.\d\s+200\s/i", $header)) { echo "begin"; if ($file = fopen($filename, "w")) { while (!feof($fp)) fwrite($file, fread($fp, 10 * 1024)); fclose($file); fclose($fp); @chmod($filename, 0666); echo "Cool"; return true; } else { echo "not_cool"; fclose($fp); return false; } echo "end"; } else { echo "not preg match"; } fclose($fp); } echo "FALSE"; return false; } } ?>