gpt4 book ai didi

php - 使用 PHP 从 youtube 下载视频 - 仍然可以吗?

转载 作者:行者123 更新时间:2023-12-03 05:48:13 24 4
gpt4 key购买 nike

我想知道在过去几个月 youtube 的所有变化之后,是否有办法编写一个能够下载视频的脚本?

我知道一年前有效的方法不再适用。

最佳答案

是的,还是有办法的。我不会为您编写整个脚本,但我至少会为您编写提供 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 造成的任何损害,我概不负责。

希望它为您设定了一个良好的界限,花了一段时间来制作它。

关于php - 使用 PHP 从 youtube 下载视频 - 仍然可以吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3383474/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com