从频道而不是特定的现场活动视频中检索 YouTube live_stats 并发观看者
Retrieve YouTube live_stats concurrent viewers from channel instead of specific live event video
我知道可以使用此 link 获取特定直播 YouTube 活动的并发观看者数量:https://www.youtube.com/live_stats?v={videoid}
我想知道是否可以获取频道或播放列表而不是特定直播活动的 live_stats。
我想将此数据嵌入到一个网页中,该网页每周都会有多个不同的现场活动。为每个事件更改视频 ID 将是一个负担。如果这不能直接完成,有没有办法从频道获取当前直播活动的视频 ID 并使用 java 脚本或 php 替换 [=21= 中的 ID ]?请帮我解决这个问题。
一段时间后,我自己弄明白了...
我创建了一个 PHP 脚本,用于检索播放列表中第一个视频的视频 ID,并将该 ID 放入实时统计信息 link。我将 link 的现场活动放入播放列表以便于使用。
<?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 字节。即使请求很小,它们仍可能会减慢页面速度。
如果可以,请帮助我改进我的解决方案。提前谢谢你。
我知道可以使用此 link 获取特定直播 YouTube 活动的并发观看者数量:https://www.youtube.com/live_stats?v={videoid}
我想知道是否可以获取频道或播放列表而不是特定直播活动的 live_stats。
我想将此数据嵌入到一个网页中,该网页每周都会有多个不同的现场活动。为每个事件更改视频 ID 将是一个负担。如果这不能直接完成,有没有办法从频道获取当前直播活动的视频 ID 并使用 java 脚本或 php 替换 [=21= 中的 ID ]?请帮我解决这个问题。
一段时间后,我自己弄明白了...
我创建了一个 PHP 脚本,用于检索播放列表中第一个视频的视频 ID,并将该 ID 放入实时统计信息 link。我将 link 的现场活动放入播放列表以便于使用。
<?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 字节。即使请求很小,它们仍可能会减慢页面速度。
如果可以,请帮助我改进我的解决方案。提前谢谢你。