YouTube API:如何获取 liveChatId?
Posted
技术标签:
【中文标题】YouTube API:如何获取 liveChatId?【英文标题】:YouTube API: How do I get the liveChatId? 【发布时间】:2016-08-09 14:16:26 【问题描述】:文档说:
“liveChatId 参数指定将返回其消息的聊天 ID。与广播关联的实时聊天 ID 在 liveBroadcast 资源的 sn-p.liveChatId 属性中返回。”
但是当使用 APIs Explorer 和 youtube.liveBroadcasts.list 获取 liveBroadcast 的 sn-p 时,返回的结果中没有 liveChatId 属性。
我正在使用以下 URI(省略键):
https://www.googleapis.com/youtube/v3/liveBroadcasts?part=snippet&mine=true
我做错了什么?
这是响应(一些值替换为...):
"kind": "youtube#liveBroadcastListResponse",
"etag": "...",
"pageInfo":
"totalResults": 1,
"resultsPerPage": 5
,
"items": [
"kind": "youtube#liveBroadcast",
"etag": "...",
"id": "...",
"snippet":
"publishedAt": "2016-04-18T17:04:24.000Z",
"channelId": "...",
"title": "...",
"description": "...",
"thumbnails":
"default":
"url": "...",
"width": 120,
"height": 90
,
"medium":
"url": "...",
"width": 320,
"height": 180
,
"high":
"url": "...",
"width": 480,
"height": 360
,
"standard":
"url": "...",
"width": 640,
"height": 480
,
"maxres":
"url": "...",
"width": 1280,
"height": 720
,
"scheduledStartTime": "1970-01-01T00:00:00.000Z",
"actualStartTime": "2016-04-18T17:04:24.250Z",
"isDefaultBroadcast": false
]
在请求时,流上还发生了一个活跃的对话。
显然,使用“Stream now”创建的直播不包含 liveChatId,即使它们包含实时聊天。
有没有办法为“立即直播”直播获取 liveChatId?
【问题讨论】:
您能否发布从 YouTube 获得的示例回复?您确定您列出的活动已实际开始并具有有效的聊天室/ID? 用请求的信息更新了帖子。直播正在流式传输,并且聊天室在请求时处于活动状态。如果我没有流式传输,则响应中没有项目,正如预期的那样。 你说的是liveBroadcast的liveChatId还是用户的liveChatId(用于禁止或删除)? liveBroadcast 的 liveChatId,所以我可以阅读流的聊天内容。 基本上,我只需要知道从哪里获取 youtube.liveChatMessages.list 的 liveChatId,因为文档不正确。 【参考方案1】:这是一篇相当老的帖子,但是看到我在互联网上搜索了一个答案但找不到答案,我希望有人觉得这很有帮助。
要获取不属于您的直播活动的 liveChatId,您可以执行以下操作:
首先,获取videoId
response.items[0].id.videoId
然后获取 liveStreamingDetails
buildApiRequest('GET',
'/youtube/v3/videos',
'id': videoID,
'part': 'snippet,contentDetails,statistics,liveStreamingDetails'
);
现在您可以通过以下方式从上述响应中获取 liveChatId:
response.items[0].liveStreamingDetails.activeLiveChatId
【讨论】:
【参考方案2】:有没有办法为“立即直播”直播获取 liveChatId?
是的,你可以。我有一个自动化系统,它只使用这种设置来进行“立即流式传输”流。
据我所知,我所做的唯一不同的事情是在 API URI 中指定 broadcastType=all
或 broadcastType=persistent
。
您会注意到我的流是默认流,但并非必须如此。事实上,基本上LiveStream
端点唯一有用的方面就是.status.configurationIssues
信息。 (甚至 streamName
摄取地址都不匹配)
这就是我将两个端点关联起来的方式。也许您可以使用此模板填写一些空白。 (所有字符串随机化,thumbnails
部分已删除)
直播:
URI:https://www.googleapis.com/youtube/v3/liveStreams/?part=status,sn-p&default=true回应:
"kind": "youtube#liveStreamListResponse", "etag": "\"j1yhvAPYkjsoF8yjoVGsTlIFzCS/rqgpDvaMrWOPqUrLPxJd4XUFoKg\"", “页面信息”: “总结果”:1, “结果每页”:5 , “项目”: [ "kind": "youtube#liveStream", "etag": "\"j1yhvAPYkjsoF8yjoVGsTlIFzCS/SRutyOE9apA9K1qAdh2s9ZYE-Dp\"", "id": "e5LT2xEURi9BQzf2rLe5eB3325081929219850", “sn-p”: “发布时间”:“2016-09-05T23:21:33.000Z”, "channelId": "QIr0IE1wRTRj2SUku4eFj0mK", "title": "默认流", “描述”: ””, “isDefaultStream”:真 , “状态”: "streamStatus": "活动", “健康状况”: “状态”:“好” ]直播:
URI:https://www.googleapis.com/youtube/v3/liveBroadcasts/?part=status,contentDetails,sn-p,id&broadcastStatus=active&broadcastType=persistent回应:
"kind": "youtube#liveBroadcastListResponse", "etag": "\"j1yhvAPYkjsoF8yjoVGsTlIFzCS/MFvQunCBDdqlkhPMness6LN1zao\"", “页面信息”: “总结果”:1, “结果每页”:5 , “项目”: [ "kind": "youtube#liveBroadcast", "etag": "\"j1yhvAPYkjsoF8yjoVGsTlIFzCS/mK_CAQ9rrVulNXbKbeIveFnQPd8\"", "id": "eXrevq9RzVQ", “sn-p”: “发布时间”:“2017-05-07T16:58:05.000Z”, "channelId": "QIr0IE1wRTRj2SUku4eFj0mK", "title": "514306-pgju", “描述”: ””, “scheduledStartTime”:“1970-01-01T00:00:00.000Z”, "actualStartTime": "2017-05-08T01:21:45.000Z", “isDefaultBroadcast”:真, "liveChatId": "NiHXTCKPfAyCJrPgREDRnvMSL0N5LBiVUlZoLSULA9vqyoR" , “状态”: "lifeCycleStatus": "生活", "privacyStatus": "未列出", “录音状态”:“录音” , “内容详细信息”: "boundStreamId": "e5LT2xEURi9BQzf2rLe5eB3325081929219850", "boundStreamLastUpdateTimeMs": "2016-09-05T23:21:33.749Z", “监控流”: “启用监视器流”:假 , “启用嵌入”:是的, “enableDvr”:是的, “启用内容加密”:假, “startWithSlate”:假, “recordFromStart”:真, “enableClosedCaptions”:假, "closedCaptionsType": "closedCaptionsDisabled", “启用LowLatency”:假, “投影”:“矩形” ]请注意,正如您在一定程度上注意到的那样,通过 API 处理“Stream Now”事件,不仅仅是特定于 liveChatId
,还有一些配置设置会更改使用默认参数返回结果的方式,有时他们可以更改流程中涉及的顺序和步骤。我什至发现实际上有一些参数可用于未记录的LiveStream
端点,LiveBroadcast
端点也是如此。 另外还有一些bug。
【讨论】:
【参考方案3】:YouTube 目前不支持将 API 调用与“立即直播”混合使用以及通过 API 创建事件。无法从“Stream Now”广播中获取聊天消息,只能使用完全使用 API 创建的广播。
如果您认为这是 API 缺陷,我建议您打开增强或缺陷票 here。
【讨论】:
这并不完全正确。您可以手动创建实时事件并从该流中获取聊天消息。但是您对“立即流式传输”是正确的。谢谢。 :) @C.Olimar :可以确认手动创建事件有效。谢谢:) @AvindraGoolcharan 你能提供代码提示如何做到这一点吗? @KMX 根据我的评论,我“手动”创建了该事件 - 即不涉及任何代码。只需使用 YouTube 的用户界面以上是关于YouTube API:如何获取 liveChatId?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Youtube API 获取 Youtube 频道横幅?
如何使用 Youtube Javascript API 获取 youtube 用户的观看历史记录?