PHP スクリプトを使用して、Vimeo の動画への直接リンクが必要です。手動で見つけることはできましたが、PHP スクリプトが機能しません。これがイニシアチブです: たとえば、私はこのビデオを撮りました: http://vimeo.com/22439234
ページに移動すると、Vimeo は現在のタイムスタンプとこの動画に関連付けられた署名を生成します。この情報は、520 行目の直後の JavaScript 変数に格納されます。
window.addEvent ('domready', function () {
[再生] をクリックすると、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
http://vimeo.com/22439234を開いた IP アドレスでこの URL が開かない場合、エラー メッセージとともに HTTP コード 200 が返されます。
この URL が正しい IP アドレスで開かれると、ヘッダーの "Location" がビデオ ファイルへのリンクにリダイレクトされます。
http://av.vimeo.com/XXX/XX/XXXX.mp4?aksessionid=XXXX&token=XXXXX_XXXXXXXXX
このリンクhttp://player.vimeo.com/play_redirect?...
を手動で作成すると (「右クリック」>「ソース コード」>「520 行目」)、機能します。
しかし、PHP と正規表現を使用するHTTP code 200
と、エラー メッセージとともに が返されます。
なんで ?
私の観察によると、Vimeo は 、 、Cookie あり、Cookie なし、リファラーなどの HTTP リクエストのヘッダーをチェックしhttp:// player.vimeo.com/play_redirect?...
GET
ませHEAD
ん。 ... は変わりません。
PHP では、関数file_get_contents()
andを使用します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));
}