[分享] PHP CURL 下載YOUTUBE影片到電腦(JUST …

看板PHP作者 (胖胖糖)時間14年前 (2009/10/11 10:02), 編輯推噓5(503)
留言8則, 5人參與, 最新討論串1/1
也是之前寫的文章 轉自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=vjVQa1PpcFPQSHWsGE2aAFygDi9onwck4nEpN0B_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

10/11 10:17, , 1F
如果不嫌棄,歡迎在這兒分享:http://bit.ly/2NYJAN ;)
10/11 10:17, 1F

10/11 11:53, , 2F
喔喔!!我知道,我之前要貼的,不過時間一久就忘了 = =
10/11 11:53, 2F

10/12 14:18, , 3F
改一個有HD版本的吧^_^
10/12 14:18, 3F

10/12 14:52, , 4F
HD ??
10/12 14:52, 4F

10/12 15:00, , 5F
高畫質的~
10/12 15:00, 5F

10/12 15:10, , 6F
喔喔~我記得只是網址再多一個傳送變數的樣子
10/12 15:10, 6F

10/14 09:14, , 7F
推一個
10/14 09:14, 7F

12/09 22:53, , 8F
Google Data API ? 有 YouTube Data API for PHP ~~
12/09 22:53, 8F
文章代碼(AID): #1AqJofcp (PHP)