1

我是 PHP 的初学者。我的项目中有一项任务,即使用 PHP 中的 curl 从 YouTube 链接中获取所有视频。是否可以显示 YouTube 上的所有视频?

我通过谷歌搜索找到了这段代码:

<?php
 $ch = curl_init();
 curl_setopt($ch, CURLOPT_URL, 'http://www.youtube.com');
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
 $contents = curl_exec ($ch);
 echo $contents;
 curl_close ($ch);
?>

它显示了 YouTube 网站,但是当我单击任何视频时,它都不会播放。

4

3 回答 3

4

您可以从 youtube oemebed 界面以两种格式获取数据,XmlJson返回有关视频的元数据:

http://www.youtube.com/oembed?url={videoUrlHere}&format=json

使用您的示例,调用:

http://www.youtube.com/oembed?url=http://www.youtube.com/watch?v=B4CRkpBGQzU&format=json

所以,你可以这样做:

$url = "Your_Youtube_video_link";

例子 :

$url = "http://www.youtube.com/watch?v=m7svJHmgJqs"

$youtube = "http://www.youtube.com/oembed?url=" . $url. "&format=json";
$curl = curl_init($youtube);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$return = curl_exec($curl);
curl_close($curl);
$result = json_decode($return, true);
echo $result['html'];

试试吧...希望它会帮助你。

于 2013-01-17T13:42:45.750 回答
1

您可以使用 curl 检索 Google 主页(或替代页面)并使用html5lib等库解析返回的 html 。如果您想尝试这种方法,第一步可能是在相关页面上“查看源代码”并查看链接的结构。

解决问题的更优雅的方法是使用 Youtube API(一种与 Youtube 系统交互的方式),它可以让您直接检索链接。例如,可以只要求 Youtube API 向您发送链接。试试这个

于 2013-01-17T13:20:36.220 回答
1

您还可以使用file_get_contents
以下示例和工作代码 获取所有 youtube 的频道视频

<?php
$Youtube_API_Key = ""; // you can obtain api key :  https://developers.google.com/youtube/registering_an_application
$Youtube_channel_id = "";
$TotalVideso = 50; // 50 is max , if you want more video you need Youtube secret key.
$order= "date"; ////allowed order : date,rating,relevance,title,videocount,viewcount
$url = "https://www.googleapis.com/youtube/v3/search?key=".$Youtube_API_Key."&channelId=".$Youtube_channel_id."&part=id&order=".$order."&maxResults=".$TotalVideso."&format=json";
$data = file_get_contents($url);
$JsonDecodeData=json_decode($data, true);
print_r($data);
?>
于 2015-08-07T12:30:15.213 回答