【问题标题】:unable to download youtube video using phptube class无法使用 phptube 类下载 youtube 视频
【发布时间】:2010-04-09 11:18:39
【问题描述】:

我正在使用 phptube 类来下载你的视频。

from this site

在代码中,我将 youtube url 粘贴到输入框上,但下面有错误。

Warning: file_get_contents(http://www.youtube.com/get_video?video_id=&t=)
[function.file-get-contents]: failed to open stream: HTTP request failed! 
HTTP/1.0 404 Not Found

Warning: file_put_contents(./flvs/3Hx9VsqMUug.flv) [function.file-put-contents]:
failed to open stream: No such file or directory in E:\xampp\htdocs\vdo\utube
\functions.php on line 19
path:./flvs/3Hx9VsqMUug.flv

请告诉我哪里有问题???

更新:

这里是主要代码

$url = "http://www.youtube.com/watch?v=".$video_id;
            //where $video_id=nlZJ7RsyC0g
    $this->req =& new HTTP_Request($url);
    //echo "<pre>";
    //print_r($this->req);
    //echo "</pre>";
    //die;
    $response = $this->req->sendRequest();
    //echo $response; die;
    if (PEAR::isError($response)) {
        //echo "inside if";
        $response->getMessage()."\n";
    } else {    
        //echo "inside else";
        $page = $this->req->getResponseBody();  
        //print_r($page);
        //var_dump($page);
        //die;
        preg_match("/video_id=(\w*)/",$page,$mv);

        $v_id = $mv[1]; 

        preg_match("/&t=([\w]*)&/",$page,$tickets);
        $ticket = $tickets[1];

        $curl = "";
        $curl .= $v_id;
        $curl .= "&t=";
        $curl .= $ticket;
        //echo $curl;
        $url = "http://www.youtube.com/get_video?video_id=".$curl;
        echo $url;
        die;
        if ($this->debug)
        return $url;    

输出($url) 是 http://www.youtube.com/get_video?video_id=nlZJ7RsyC0g&amp;t=

这里 $t 为 null ,如何从 youtube url 获取 $ticket

【问题讨论】:

    标签: php youtube youtube-api


    【解决方案1】:

    您的第二个错误是因为您没有名为/flvs/ 的目录。在与您执行的脚本相同的目录中创建它,您将获得成功。

    至于您的第一个错误,听起来 YouTube 可能会阻止您的服务器。在发出请求之前尝试设置用户代理:

    ini_set('user_agent', 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9');
    

    (我在网上找到了 sn-p,而不是花时间自己写。只是说。)

    此外,您似乎没有传递任何参数 (?video_id=&amp;t=)。您正在使用的 phptube 插件被劫持,或者您没有传递正确的值。你的意见是什么?

    希望这会有所帮助!

    【讨论】:

    • 谢谢先生,第二个错误已解决,但第一个错误仍然出现,请通过我下载代码的那个站点,您可能会有所了解。
    • 乳清 video_id&amp;tfile_get_contents(http://www.youtube.com/get_video?video_id=&amp;t=) 中是空白的。我认为这不应该是空白
    • 我的输入是 youtube 视频网址
    • 刚刚查看了 YT 是如何通过这些东西的:自从该代码发布以来,他们已经更改了系统。以前,他们依赖重定向(很容易发现)。现在,他们没有。您可能需要弄清楚视频 id 和令牌是如何传递给 SWF 播放器的,以便获取这些内容。很抱歉这个坏消息。
    • 我通过上面的代码成功在本地系统下载了YT视频,但是在服务器上有空白的flv文件正在下载......我应该如何处理服务器?如何知道 pear 是否安装在服务器上??
    【解决方案2】:

    您是否尝试过不同的课程 - 试试这个 - 对我来说是一种享受,它拥有获取视频和所有相关数据可能需要的一切:PHP Youtube Class

    【讨论】:

      【解决方案3】:

      我知道这篇文章已经过时了。但由于此页面位于 Google 搜索 “PHP 类下载 Youtube 视频” 的前五个结果中 - 因此其他人可能会遇到此线程,我想参考我自己的(开源)PHP 类,它功能齐全(在撰写本文时)并且 - 最重要的是 - 具有一个附加功能,不仅可以从 YT 下载视频,还可以将它们转换为 mp3 音频文件。

      你可以在我的 GitHub 上找到它:https://github.com/eyecatchup/php-yt_downloader我希望这对某人有所帮助。

      【讨论】:

        猜你喜欢
        • 2011-02-10
        • 2012-12-21
        • 2012-09-07
        • 1970-01-01
        • 2017-10-22
        • 2012-12-31
        • 1970-01-01
        • 1970-01-01
        • 2011-11-23
        相关资源
        最近更新 更多