获取 youtube 直播的当前观众人数

Posted

技术标签:

【中文标题】获取 youtube 直播的当前观众人数【英文标题】:Grabbing the current viewer count for youtube live streaming 【发布时间】:2016-02-24 02:03:41 【问题描述】:

我希望显示 youtube 直播的当前观众人数,我可以使用以下代码为 youtube 视频执行此操作:

<?php
$JSON = file_get_contents("https://www.googleapis.com/youtube/v3/videos?
part=statistics&id=videiID&key=APIKey");
$json_data = json_decode($JSON, true);
echo $json_data['items'][0]['statistics']['viewCount'];
?>

但这不显示当前的观众人数!

【问题讨论】:

How to get current number of viewers for specific live video with YouTube API?的可能重复 【参考方案1】:

如果您想获取当前观众数量(并发观众),只需在请求的part 参数中包含liveStreamingDetails

例子:

https://www.googleapis.com/youtube/v3/videos?
part=statistics,liveStreamingDetails&id=videoID&key=APIKey

响应将包括

...
      "statistics": 
        "viewCount": "38452",
        "likeCount": "95",
        "dislikeCount": "12",
        "favoriteCount": "0",
        "commentCount": "0"
      ,
      "liveStreamingDetails": 
        "actualStartTime": "2021-08-03T17:34:09Z",
        "scheduledStartTime": "2021-08-03T16:20:00Z",
        "concurrentViewers": "95",
      
...

参考:https://developers.google.com/youtube/v3/docs/videos/list#parameters

【讨论】:

【参考方案2】:

更新 2: 不幸的是,YouTube 放弃了对这种方法的支持。希望将来会有一个新的解决方案,而不使用他们的 API(因为它有报价限制)。


试试这个链接:https://www.youtube.com/live_stats?v=videoid

在 YouTube 上查找直播活动并替换链接中的视频 ID。这应该检索该特定视频的并发观看次数。

如果是,请刷新页面并将数量与 YouTube 页面上的同时观看人数进行比较。

更新 1:


以下是如何将其添加到您的网站的示例。可以设置一个php文件和一个html文件。

viewers.php:

<?php
$viewers = file_get_contents('https://www.youtube.com/live_stats?v=y60wDzZt8yg');
echo $viewers;
?>

viewers.html:

<!DOCTYPE html>
<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>

如您所见,我使用 PHP 文件通过 live_stats 链接从 YouTube 检索数据。然后我使用带有 jquery 的 HTML 每 5 秒动态更新一次数据。

&lt;div id="status"... 是显示数据的地方,并带有一点 css 样式。&lt;script src="... 是加载 jQuery 库的地方。&lt;script type="... 是 jQuery 从PHP 文件并显示在第一个 div / 如果有 0 个查看者,则隐藏它。

我在想您可以将它嵌入到不会刷新整个页面的 iframe 中。您也可以直接将 html 代码嵌入到网页中,而无需 iframe。如果您将直接嵌入,如果 PHP 文件不在同一个相对文件夹中,则必须设置其直接路径。如果有任何错误,只需使用开发人员工具控制台进行故障排除。

请注意,在第一个 jQuery 间隔刷新数据之前,不会显示查看者的数量。在这种情况下,5 秒。 我更新了这个,所以第一次更新不需要 5 秒。现在应该可以立即使用了。

这是它为我工作的图像:

希望这会有所帮助...

【讨论】:

感谢您的帮助,您知道如何在网站上显示以动态获取信息而不刷新页面吗?

以上是关于获取 youtube 直播的当前观众人数的主要内容,如果未能解决你的问题,请参考以下文章

Python爬虫实例使用selenium抓取斗鱼直播平台数据

如何从频道 ID 获取 YouTube 视频 URL

如何永久嵌入带有 url 的 Youtube 实时聊天?

抖音直播监控Api:在线观众

嵌入不带视频 ID 的 YouTube 频道的当前直播

如何在不使用搜索的情况下查找 youtube 频道当前是不是正在直播?