Holen Sie sich direkte Link-Videos von Vimeo in PHP

Ich möchte einen direkten Link zu Videos von Vimeo mit einem PHP-Skript. Ich habe sie manuell gefunden, aber mein PHP-Skript funktioniert nicht. Hier ist die Initiative: Zum Beispiel habe ich dieses Video aufgenommen:http://vimeo.com/22439234

Wenn Sie auf die Seite gehen, generiert Vimeo eine Signatur, die dem aktuellen Zeitstempel und diesem Video zugeordnet ist. Diese Informationen werden in einer JavaScript-Variablen um die Zeile 520 herum gespeichert, unmittelbar nach:window.addEvent ('domready', function () {

Wenn Sie dann auf "Abspielen" klicken, liest der HTML5-Player diese Variable und sendet eine HTTP-Anfrage:

http:// player.vimeo.com/play_redirect?clip_id=37111719&sig={SIGNATURE}&time={TIMESTAMP}&quality=sd&codecs=H264,VP8,VP6&type=moogaloop_local&embed_location=

Es funktioniert aber auch mit:

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

Wenn diese URL nicht mit der geöffneten IP-Adresse geöffnet wirdhttp://vimeo.com/22439234Gibt den HTTP-Code 200 mit einer Fehlermeldung zurück.

Wenn diese URL mit der richtigen IP-Adresse geöffnet wird, wird die Überschrift "Ort" weitergeleitet, um auf die Videodatei zu verlinken:http://av.vimeo.com/XXX/XX/XXXX.mp4?aksessionid=XXXX&token=XXXXX_XXXXXXXXX

Wenn ich diesen Link bauehttp://player.vimeo.com/play_redirect?... manuell ("Rechtsklick"> "Quellcode"> "Zeile 520") funktioniert es.

Aber mit PHP und Regex gibt es dieHTTP code 200 mit einer Fehlermeldung.

Warum ?

Nach meinen Beobachtungen überprüft Vimeo nicht die Header der HTTP-Anfrage nachhttp:// player.vimeo.com/play_redirect?... GET, HEAD, mit Cookies, ohne Cookies, Referrer etc. ... ändert sich nicht.

Mit PHP benutze ich die Funktionfile_get_contents() undget_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));
    }

Antworten auf die Frage(2)

Ihre Antwort auf die Frage