我正在构建一个小的界面,以显示从YouTube频道到网页的实时视频流。我获得了API密钥,我对其进行了设置并成功运行。但是后来我无法从YouTube服务器返回的json中访问某些信息。
我尝试了一些方法,解决了旅途中的任何问题,但我意识到有时它可以工作,有时却无法...我搜索了其他线程,但我不明白发生了什么。
所以问题是:
如何在每次没有HTTP响应失败的情况下如何使用file_get_contents_url()获取有关Youtube频道的信息?
为什么我要使用Google API中作为配额的所有单位进行测试? (一次刷新约50个单元就用完了)
我的代码
<?php
header("Access-Control-Allow-Origin: *");
# Enable Error Reporting and Display:
error_reporting(~0);
ini_set('display_errors', 1);
$API_KEY = 'API KEY HERE';
$ChannelID = ' CHANNEL ID HERE';
$channelInfo = 'https://www.googleapis.com/youtube/v3/search?part=snippet&channelId='.$ChannelID.'&type=video&eventType=live&key='.$API_KEY;
$extractInfo = file_get_contents_url($channelInfo);
$extractInfo = str_replace('},]',"}]",$extractInfo);
$showInfo = json_decode($extractInfo, true);
if($showInfo['pageInfo']['totalResults'] === 0){
echo 'Users channel is Offline';
}else{
echo 'Users channel is LIVE!';
}
$videoId = $extractInfo['items'][0]['id']["videoId"];
if ($videoId = 0) {
echo "<h2>No live stream yet.</h2>";
} else {
echo "</h2>$videoId</h2>";
}
?>
我需要的是
当我回声$extractInfo
时,我会得到
{
"kind": "youtube#searchListResponse",
"etag": "\"XpPGQXPnxQJhLgs6enD_n8JR4Qk/yOWNawoTMP4atq-Ylgqt-1puBAQ\"",
"regionCode": "NL",
"pageInfo": {
"totalResults": 0,
"resultsPerPage": 5
},
"items": []
} 0
答案 0 :(得分:0)
如果您显示给我们的回复是完整的,那么如果您获得的频道是离线的,则发送项目数组但为空,因此您的代码需要检查该内容 可能性
// only run this if we actually have an array to process
if ( count($showInfo['items']) > 0 ) {
$videoId = $showInfo['items'][0]['id']["videoId"];
if ($videoId = 0) {
echo "<h2>No live stream yet.</h2>";
} else {
echo "</h2>$videoId</h2>";
}
} else {
echo "No items in the array";
}