You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何不使用YouTube Data API的Search.list查询频道直播状态?

解决YouTube频道直播状态查询的低配额方案

我完全懂你的痛点——Search.list的100配额成本实在太坑了,批量查几个频道就容易触顶。其实官方API里有更高效的方案,就是用LiveBroadcasts.list接口,配额成本仅1单位/调用,完美解决你的问题。

核心方案:使用LiveBroadcasts.list接口

这个接口专门用来查询直播相关内容,我们只需要指定broadcastStatus='active'就能过滤出当前正在直播的内容,结合channelId就能精准查询指定频道的直播状态。

具体步骤:

  • 调用接口时,设置part为snippet,status(获取直播的基本信息和状态)
  • 指定broadcastStatus='active'(只返回正在进行的直播)
  • 传入目标频道的channelId(支持单次查询一个频道,批量查询的话循环调用即可,每个调用仅1配额)

代码示例(Python)

from googleapiclient.discovery import build

# 替换成你的API密钥
YOUTUBE_API_KEY = "your_api_key_here"
youtube_service = build("youtube", "v3", developerKey=YOUTUBE_API_KEY)

def is_channel_live(channel_id: str) -> bool:
    """查询指定频道是否正在直播"""
    request = youtube_service.liveBroadcasts().list(
        part="snippet,status",
        broadcastStatus="active",
        channelId=channel_id
    )
    response = request.execute()
    # 返回items长度大于0说明有正在进行的直播
    return len(response.get("items", [])) > 0

# 批量查询多个频道
target_channels = ["UCxxxxxxx", "UCyyyyyyy", "UCzzzzzzz"]
for channel_id in target_channels:
    live_status = is_channel_live(channel_id)
    print(f"频道 {channel_id} 直播状态:{'正在直播' if live_status else '未直播'}")

额外说明

  • 如果需要获取直播的具体信息(比如标题、观看人数、直播链接),可以从返回的items中提取:
    • 直播标题:items[0]['snippet']['title']
    • 直播观看人数:items[0]['statistics']['concurrentViewers'](需要把part加上statistics)
    • 直播页面链接:https://www.youtube.com/watch?v={items[0]['id']}
  • 关于Channels.list:你之前提到的Channels.list确实没有直接的直播状态字段,但它的contentDetails.relatedPlaylists.live是频道的直播回放列表,只能看到已结束的直播,无法判断当前是否在播,所以还是LiveBroadcasts.list最直接。

这个方案完全基于官方API,比爬取网页稳定得多,而且配额成本极低,批量查询几十个甚至上百个频道都不会触发配额限制。

内容的提问来源于stack exchange,提问作者ENE KaIku

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 03:42:44