class gallery
{
function gallery($link)
{
$this->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;
}
}
?>