如何检查YouTube频道是否正在直播

如何检查YouTube频道是否正在直播,youtube,youtube-api,youtube-data-api,youtube-livestreaming-api,Youtube,Youtube Api,Youtube Data Api,Youtube Livestreaming Api,我找不到任何信息来检查YouTube频道是否真的在流媒体。 使用Twitch,您只需要频道名称,使用API,您可以检查是否有直播频道 我不想使用OAuth,通常一个公共API密钥就足够了。就像检查某个频道的视频一样,我想知道该频道是否正在播放。您可以使用并指定频道ID,将类型设置为video,并将eventType设置为live 例如,当我搜索: https://www.googleapis.com/youtube/v3/search?part=snippet&channelId=UCXswCc

我找不到任何信息来检查YouTube频道是否真的在流媒体。 使用Twitch,您只需要频道名称,使用API,您可以检查是否有直播频道

我不想使用OAuth,通常一个公共API密钥就足够了。就像检查某个频道的视频一样,我想知道该频道是否正在播放。

您可以使用并指定频道ID,将类型设置为
video
,并将eventType设置为
live

例如,当我搜索:

https://www.googleapis.com/youtube/v3/search?part=snippet&channelId=UCXswCcAMb5bvEUIDEzXFGYg&type=video&eventType=live&key=[API_KEY]

我得到以下信息:

{
 "kind": "youtube#searchListResponse",
 "etag": "\"sGDdEsjSJ_SnACpEvVQ6MtTzkrI/gE5P_aKHWIIc6YSpRcOE57lf9oE\"",
 "pageInfo": {
  "totalResults": 1,
  "resultsPerPage": 5
 },
 "items": [
  {
   "kind": "youtube#searchResult",
   "etag": "\"sGDdEsjSJ_SnACpEvVQ6MtTzkrI/H-6Tm7-JewZC0-CW4ALwOiq9wjs\"",
   "id": {
    "kind": "youtube#video",
    "videoId": "W4HL6h-ZSws"
   },
   "snippet": {
    "publishedAt": "2015-09-08T11:46:23.000Z",
    "channelId": "UCXswCcAMb5bvEUIDEzXFGYg",
    "title": "Borussia Dortmund vs St. Pauli 1-0 Live Stream",
    "description": "Borussia Dortmund vs St. Pauli Live Stream Friendly Match.",
    "thumbnails": {
     "default": {
      "url": "https://i.ytimg.com/vi/W4HL6h-ZSws/default.jpg"
     },
     "medium": {
      "url": "https://i.ytimg.com/vi/W4HL6h-ZSws/mqdefault.jpg"
     },
     "high": {
      "url": "https://i.ytimg.com/vi/W4HL6h-ZSws/hqdefault.jpg"
     }
    },
    "channelTitle": "",
    "liveBroadcastContent": "live"
   }
  }
 ]
}

我知道这很旧,但我自己用php解决了这个问题

$API_KEY = 'your api3 key';
$ChannelID = 'the users channel id';

$channelInfo = 'https://www.googleapis.com/youtube/v3/search?part=snippet&channelId='.$ChannelID.'&type=video&eventType=live&key='.$API_KEY;

$extractInfo = file_get_contents($channelInfo);
$extractInfo = str_replace('},]',"}]",$extractInfo);
$showInfo = json_decode($extractInfo, true);

if($showInfo['pageInfo']['totalResults'] === 0){

echo 'Users channel is Offline';

}else{

echo 'Users channel is LIVE!';

}
不过,搜索方法()的使用成本非常高。默认情况下,它将消耗10000个配额单位中的100个配额单位()。 这意味着你每天只收到100个请求,这太糟糕了

你可以要求增加配额,但这似乎是强行解决问题的野蛮手段

真的没有其他更简单的方法吗?

如果你指向一个
https://www.youtube.com/channel/CHANNEL_ID/live
link,它会告诉您它是否处于活动状态

  • e、 g.通常是活的
$streamlink”https://www.youtube.com/channel/UCSJ4gkVC6NrvII8umztf0Ow/live"
[cli][info]找到了与URL匹配的插件youtubehttps://www.youtube.com/channel/UCSJ4gkVC6NrvII8umztf0Ow/live
可用流:144p(最差)、240p、360p、480p、720p、1080p(最佳)
  • 而不是

考虑到搜索操作的成本,我发现youtube API非常严格。使用aiohttp和beautifulsoup进行Web抓取不是一个选项,因为更好的指示器需要javascript支持。因此我转向硒。我寻找css选择器

#信息文本
然后搜索字符串
开始流媒体
或其中的
正在观看


您也可以在heroku上运行一个小型API。

我也在努力解决API限制问题。我找到的最可靠、最便宜的方法就是向
HEAD请求
https://www.youtube.com/channel/CHANNEL_ID/live
。如果通道是活动的,那么它将自动加载流。如果没有,它将加载频道视频提要。您只需检查
内容长度
标题大小即可确定所需的长度。如果带电,则不带电时的尺寸几乎是2倍


根据您所在的地区,您可能需要接受cookies同意页面。只需使用
cookies={“同意”:“YES+cb.20210420-15-p1.en GB+FX+634”}

发送您的请求,但是我们可以获得视频流的id吗?如果您查看
项目
资源->
id
->
视频id
,您可以找到id。在我上面发布的示例中,视频流的ID是
w4hl6hzsws
。但是这个API实际上只在我们启动实时流几分钟后才响应,当流刚刚启动时,它不会显示任何数据@不是机器人你能建议一个替代方案吗?这也会返回“直播”但不是流媒体的视频,有没有办法过滤掉这些家伙?这方面的任何更新,最后两条评论对我来说仍然是问题。欢迎访问。这篇文章并没有真正回答这个问题。当你获得更多的声誉时,你将能够以评论的形式发布此类材料……这正是我2019年的战斗。。。很难想象youtube不提供廉价的API请求只是为了查看某个频道是否处于直播状态。。。使用liveBroadcast API没有帮助,因为它对我来说并不全面,也没有办法指定频道…可能有帮助:相关:有一个更完整的官方代码示例用于列出实时流:
$ streamlink "https://www.youtube.com/c/mkbhd/live"          
[cli][info] Found matching plugin youtube for URL https://www.youtube.com/c/mkbhd/live
error: Could not find a video on this page