Получить прямые ссылки видео с Vimeo в PHP
Я хочу прямую ссылку на видео с Vimeo с помощью скрипта PHP. Мне удалось найти их вручную, но мой PHP-скрипт не работает. Вот эта инициатива: Например я взял это видео:http://vimeo.com/22439234
Когда вы переходите на страницу, Vimeo генерирует подпись, связанную с текущей меткой времени и этим видео. Эта информация хранится в переменной JavaScript около строки 520 сразу после:
window.addEvent ('domready', function () {
Затем, когда вы нажимаете Play, проигрыватель HTML5 читает эту переменную и отправляет HTTP-запрос:
http:// player.vimeo.com/play_redirect?clip_id=37111719&sig={SIGNATURE}&time={TIMESTAMP}&quality=sd&codecs=H264,VP8,VP6&type=moogaloop_local&embed_location=
Но это также работает с:
http:// player.vimeo.com/play_redirect?clip_id=37111719&sig={SIGNATURE}&time={TIMESTAMP}&quality=sd
Если этот URL не открывается с IP-адресом, который открылсяhttp://vimeo.com/22439234это возвращает HTTP-код 200 с сообщением об ошибке.
Если этот URL открывается с правильным IP-адресом, заголовок & quot; Местоположение & quot; перенаправляет ссылку на видео файл:
http://av.vimeo.com/XXX/XX/XXXX.mp4?aksessionid=XXXX&token=XXXXX_XXXXXXXXX
Когда я строю эту ссылкуhttp://player.vimeo.com/play_redirect?...
вручную («щелкнуть правой кнопкой мыши», «gt;« исходный код »,« строка 520 ») это работает.
Но с PHP и регулярным выражением он возвращаетHTTP code 200
с сообщением об ошибке.
Зачем ?
Из моих наблюдений Vimeo не проверяет заголовки HTTP-запроса наhttp:// player.vimeo.com/play_redirect?...
GET
, HEAD
, с куки, без куки, реферера и т.д. ... не меняется.
С PHP я использую функциюfile_get_contents()
а такжеget_headers()
.
<?php
function getVimeo($id) {
$content = file_get_contents('http://vimeo.com/'.$id);
if (preg_match('#document\.getElementById\(\'player_(.+)\n#i', $content, $scriptBlock) == 0)
return 1;
preg_match('#"timestamp":([0-9]+)#i', $scriptBlock[1], $matches);
$timestamp = $matches[1];
preg_match('#"signature":"([a-z0-9]+)"#i', $scriptBlock[1], $matches);
$signature = $matches[1];
$url = 'http://player.vimeo.com/play_redirect?clip_id='.$id.'&sig='.$signature.'&time='.$timestamp.'&quality=sd';
print_r(get_headers($url, 1));
}