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=videoname
和eventType=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 v3 data.search 返回相同的值
如何从Youtube API(搜索API)响应中获取所有结果