也是之前寫的文章
轉自FQSTORY

直接下載YOUTUBE影片到電腦
最近因為某些YOUTUBE影片不能轉貼(必須進入YOUTUBE網站才能看)
而有一點不開心 =="

所以就搜尋許多YOUTUBE下載的軟體,發現還有蠻多缺點的
1.有些影片不能下載
(不能轉貼的好像都不能下載??,我只試了一個)
2.一次只能下載一個
(如果有一百個要下載,就要點一百次)(=="太麻煩,也許可能我用的軟體比較差)
3.有的要付錢

最後就想說 自己寫一個程式來下載YOUTUBE影片算了,說不定有人已經寫好了,顆顆
所以就GOOGLE找阿找的,只找到一些較差的方法(對我來說)
就是可以利用VIDEO_ID 和 T 來准許YOUTUBE讓使用者下載
輸入網址後,會跳出一個視窗,會要你另存新檔
但是還是遇到上面第二個問題,要一個一個點  (這樣不如不要寫程式了)

所以就繼續找阿找的,發現台灣網頁資訊真的有夠少 =="
就找到國外去了,就發現有很多人都有研究過這個問題
不過用他們的程式碼,不是不能用,就是還是有以上問題

最後還是只有到PHP官方網站研究 ==
終於融合以上資訊,寫出了 直接下載YOUTUBE影片到電腦

說實在的 程式碼也不多 大家可以學學看
至於要一次下載很多,可以修改之前發的 將YOUTUBE清單彙整成DISCUZ
(之後會在PO上來)
這樣就可以只輸入一個清單
就可以把清單裡面的所有TOUTUBE影片都下載到電腦喔!!


PHP CODE


$url='http://www.youtube.com/watch?v=25cEpGEpzhM';//這邊改網址
get_youtube_url($url); //開始正式執行
function get_youtube_url($url){  //處理字串的程式
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_URL,$url);
        $content = curl_exec($ch);
        $filename = get_youtube_title($content);//WINDOWS 不支援UTF8 無法使用\
中文檔
        $filename = mktime();//因為本人是WINDOWS,所以檔名設成時間
        $file_info = get_youtube_info($content);
        $url = 'http://www.youtube.com/get_video?video_id='.$file_info['video_\
id'].'&t='.$file_info['t'];
        //echo $filename.$url;
        download_youtube($url,$filename);


}


function get_youtube_title($content){  //只有在LINUX有用 支援UTF8
        $content = substr($content,strpos($content,'<meta name="title"')+28);
        $content = substr($content,0,strpos($content,'"'));
        return $content;
}
function get_youtube_info($content){ //處理影片資訊的程式
        $content = strstr($content,"var swfArgs");
        $content = substr($content,0,strpos($content,';'));
        $return='';
        $content = explode('"',$content);
        foreach($content as $a => $b){
                if($a%4 == 1){
                        $return[$b] = $content[$a+2];
                }
        }
        return $return;
}
function download_youtube($url,$filename){ //真正下載的程式
        $fh = fopen($filename.'.flv', 'w+');
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        //$url = 'http://www.youtube.com/get_video?t=vjVQa1PpcFPQSHWsGE2aAFygD\
i9onwck4nEpN0B_eSQ%3D&video_id=hjTb2gR8rpE';
        curl_setopt($ch, CURLOPT_URL,$url);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);//youtube 可能有轉址
        curl_setopt($ch, CURLOPT_FILE,$fh);
        curl_exec($ch);
        fclose($fh);
}


--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.46.114.108
推 nighter:Google Data API ? 有 YouTube Data API for PHP ~~        12/09 22:53

LoveTotally 發表在 痞客邦 PIXNET 留言(1) 人氣()


留言列表 (1)

發表留言
  • germos
  • 您好, 我剛測試了, 似乎 get_video 已經失效了.
    請問您還有其他辦法可以抓嗎?

    Thanks.
【 X 關閉 】

【PIXNET 痞客邦】國外旅遊調查
您是我們挑選到的讀者!

填完問卷將有機會獲得心動好禮哦(注意:關閉此視窗將不再出現)

立即填寫取消