我是PHP的初学者。我的项目中有一项任务,即使用PHP中的curl从YouTube链接中获取所有视频。是否可以显示来自YouTube的所有视频?
我在Google搜索中找到了此代码:
<?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网站,但是当我点击任何视频时,它都无法播放。
答案 0 :(得分:3)
您可以通过两种格式Xml
和Json
从youtube oemebed界面获取数据,这两种格式会返回有关视频的元数据:
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'];
尝试一下......希望它会对你有帮助。
答案 1 :(得分:1)
您可以使用curl检索Google主页(或替代页面),并使用html5lib等库解析返回的html。如果您想尝试这种方法,第一步可能是在相关页面上“查看源代码”并查看链接的结构。
解决问题的一种更优雅的方法可能是使用Youtube API(一种与Youtube系统交互的方式),这可以让您直接检索链接。例如,可以让Youtube API向您发送链接。试试this。
答案 2 :(得分: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);
?>