<?php
/**
* @author: saintx
**/
function _get_headers($url) {
$response = @get_headers($url);
if(!is_array($response))
return null;
$result = (object) array("body" => array(), "raw" => implode("\n", $response), "status" => null);
$_response_code = explode(" ", $response[0]);
$result->status = (object) array(
"to_original" => $response[0],
"to_code" => (int) $_response_code[1],
"to_string" => null
);
unset($_response_code[0]);
$result->status->to_string = implode(" ", $_response_code);
unset($response[0], $_response_code);
foreach(array_values($response) as $header) {
$header = explode(":", $header);
$result->body[strtolower(trim($header[0]))] = trim($header[1]);
}
unset($url, $response, $header);
ksort($result->body);
return $result;
}
function curl_get($url, $proxy = array(), $timeout = 30) {
$handle = curl_init();
curl_setopt($handle, CURLOPT_URL, $url);
curl_setopt($handle, CURLOPT_HEADER, false);
curl_setopt($handle, CURLOPT_NOBODY, false);
curl_setopt($handle, CURLOPT_BINARYTRANSFER, true);
curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
curl_setopt($handle, CURLOPT_CONNECTTIMEOUT, $timeout);
curl_setopt($handle, CURLOPT_TIMEOUT, $timeout);
if((!is_null($proxy) && !empty($proxy)) || is_object($proxy)) {
curl_setopt($handle, CURLOPT_HTTPPROXYTUNNEL, false);
curl_setopt($handle, CURLOPT_PROXY, sprintf('%s:%s', $proxy->host, $proxy->port));
}
curl_setopt($handle, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($handle, CURLOPT_VERBOSE, true);
$return_arr = array();
$return_arr['body'] = curl_exec($handle);
$return_arr['headers'] = curl_getinfo($handle);
$return_arr['error'] = (object) array('no' => curl_errno($handle), 'msg' => curl_error($handle));
curl_close($handle);
unset($handle, $params, $key, $value, $post_params, $timeout);
$return_arr = (object) $return_arr;
return $return_arr;
}
header("Content-Type: text/plain; charset=UTF-8");
$video_ID = (array_key_exists("url", $_GET)) ? $_GET["url"] : "LrUvu1mlWco";
$URL = "http://www.youtube.com/get_video_info?video_id=".$video_ID."&el=embeded&eurl=https%3A%2F%2Fs-static.ak.facebook.com%2Fcommon%2Freferer_frame.php&gcr=tr&hl=en_US&asv=3&sts=16031&width=398&height=291&autoplay=1";
$response = curl_get($URL, array(), 30)->body;
parse_str($response, $response);
if(array_key_exists("status", $response)) {
if($response["status"] == "ok") {
$response["adaptive_fmts"] = explode(",", $response["adaptive_fmts"]);
foreach($response["adaptive_fmts"] as $key => $value)
parse_str($response["adaptive_fmts"][$key], $response["adaptive_fmts"][$key]);
$response["url_encoded_fmt_stream_map"] = explode(",", $response["url_encoded_fmt_stream_map"]);
foreach($response["url_encoded_fmt_stream_map"] as $key => $value) {
parse_str($response["url_encoded_fmt_stream_map"][$key], $response["url_encoded_fmt_stream_map"][$key]);
if(array_key_exists("sig", $response["url_encoded_fmt_stream_map"][$key]))
$signature = $response["url_encoded_fmt_stream_map"][$key]["sig"];
else if(array_key_exists("s", $response["url_encoded_fmt_stream_map"][$key]))
$signature = $response["url_encoded_fmt_stream_map"][$key]["s"];
else
$signature = "";
$response["url_encoded_fmt_stream_map"][$key]["correct_url"] = sprintf("%s&signature=%s", $response["url_encoded_fmt_stream_map"][$key]["url"], $signature);
}
$response["rvs"] = explode(",", $response["rvs"]);
foreach($response["rvs"] as $key => $value) {
$response["rvs"][$key] = explode("&", $response["rvs"][$key]);
$rvs_part = array();
foreach($response["rvs"][$key] as $rvs_part_parts) {
$rvs_part_parts = explode("=", $rvs_part_parts);
$rvs_part[$rvs_part_parts[0]] = $rvs_part_parts[1];
}
$rvs_part["title"] = urldecode($rvs_part["title"]);
$response["rvs"][$key] = $rvs_part;
unset($rvs_part);
}
$response["fmt_list"] = explode(",", $response["fmt_list"]);
foreach($response["fmt_list"] as $key => $value)
$response["fmt_list"][$key] = explode("/", $response["fmt_list"][$key]);
$results = array();
foreach($response["url_encoded_fmt_stream_map"] as $fmt_stream)
$results[] = get_headers($fmt_stream["correct_url"]);
file_put_contents("results.json", json_encode(array($response, $results)));
print_r(array($response["url_encoded_fmt_stream_map"], $results));
} else {
#file_put_contents("results.json", json_encode(array($response)));
print_r(array($response, $results));
}
} else {
print_r($response);
}