Как доставать видео с VK?

Итак пользователь вводит ссылку типа
vk.com/videos100973593?z=video100973593_171060396%...
или
vk.com/video100973593_171060396

Окей, 100973593 и 171060396 я достану регуляркой. Но для вставки видео на сайт используется такой фрейм:

<Фрейм src="//vk.com/video_ext.php?oid=100973593&id=171060396&hash=9b5df0e7808146e2&hd=2" width="853" height="480" frameborder="0">фрейм>

Т.е. нужно как-то получить хеш :)
  • Вопрос задан
  • 17748 просмотров
Пригласить эксперта
Ответы на вопрос 2
Вот вам пример:

<? 
	$token = "Ваш access_token"; // access_token брал от сюда http://u.to/8nA8CA
	
	$video_id = "100973593_171060396";
	
	$videoGet = file_get_contents("https://api.vk.com/method/video.get?videos=".$video_id."&access_token=".$token);
	$json_video = json_decode($videoGet,1);
	
	Echo'<iframe src="'.$json_video["response"][1]["player"].'" width="853" height="480"  frameborder="0"></iframe>';
?>
Ответ написан
Комментировать
@alokazay
javascript
Только парсить sfw. Там есть прямая ссылка в разных разрешениях. Но контакт постоянно банит ип, домены.

Вот пример парсинга без токенов.
$link = 'oid=134218719&id=168399790&hash=f721a4d8be925b49&hd=2';
// Далее идет магия по извлечению прямой ссылки с вконтакта
$val = $link;

$valex = explode('&', $val);

$oidexp = explode('=', $valex[0]);

if (!isset ($oidexp[1])) return Response::json(array('success' => "false", "message" => "error oidexp"), 200);
$oid = $oidexp[1];

$idexp = explode('=', $valex[1]);
if (!isset($idexp[1])) return Response::json(array('success' => "false", "message" => "error  idexp"), 200);


$id = $idexp[1];

$hashexp = explode('=', $valex[2]);
$hash = $hashexp[1];

$nameexp = explode('=', $valex[3]);
$name = $nameexp[1];


$page_up = file_get_contents('http://vk.com/video_ext.php?oid=' . $oid . '&id=' . $id . '&hash=' . $hash . '&hd=1');
preg_match('<param name="flashvars" value="(.*)">', $page_up, $matches);


if (count($matches) < 1) return Response::json(array('success' => "false", "message" => "error  matches"), 200);

$buf = $matches[1];

$res = array();

foreach (explode('&amp;', $buf) as $tmp) {
    $tmp2 = explode('=', $tmp);
    $key = $tmp2[0];
    unset ($tmp2[0]);
    $res[$key] = implode('=', $tmp2);
}

echo '<pre>';
print_r($res);
echo '</pre>';
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы