【问题标题】:Using YouTube API v3 to tell if a channel has a live stream使用 YouTube API v3 判断频道是否有直播
【发布时间】:2014-04-14 04:39:25
【问题描述】:

我的 YouTube API 调用的目标是,给定一个 channelId,返回该频道当前是否正在直播。这是我目前正在拨打的电话:

https://www.googleapis.com/youtube/v3/search?part=snippet&channelId={CHANNEL_ID}&eventType=live&type=video&key={YOUR_API_KEY}

虽然此调用有效,但在频道开始直播和此调用返回流之间存在显着延迟。

在不需要 oAuth 的 YouTube v3 API 中使用是否有更好的调用?我的应用程序的功能是只读的。

谢谢!

【问题讨论】:

标签: youtube-api


【解决方案1】:

可能晚了,但仍然有人会使用它,我在 google api docs 上找到了答案:

https://developers.google.com/youtube/v3/live/docs/liveBroadcasts/list (滚动到底部,您可以使用他们的现场 api 即时拨打电话)

您必须拨打的电话是:

GET https://www.googleapis.com/youtube/v3/liveBroadcasts?part=id%2Csnippet%2Cstatus&mine=true&broadcastStatus=active&key={YOUR_API_KEY}

(atm,他们的状态字段有问题)。您可以删除过滤器并检查返回的结果为

{ "status": { "lifeCycleStatus": "live"}}

根据谷歌文档:

开始之前

您需要一个 Google 帐户才能访问 Google Developers Console、请求 >API 密钥并注册您的应用程序。 向 Google 注册您的应用程序,以便它可以提交 API 请求。 注册您的应用程序后,选择 YouTube 数据 API 作为 >您的应用程序使用的服务之一:

转到 Developers Console 并选择您刚刚注册的项目。 在 Google Developers Console 中打开 API 库。如果出现提示,请选择 >project 或创建一个新项目。在 API 列表中,确保 >YouTube Data API v3 的状态为开启,如果您是 YouTube 内容合作伙伴,则确保 YouTube >Content ID API 的状态为开启。

调用数据 API

API 请求必须由拥有 >广播 YouTube 频道的 Google 帐户授权。

您可以查看此链接以生成访问(OAuth 2.0)令牌:https://developers.google.com/identity/protocols/OAuth2?hl=en

我希望这会有所帮助。

【讨论】:

  • 我正在尝试使用它,但出现 401 Login Required 错误,有什么想法吗?
  • 找出原因,在此评论中,YouTube 需要 OAUTH 才能与 API 的 liveBroadcast 部分进行交互。此答案不再有效,因为它使用 API 密钥而不是 Oauth
  • 我不接受这个答案,因为它现在需要 OAUTH,而我最初的问题是关于不需要 OAUTH 的请求。
  • mine=true 位是另一个美中不足的问题。它告诉您您自己的频道是否有任何直播。它不允许您查询其他人的频道。如果您正在编写 OBS 插件,则很有用,如果您正在编写小部件以通知您正在关注的人上线,则无用。
  • @Daniel,看起来这个问题是我的重复。这个答案可能会奏效! (请求 URL 的 eventType=live 部分是关键,当我问这个问题时,它可能在 2014 年还没有出现!)
【解决方案2】:

搜索调用相当昂贵。如果您只分配了最初的 10k 配额点,那么在 100 次查询后您将用完点,这对于某些用例来说可能并不麻烦,但它仍然是有限的。

相反,您可以使用 playwright 并执行以下操作: page.goto("https://YouTube.com/channel/{channel id}/live") 然后检查频道直播时会发生的重定向: 常量重定向 = page.url() 如果重定向包含指向 YouTube 视频的链接,那么您就知道该频道是实时的,否则它不是,它会产生一个类似于传递给 goto 函数的链接。

【讨论】:

    猜你喜欢
    • 2020-09-22
    • 2015-07-05
    • 2023-01-09
    • 1970-01-01
    • 1970-01-01
    • 2012-11-25
    • 2016-09-28
    • 2020-09-08
    • 2014-05-15
    相关资源
    最近更新 更多