Новичок
Профиль
Группа: Участник
Сообщений: 35
Регистрация: 19.6.2009
Репутация: нет Всего: нет
|
собственно есть скрипт который (работал пока контакт не поменял структуру) вытаскивал прямую ссылку на видеофайл контакта и потоком передавал его в плеер, на его основе нужно сделать обычную передачу видео в плеер, тоесть выдирать никаких сслок не нужно: вот код скрипта: | Код | <?php set_time_limit(0); //+------------------------------+ //| relaying | //+------------------------------+
//===================================================================++ // Настройки, если Вы не уверены в том что делаете, лучше не меняйте!|| //===================================================================++
define("QUALITY", '360'); define("MESSAGE", 'Sorry video not found'); define("TIMEOUT", 10);
//#### Дальше ничего не менять без знаний PHP define("BLOCK", 8*1024);
if(isset($_GET['str'])) { //Обработка входящих данных if(preg_match('#^video((?:|-)\d+)_(\d+)(?:|_(\d+))$#', $_GET['str'], $match)) { $oid = $match[1]; $id = $match[2]; $quality = isset($match[3]) ? $match[3] : QUALITY; $startTime = isset($_GET['start']) ? '?start='.$_GET['start'] : ''; } else die(MESSAGE); } else die (MESSAGE);
//## Получаем данные со страницы $data = getData($oid, $id, MESSAGE, TIMEOUT);
//## Разбираем полученные данные //get host $start = strpos($data, 'st=')+3; $length = strpos($data, '&', $start)-$start; $host = substr($data, $start, $length);
//get uid $start = strpos($data, 'uid=')+4; $length = strpos($data, '&', $start)-$start; $uid = substr($data, $start, $length);
//get hash $start = strpos($data, 'vtag=')+5; $length = strpos($data, '&', $start)-$start; $hash = substr($data, $start, $length);
//fix for very old video $oldVideo = false; if(strpos($host, 'vkadre.ru')) { $oldVideo = true; $start = strpos($data, 'vkid=')+5; $length = strpos($data, '&', $start)-$start; $vkid = substr($data, $start, $length); } else { $highQuality = false; if(strpos($data, "video_max_hd = '0'")!==false) $quality = '240'; else { if(strpos($data, "video_max_hd = '1'")!==false) $maxQ = '360'; else if(strpos($data, "video_max_hd = '2'")!==false) $maxQ = '480'; else if(strpos($data, "video_max_hd = '3'")!==false) $maxQ = '720'; if($maxQ<$quality) $quality = $maxQ; $highQuality = true; }
$ext = '.mp4'; if(strpos($data, 'video_no_flv = 0')!==false) { if(!$highQuality || $quality=='240') { $quality = ''; $ext = 'flv'; } } }
if($oldVideo) { $link = 'http://'.$host.'/assets/videos/'.$hash.$vkid.'.vk.flv'; $startTime = ''; } else $link = $host.'u'.$uid.'/video/'.$hash.'.'.$quality.$ext;
$link .= $startTime; $header = get_headers($link, 0);
$fp = @fopen($link, "rb") or die (MESSAGE); if(isset($header)) foreach($header as $v) header($v); while(!feof($fp)) echo fread($fp, BLOCK); fclose($fp);
function getData($oid, $id, $message="Video not found", $timeout=30) { $url = 'http://vkontakte.ru/video.php?act=a_embedbox&oid='. $oid .'&vid='. $id; $ch = curl_init($url) ; curl_setopt($ch, CURLOPT_RETURNTRANSFER, true) ; curl_setopt($ch,CURLOPT_TIMEOUT, $timeout); $data = curl_exec($ch);
$start = strpos($data, 'hash=')+5; $length = strpos($data, '\\', $start)-$start; $hash = substr($data, $start, $length);
$url = 'http://vkontakte.ru/video_ext.php?oid='.$oid.'&id='.$id.'&hash='.$hash; curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true) ; curl_setopt($ch,CURLOPT_TIMEOUT, $timeout); $data = curl_exec($ch); curl_close($ch); if(strpos($data, 'не найден')!==false || strpos($data, 'видео изъято')!==false) die($message);
return $data; } ?>
|
пытался сделать сам, но у меня ничео не работает, может подскажыте где ошибся? вот мой код: | Код | <?php define("QUALITY", '360'); define("MESSAGE", 'Sorry video not found'); define("TIMEOUT", 10);
//echo $_GET['stat']; $link. = $_GET['stat']; $header = get_headers($link, 0);
$fp = @fopen($link, "rb") or die (MESSAGE); if(isset($header)) foreach($header as $v) header($v); while(!feof($fp)) echo fread($fp, BLOCK); fclose($fp); echo $fp;
?>
|
|