【发布时间】:2016-01-11 16:25:03
【问题描述】:
我必须使用 PHP 中的 YouTube 视频 ID 获取 YouTube 视频标题。
目前我正在这样做:
$html = "http://www.youtube.com/watch?v=" . $video_id;
$doc = new DOMDocument();
$doc->loadHTMLFile($html);
$doc->preserveWhiteSpace = false;
$title_div = $doc->getElementById('eow-title');
$title = $title_div->nodeValue;
但这会引发错误:
Warning: DOMDocument::loadHTMLFile(http://www.youtube.com/watch?v=hMpCsfvi_3c): failed to open stream: HTTP request failed! HTTP/1.0 429 Too Many Requests in /home/vhosts/xxxx/xxxx/get_youtube_title.php on line 6
Warning: DOMDocument::loadHTMLFile(): I/O warning : failed to load external entity "http://www.youtube.com/watch?v=hMpCsfvi_3c" in /home/vhosts/xxxx/xxxx/get_youtube_title.php on line 6
上述方法适用于GoDaddy 主机,但不适用于101domain.com 主机。
我尝试过的另一种方法是:
if($content = file_get_contents("http://youtube.com/get_video_info?video_id=" . $video_id)) {
parse_str($content, $ytarr);
$myvideos[$i]['video_title'] = $ytarr['title'];
}
else
$myvideos[$i]['video_title'] = "No title";
这会引发错误:
Warning: DOMDocument::loadHTMLFile(http://youtube.com/get_video_info?video_id=hMpCsfvi_3c): failed to open stream: HTTP request failed! HTTP/1.0 402 Payment Required in /home/vhosts/xxxx/get_youtube_title.php on line 6
Warning: DOMDocument::loadHTMLFile(): I/O warning : failed to load external entity "http://youtube.com/get_video_info?video_id=hMpCsfvi_3c" in /home/vhosts/xxxx/get_youtube_title.php on line 6
我最后尝试的方法是这样的:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://youtube.com/get_video_info? video_id=" . $video_id);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
这不会引发任何错误,但它也不起作用。报错为E_ALL,display_errors设置为1。
有人告诉我,为此使用 YouTube API 更安全。由于我是 YouTube API 的新手,我需要一些帮助。
如何在 PHP 中获取带有视频 ID 的视频标题?还有一个 易于理解的 YouTube API 教程。
注意:这不是重复的问题。
Stack Overflow 上关于 YouTube API 的其他答案是 2013 年之前的,它们不再有效。
【问题讨论】:
-
回答“易于理解的教程”部分 - github.com/madcoda/php-youtube-api/wiki/… :)
标签: php video youtube-api