0
A
回答
3
是的,還有一種方法。我不會爲您編寫整個腳本,但我至少會爲您提供從YouTube提供下載鏈接的功能。
好吧,您將需要安裝CURL來執行此操作。
/* Developed by User - WebEntrepreneur @ StackOverlow.com */
function ___get_youtube_video($youtube_url)
{
if(eregi('youtube.com', $youtube_url))
{
preg_match('/http:\/\/(.+)youtube.com\/watch(.+)?v=(.+)/', $youtube_url, $youtube_id_regex);
$youtube_id = ($youtube_id_regex[3]) ? $youtube_id_regex[3] : '';
if(!$youtube_id)
{
return INVALID_YOUTUBE_ID;
}
if(eregi('\&', $youtube_id))
{
$youtube_id_m = explode('&', $youtube_id);
foreach($youtube_id_m as $slices)
{
$youtube_id = $slices;
break;
}
}
} else {
$youtube_id = ($youtube_url);
}
$ping = ___get_curl("http://www.youtube.com/watch?v={$youtube_id}&feature=youtu.be");
if(!$ping)
{
return YOUTUBE_UNAVAILABLE;
}
$ping_scan = nl2br($ping);
$ping_scan = explode('<br />', $ping_scan);
if(eregi('= null', $ping_scan[36]) or !$ping_scan[36])
{
return YOUTUBE_TOO_MANY_REQUESTS;
}
$ping_scan = str_replace("\n", "", $ping_scan[36]);
$ping_scan = str_replace(" img.src = '", "", $ping_scan);
$out[1] = str_replace("';", "", $ping_scan);
$sub_ping = ___get_curl("http://gdata.youtube.com/feeds/api/videos/{$youtube_id}");
preg_match('/<title type=\'text\'>(.+)<\/title>/', $sub_ping, $inout);
$inout = $inout[1];
if(!$out[1])
{
return VERSION_EXPIRED;
}
$out[1] = str_replace("generate_204", "videoplayback", $out[1]);
$out[1] = str_replace("\\/", "/", $out[1]);
$out[1] = rawurldecode($out[1]);
if($inout)
{
$out[1] .= "&file=".urlencode($inout).".mp4";
$filename = urlencode($inout).".mp4";
}
header("Content-Disposition: attachment; filename=\"".$filename."\"");
flush();
return ___get_curl($out[1]);
}
function ___get_curl($url)
{
if(!function_exists("curl_setopt"))
{
return CURL_NOT_INSTALLED;
}
$ch=curl_init();
curl_setopt($ch,CURLOPT_USERAGENT, "YouTube Video Downloader");
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,0);
curl_setopt($ch,CURLOPT_HEADER,0);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
curl_setopt($ch,CURLOPT_TIMEOUT,100000);
$curl_output=curl_exec($ch);
$curlstatus=curl_getinfo($ch);
curl_close($ch);
return $curl_output;
}
現在讓我來談談代碼。經過大約30分鐘的研究後,我設法破解了他們的算法,但它確實有非常嚴格的界限,他們現在已經設定了。
由於每個視頻下載請求都只與IP綁定,因此您需要將其從您的帶寬中流出,這正是上述腳本的作用。但是,像keepvid.com這樣的站點使用Java來獲取下載URL並將其傳輸給用戶。我還加入了自己的YouTube ID獲取器,這對於這些工具非常方便。
請注意,如上所述,YouTube會一直更改其算法,使用此工具需自擔風險。對於對YouTube造成的任何損害,我不承擔任何責任。
希望它爲你設定了一個很好的邊界,花了一段時間。
相關問題
- 1. 從Python使用Youtube上下載視頻
- 2. 用PHP下載Youtube視頻
- 3. 在YouTube上使用get_video下載視頻
- 4. 從YouTube下載視頻
- 5. NSURLConnection從YouTube上下載視頻
- 6. 用wget下載YouTube視頻
- 7. 僅從YouTube視頻下載音頻
- 8. 使用flash下載youtube視頻
- 9. YouTube視頻有下載使用PHP服務器
- 10. 是否有可能通過PHP下載YouTube視頻鏈接並且可恢復?
- 11. php腳本強制下載YouTube視頻
- 12. 我可以使用youtube api上傳YouTube視頻嗎?
- 13. 如何下載youtube視頻php?
- 14. 使用Java API下載youtube視頻?
- 15. Youtube視頻在php下載使用正則表達式
- 16. 如何使用ruby下載YouTube視頻?
- 17. 使用youtube-dl從頻道下載新視頻
- 18. 從Youtube下載視頻:errorcode = 150
- 19. 下載YouTube視頻.NET
- 20. YouTube。如何使用PHP上傳視頻
- 21. 是否有可能使用jQuery將視頻上傳到YouTube?
- 22. 從YouTube上下載視頻的應用程序
- 23. 力Youtube視頻下載
- 24. 使用命令行使用VLC從YouTube下載視頻
- 25. Android:使用LAN下載播放mp4視頻文件可能嗎?
- 26. 如何使用Android從Youtube下載視頻?
- 27. youtube gdata上傳視頻php
- 28. 我如何使用php下載YouTube視頻?
- 29. rails應用程序下載youtube視頻
- 30. 如何在Java上從YouTube上下載視頻?
注意:這樣做違反了Youtube使用條款。 – 2010-08-01 19:45:10