从频道而不是特定的直播活动视频中检索YouTube live_stats并发观看者

时间:2016-05-27 08:25:47

标签: youtube youtube-api youtube-data-api youtube-livestreaming-api

我知道可以通过以下链接获取特定直播YouTube活动的并发观看者数量:https://www.youtube.com/live_stats?v= {videoid}

我想知道是否可以获取频道或播放列表的live_stats而不是特定的直播活动。

我希望将此数据嵌入到每周会发生多个不同直播活动的网页中。更改每个事件的视频ID将是一个负担。如果不能直接完成,有没有办法从频道获取当前直播事件的视频ID,并使用java脚本或php替换链接中的id?请帮我解决这个问题。

1 个答案:

答案 0 :(得分:0)

过了一段时间,我自己想出来了......

我创建了一个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字节。即使请求很小,它们仍然可能会减慢页面速度。

如果可以,请帮助我改进我的解决方案。提前谢谢。