php - cURL-使用curl时未下载文件

标签 php curl youtube

对于我想做的事情,我在CLI和cURL扩展中使用PHP5。
我正在尝试从youtube的服务器下载文件,该文件可以在任何导航器上正常工作,
链接是这样的;

`http://youtube.com/get_video_info?video_id=VIDEO_ID

范例:http://youtube.com/get_video_info?video_id=9pQxmD6Bhd

当我通过导航器访问该文件时,它会提示我一个文件下载框
“get_video_info”,当下载文件时包含一些数据,..

问题是要使用cURL获取此文件,我一直收到此错误消息;

status=fail&errorcode=2&reason=Invalid+parameters.



这是代码(我试图更改某些选项,但是我对cURL不熟悉,所以我被卡住了。
$c = curl_init();
curl_setopt($c, CURLOPT_URL, "http://youtube.com/get_video_info?video_id=9pQxmD6Bhd");
curl_setopt($c, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1");
curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
curl_setopt($c, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($c, CURLOPT_HEADER, false);
$output = curl_exec($c);
if($output === false)
{
    trigger_error('Erreur curl : '.curl_error($c),E_USER_WARNING);
}
else
{
    var_dump($output);
}
curl_close($c);

我尝试使用一些curl_setopt选项,例如CURLOPT_TRANSFERTEXT,但没有成功。
我绝对需要帮助!

感谢您的回答,如果我做的事情不遵守这里的规则,对不起,这是我的第一篇文章。

编辑
这是在cli中使用php下载youtube视频(.ogg)的代码。
<?php 

/*Youtube URL and ID*/
$youtube_video = "http://www.youtube.com/watch?v=Ftud51NhY2I";
$yt_id = explode("=", $youtube_video);
$id = $yt_id[1];

/*
    Functions
*/
function get_link($raw){
    $url = rawurldecode(rawurldecode($raw));
    $url = explode("&qual", $url);      
    return $url[0];
}



/*
    Here we go

    Query video token
*/
$c = curl_init();
curl_setopt($c, CURLOPT_URL, $youtube_video);
curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
curl_setopt($c, CURLOPT_HEADER, false);
$output = curl_exec($c);
if($output === false)
{
    trigger_error('Erreur curl : '.curl_error($c),E_USER_WARNING);
}
else{}
curl_close($c);

/*
    Get Video infos
*/
$c = curl_init();
curl_setopt($c, CURLOPT_URL, "http://youtube.com/get_video_info?video_id=".$id);
curl_setopt($c, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1");
curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
curl_setopt($c, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($c, CURLOPT_HEADER, false);
$output = curl_exec($c);
if($output === false){trigger_error('Erreur curl : '.curl_error($c),E_USER_WARNING);}
else{}
curl_close($c);
/*Get RAW link*/
$temp = explode("url_encoded_fmt_stream_map=url%3D", $output);
$url = explode("=", $temp[1]);
$url = get_link($url[0]);
/*Get Video name*/
$temp = "";
$temp = explode("title=", $output);
$title = explode("&", $temp[1]);
$title = rawurldecode(rawurldecode($title[0]));
$replace = array(':', '+', '\\', '/', '"', '<', '>', '|', '(', ')', '\'');
$title = str_replace($replace, ' ',$title);
//echo $title;
/*
    Download Video
*/
$url  = $url;
$path = $title.'.ogg';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$data = curl_exec($ch);
curl_close($ch);
file_put_contents($path, $data);

echo "Done... \r\n";

?>

最佳答案

您收到错误消息,因为o​​jit_code参数无效。

尝试更改该video_id,它应该可以正常工作。
ID-不存在

关于php - cURL-使用curl时未下载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12348314/

相关文章:

php - 如何从数据库中选择与登录用户的值类似的值

php - 似乎无法使用 php Guzzle 上传大文件

content-management-system - 媒体共享CMS网站

android - 是否可以在Android中使用WebView播放Youtube视频

php - Doctrine QueryBuilder 忽略参数

php - mysql好友在线显示

curl - 使用curl脚本从wildfly域模式下配置的所有服务器中删除war/ear

ruby-on-rails - 带有嵌套参数 cUrl 的多部分 POST

ios - 如何使用 MPMoviePlayerController 播放 YouTube 视频?

php - Aurelia + Php 可能/推荐吗?