Obtenha vídeos de links diretos do Vimeo em PHP

Eu quero um link direto para vídeos do Vimeo com um script PHP. Eu consegui encontrá-los manualmente, mas meu script PHP não funciona. Aqui está a iniciativa: Por exemplo eu peguei este vídeo:http://vimeo.com/22439234

Quando você vai na página, o Vimeo gera uma assinatura associada ao timestamp atual e a este vídeo. Esta informação é armazenada em uma variável JavaScript, em torno da linha 520 logo após:window.addEvent ('domready', function () {

Então, quando você clica em Reproduzir, o player HTML5 lê essa variável e envia uma solicitação 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=

Mas também funciona com:

http:// player.vimeo.com/play_redirect?clip_id=37111719&sig={SIGNATURE}&time={TIMESTAMP}&quality=sd

Se este URL não abrir com o endereço IP abertohttp://vimeo.com/22439234, isso retorna o código HTTP 200 com uma mensagem de erro.

Se esse URL for aberto com o endereço IP correto, o cabeçalho "Local" redirecionará para o link para o arquivo de vídeo:http://av.vimeo.com/XXX/XX/XXXX.mp4?aksessionid=XXXX&token=XXXXX_XXXXXXXXX

Quando eu construir esse linkhttp://player.vimeo.com/play_redirect?... manualmente ("clique direito"> "código de fonte"> "linha 520") trabalha.

Mas com PHP e regex retorna oHTTP code 200 com uma mensagem de erro.

Por quê ?

De minhas observações, o Vimeo não verifica os cabeçalhos da solicitação HTTP parahttp:// player.vimeo.com/play_redirect?... GET, HEAD, com cookies, sem cookies, referenciador, etc ... não muda.

Com PHP, eu uso a funçãofile_get_contents() eget_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));
    }

questionAnswers(2)

yourAnswerToTheQuestion