YouTube 数据 API 不再从 search.list 返回活跃的直播流

Posted

技术标签:

【中文标题】YouTube 数据 API 不再从 search.list 返回活跃的直播流【英文标题】:YouTube Data API no longer returns active live streams from search.list 【发布时间】:2020-01-15 17:14:24 【问题描述】:

我编写了一个使用 YouTube Data API V3 的 search.list 的应用程序,它能够使用以下内容为指定频道(自 2018 年开始工作)提取活动直播流:

https://www.googleapis.com/youtube/v3/search?part=snippet&channelId=UCSJ4gkVC6NrvII8umztf0Ow&type=video&eventType=live&key=MYAPIKEY

截至 2019 年 9 月 12 日,以上内容不再为我返回任何结果。

将搜索范围扩大到指定频道的所有视频也不再显示活动直播:

https://www.googleapis.com/youtube/v3/search?part=snippet&channelId=UCSJ4gkVC6NrvII8umztf0Ow&order=date&key=MYAPIKEY

但是,搜索活动直播的 ID 本身可以返回有关视频的信息,这让我相信仍然有办法做到这一点:

https://www.googleapis.com/youtube/v3/videos?part=snippet&id=hHW1oY26kxQ&key=

我正在寻找一种新的解决方案,它能够查询频道以查看他们是否有正在运行的活动直播,并获取该直播的属性。

【问题讨论】:

我遇到了同样的问题,并注意到直播视频在 API 搜索结果中显示为“liveBroadcastContent”:“upcoming”,尽管它们目前正在直播和流式传输。 【参考方案1】:

更新:问题似乎已由 Google 解决,并且可以正常工作。

我遇到了同样的问题,搜索 API eventType=live 不再给出任何结果,并且在没有 eventType 的情况下对其进行编码会显示所有视频,包括实时视频,但是无法对其进行排序,因为 livebroadcastcontent 说没有,即使它是实时的一。我希望这是一个暂时的失败。将 channelId 更改为 channelId 并不能解决问题。

我得到了一个临时解决方案,如下所示。删除 channelId 并使用关键字代替 q=... 这将返回直播。这不是最好或最方便的解决方案,但它帮助了我一点。我认为 YouTube 必须使用 eventType-live 解决我们的问题 n,但它仍然无法正常工作。

【讨论】:

您是否能够查询活动流或刚刚播放的视频?使用 search.list,不包括 eventType 我仍然无法看到活动流。 这里有同样的问题。我的用例是我需要为特定频道查找直播。如果我删除 eventType 参数,则返回实时视频,但无法判断它是实时的,因为所有结果都有 liveBroadcastContent: none 因为我知道视频的确切标题我能够暂时使用解决方法并使用q=videonameeventType=live 找到它。使用channelId作为参数的实时视频搜索似乎被破坏了。 不幸的是,您的临时解决方案不适用于我的用例,因为关键字无法充分缩小到单个渠道。我不能保证我查询的频道会始终使用唯一的关键字。【参考方案2】:

您的搜索查询类型(与给定频道相关)可以替换为对相应channel's uploads playlist 的适当查询。

执行此操作后,请在 Videos endpoint 中查询您确定要新添加的视频集(通过您之前对 PlaylistItems endpoint 的调用)。

对于每个此类视频,请访问属性liveBroadcastContent

【讨论】:

查询频道的上传播放列表似乎不会返回活动的直播。这是我正在测试的播放列表,其中不包含活动直播:youtube.com/playlist?list=UUSJ4gkVC6NrvII8umztf0Owhttps://www.googleapis.com/youtube/v3/playlistItems?key=APP_KEY&part=contentDetails&fields=items/contentDetails&playlistId=UUSJ4gkVC6NrvII8umztf0Ow&order=date【参考方案3】:

看起来在谷歌方面发生了一些变化。将“channelId”更改为“channelID”,它应该可以工作。不过,他们的文档仍然显示 channelId,所以也许他们会改回来。

【讨论】:

你在使用search.list吗? channelId 对我来说工作正常,可以缩小到 1 个频道。 channelID 不过滤结果。【参考方案4】:

YouTube 数据 API 肯定有问题。如果您在开发人员控制台上尝试Search: list,如果您提供channelId,它将无法正常工作。但是,如果您提供channelId,它将始终返回 0 个结果。我已经在其他几个正在直播的频道上进行了尝试。

还有其他几个人发布了同样的问题。所以我们不是唯一遇到这个问题的人。 Google 需要解决一些问题。

【讨论】:

这对您来说可能是间歇性问题吗?我可以在提供channelId 的同时查询并获得结果。结果只是缺少直播,但会显示常规视频。 @danviho 它不是间歇性的。提供channelId 时不返回直播信息。目前,问题依然存在。【参考方案5】:

我希望我的贡献不会太晚。我遇到了同样的问题,当我的查询 (q) 留在新闻时,但当我将其更改为我的频道上传常用的术语时,我得到了正确的响应。 part=sn-p&type=video&event_type=live&channel_id=****&key=******&q=[youchanneltitleorkeyword]

【讨论】:

以上是关于YouTube 数据 API 不再从 search.list 返回活跃的直播流的主要内容,如果未能解决你的问题,请参考以下文章

YouTube 数据 API 某些视频不返回频道

Youtube API v3 data.search 返回相同的值

从频道获取来自 youtube api 的视频

如何从Youtube API(搜索API)响应中获取所有结果

如何使用 YouTube Data API v3 更改页面结果

YouTube Data API V3:获取多个 videoCategoryId 视频