2011-12-28 42 views
6

tôi đang cố gắng để có được URL của video của bất kỳ video YouTube như thế này:Sử dụng get_video trên YouTube để tải về một đoạn video

mở

http://youtube.com/get_video_info?video_id=VIDEOID 

sau đó lấy giá trị thẻ account_playback_token và mở URL này:

http://www.youtube.com/get_video?video_id=VIDEOID&t=TOKEN&fmt=18&asv=2 

Điều này sẽ mở một trang chỉ với video hoặc bắt đầu tải xuống video. Nhưng không có gì xảy ra, cửa sổ hoạt động của Safari nói 'Không tìm thấy', vì vậy có gì đó sai với URL. Tôi muốn tích hợp ứng dụng này vào iPad và phương pháp javascript để nhận URL video mà tôi sử dụng trong phiên bản ứng dụng của iPhone không hoạt động, vì vậy tôi cần một giải pháp khác.

YouTube luôn thay đổi và tôi cho rằng URL chỉ lỗi thời. Xin hãy giúp :)

Chỉnh sửa: Dường như phương thức get_video không hoạt động nữa. Tôi thực sự đánh giá cao nếu có ai có thể cho tôi biết một cách khác để tìm URL video.

Cảm ơn bạn, tôi thực sự cần trợ giúp.

Trả lời

9

Rất tiếc, điều đó không thể thực hiện được nữa. Họ giới hạn mã thông báo cho IP nhận được.

Đây là giải pháp thay thế bằng cách sử dụng chức năng get_headers(), cung cấp cho bạn một mảng có liên kết tới video. Tôi không biết bất cứ điều gì về ios, vì vậy hy vọng bạn có thể tự viết lại mã PHP này.

<?php 
if(empty($_GET['id'])) { 
    echo "No id found!"; 
} 

else { 

    function url_exists($url) { 
     if(file_get_contents($url, FALSE, NULL, 0, 0) === false) return false; 
     return true; 
    } 

    $id = $_GET['id']; 

    $page = @file_get_contents('http://www.youtube.com/get_video_info?&video_id='.$id); 

    preg_match('/token=(.*?)&thumbnail_url=/', $page, $token); 

    $token = urldecode($token[1]); 

    $get = $title->video_details; 

    $url_array = array ("http://youtube.com/get_video?video_id=".$id."&t=".$token, 
    "http://youtube.com/get_video?video_id=".$id."&t=".$token."&fmt=18"); 

    if(url_exists($url_array[1]) === true) { 
     $file = get_headers($url_array[1]); 
    } 

    elseif(url_exists($url_array[0]) === true) { 
     $file = get_headers($url_array[0]); 
    } 

    $url = trim($file[19],"Location: "); 

    echo '<a href="'.$url.'">Download video</a>'; 
} 
?> 
+0

Nhưng bạn đang sử dụng GET_URL quá? Và get_headers() là gì, nó là một phần của url hoặc hàm? Bạn có thể giải thích mã của bạn bằng lời không? Tôi thực sự muốn cung cấp cho bạn tiền thưởng, tôi chỉ cần trợ giúp thêm một chút. Cảm ơn bạn – JonasG

+0

Xin vui lòng giúp đỡ !!! Tôi cần phải biết điều này! – JonasG

+0

Tôi hust nhìn nó một lần nữa và sau đó tôi hoàn toàn có nó: D nhưng tại sao nó không cung cấp liên kết đến tất cả các định dạng trong mọi độ phân giải (trong 720p nó cho mp4 và x-flv, trong 480p nó cho các liên kết cho flv và x -flv ...) Có cách nào để nhận các liên kết cho video mp4 ở tất cả các độ phân giải không? cảm ơn – JonasG

3

tôi sử dụng này và nó đá: http://rg3.github.com/youtube-dl/

Chỉ cần sao chép một URL YouTube từ trình duyệt của bạn và thực hiện lệnh này với URL YouTube như là đối số duy nhất. Nó sẽ tìm ra cách để tìm video chất lượng tốt nhất và tải xuống cho bạn.

1

Tuyệt vời! Tôi cần một cách để lấy toàn bộ danh sách phát của video.

Trong Linux, đây là những gì tôi đã sử dụng:

y = http://www.youtube.com; f = "http://gdata.youtube.com/feeds/api/playlists/PLeHqhPDNAZY_3377_DpzRSMh9MA9UbIEN?start-index=26"; cho tôi bằng $ (curl -s $ f | grep -o "url = '$ y/watch? V = [^'] '"); d = $ (echo $ i | sed "s | url \ = '$ y/watch? v = (.) &. *' | \ 1 | "); youtube-dl - tên tệp giới hạn "$ y/watch? v = $ d"; thực hiện

Bạn phải tìm ID playlist từ Youtube URL phổ biến như: https://www.youtube.com/playlist?list=PLeHqhPDNAZY_3377_DpzRSMh9MA9UbIEN

Ngoài ra, kỹ thuật này sử dụng gdata API, hạn chế 25 hồ sơ cho mỗi trang.
Do đó tham số start-index = 26 (để lấy trang 2 trong ví dụ của tôi)

Điều này có thể sử dụng một số làm sạch và thêm logic để lặp lại tất cả các bộ 25, quá.

Điểm Uy Tín:

https://stackoverflow.com/a/8761493/1069375

http://www.commandlinefu.com/commands/view/3154/download-youtube-playlist (mà bản thân nó đã không hoàn toàn làm việc)

Các vấn đề liên quan