Tôi muốn có một liên kết trực tiếp tới các video từ Vimeo bằng một tập lệnh PHP. Tôi đã quản lý để tìm chúng theo cách thủ công, nhưng tập lệnh PHP của tôi không hoạt động. Đây là sáng kiến: Ví dụ: tôi đã quay video này: http://vimeo.com/22439234Nhận các video liên kết trực tiếp từ Vimeo bằng PHP
Khi bạn đi trên trang, Vimeo tạo chữ ký được liên kết với dấu thời gian hiện tại và video này. Thông tin này được lưu trữ trong một biến JavaScript, xung quanh dòng 520 chỉ sau: window.addEvent ('domready', function() {
Sau đó, khi bạn click Play, người chơi HTML5 đọc biến này và gửi một yêu cầu 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=
Nhưng nó cũng làm việc với:
http:// player.vimeo.com/play_redirect?clip_id=37111719&sig={SIGNATURE}&time={TIMESTAMP}&quality=sd
Nếu URL này không mở ra với địa chỉ IP mà mở http://vimeo.com/22439234, này trả về mã HTTP 200 với một thông báo lỗi.
Nếu URL này được mở ra với địa chỉ IP chính xác, tiêu đề "Vị trí" chuyển hướng đến liên kết đến tập tin video: http://av.vimeo.com/XXX/XX/XXXX.mp4?aksessionid=XXXX&token=XXXXX_XXXXXXXXX
Khi tôi xây dựng liên kết này http://player.vimeo.com/play_redirect?...
bằng tay ("click chuột phải"> "mã nguồn ">" dòng 520 ") nó hoạt động.
Nhưng với PHP và regex nó trả về HTTP code 200
với thông báo lỗi.
Tại sao?
Từ quan sát của tôi, Vimeo không kiểm tra các tiêu đề của yêu cầu HTTP cho http:// player.vimeo.com/play_redirect?...
GET
, HEAD
, với các tập tin cookie, mà không cần cookie, giới thiệu vv ... không thay đổi.
Với PHP, tôi sử dụng hàm file_get_contents()
và 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));
}
Không làm việc ở đây, tôi luôn luôn có 1 kết quả – Magico
Tôi có kết quả tương tự khi tôi kiểm tra mã. –