1

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

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

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

4

1 回答 1

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 字节。即使请求很小,它们仍可能减慢页面速度。

如果可以,请帮助我改进我的解决方案。先感谢您。

于 2016-06-01T06:29:33.913 回答