过了一段时间,我自己想通了……
我创建了一个 PHP 脚本,用于检索播放列表中第一个视频的视频 ID,并将该 ID 放入实时统计链接中。我将现场活动的链接放入播放列表中以方便使用。
<?php
// Retrieves video info from Youtube playlist. Just update [PLAYLIST_ID] and [API_KEY]
$json_url = "https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&maxResults=1&playlistId=[PLAYLIST_ID]&fields=items%2Fsnippet%2FresourceId%2FvideoId&key=[API_KEY]";
$json = file_get_contents($json_url);
$json=str_replace('},
]',"}
]",$json);
$data = json_decode($json, true);
$videoId = $data['items'][0]['snippet']['resourceId']['videoId'];
$viewers = file_get_contents("https://www.youtube.com/live_stats?v=$videoId");
echo $viewers;
?>
然后,我创建了一个 HTML 页面,其中使用 jQuery 动态更新数据。
<html>
<body>
<div id="status" style="color: #666; line-height: 24px; font-size: 19px; font-weight: normal; font: 19px Roboto,arial,sans-serif;"></div>
<script src="http://code.jquery.com/jquery-1.7.1.min.js" type="text/javascript"></script>
<script type="text/javascript">
function update() {
$.ajax({
url: 'viewers.php',
dataType: 'text',
success: function(data) {
if (parseInt(data) == 0) {
$("#status").css({ display: "none" });
} else {
$("#status").text(parseInt(data) + ' watching now' );
}
}
})
}
update();
var statusIntervalId = window.setInterval(update, 5000);
</script>
</body>
</html>
这就是我走多远。现在我只是想知道是否有更好的方法将这些代码组合在一起以创建更少的服务器请求。每个 jQuery 请求每 5 秒发生一次,大小约为 240 字节。即使请求很小,它们仍可能减慢页面速度。
如果可以,请帮助我改进我的解决方案。先感谢您。