问题描述
我一直在研究YouTube的实时聊天API,以便呈现一个定制的聊天提要,我想知道如何才能像YouTube网站本身那样在用户旁边显示会员/赞助商徽章?
查看API的响应,我可以看到YouTube确实告诉我用户是成员/赞助商,但它没有包括应该显示什么级别/持续时间或应该显示什么徽章图像:
{
"kind": "youtube#liveChatMessage",
"etag": "MHpDf4piJnYR2X3lP-7mwBavfWM",
"id": "LCC.CjgKDQoLd1VwYUIzYTdkVW8qJwoYVUNEWExPVjNTMEdUd21EOFY4R1A2dzlREgt3VXBhQjNhN2RVbxI7ChpDSVRodDQzS292VUNGZVV0clFZZHNJRUwzZxIdQ1B1VHJiYV9vdlVDRllhRGdnb2RaUE1LanctMjY",
"snippet": {
"type": "textMessageEvent",
"liveChatId": "Cg0KC3dVcGFCM2E3ZFVvKicKGFVDRFhMT1YzUzBHVHdtRDhWOEdQNnc5URILd1VwYUIzYTdkVW8",
"authorChannelId": "UCYC1zf9Dznp-xpe9rwEopLQ",
"publishedAt": "2022-01-08T16:31:12.317Z",
"hasDisplayContent": true,
"displayMessage": "Instead of waiting 30 seconds you had to spam facecam now you get a 5 minute timeout",
"textMessageDetails": {
"messageText": "Instead of waiting 30 seconds you had to spam facecam now you get a 5 minute timeout"
}
},
"authorDetails": {
"channelId": "UCYC1zf9Dznp-xpe9rwEopLQ",
"channelUrl": "http://www.youtube.com/channel/UCYC1zf9Dznp-xpe9rwEopLQ",
"displayName": "Cody Kerley",
"profileImageUrl": "https://yt3.ggpht.com/ytc/AKedOLQFiwv-x6ukfTOh7pD7WlCe7Ss1AB5wH7QAF53uiQ=s88-c-k-c0x00ffffff-no-rj",
"isVerified": false,
"isChatOwner": false,
"isChatSponsor": true,
"isChatModerator": true
}
}
但是,如果我查看这条消息在YouTube聊天本身中的显示方式,用户具有与其级别/持续时间相对应的正确成员资格徽章,具体针对此渠道,并且工具提示还会显示成员资格/赞助商的级别/持续时间:
如何从API获取每条聊天消息的此信息,以便我自己能够正确呈现徽章?
干杯。
推荐答案
如您所说,似乎没有任何官方的Youtube data API v3终结点为Youtube实时聊天消息提供会员徽章。
然而,我对YouTube实时聊天消息进行了反向工程,以下是解决方案:
通过执行(别忘了用您的YouTube直播视频ID更改
VIDEO_ID
)来获取以0ofMyAO
(似乎有2个都有效)开头的continuation
令牌):cURL-s‘https://www.youtube.com/live_chat?v=VIDEO_ID’-H‘用户代理:火狐/95’
使用此
CURL-s‘https://www.youtube.com/youtubei/v1/live_chat/get_live_chat?key=AIzaSyAO_FJ2SlqU8Q4STEHLGCilw_Y9_11qcW8’-H‘内容类型:应用程序/JSON’--数据-原始‘{";context";:{";client";:{";clientName";:";WEB";,";clientVersion";:";2.2022011";}},";continuation";:";CONTINUATION_TOKEN";)‘continuation
内标识通过执行(不要忘记使用您在步骤1中获取的continuation
内标识更改CONTINUATION_TOKEN
)来获取有关当前YouTube实时聊天消息的所有信息。注意:不要关心密钥,它不是YouTube Data API v3密钥):同样,从您在第1步获取
continuation
令牌的那一刻起,您将获得有关当前YouTube实时聊天消息的所有信息。但是,continuation
令牌似乎每隔5分钟过期一次,因此请从第2步的响应中获取一个新令牌。或者通过再次执行第1步。
注0:在5分钟的时间内,您可以执行步骤2。希望实时收到消息的次数都可以
注意1:我建议您每隔4分钟更换一次continuation
令牌,以免遗漏任何消息我让您了解了包含您要查找的信息片段的JSON响应
注意:在步骤1.检索在请求之前发送的最新消息,但它是HTML格式的,这次不是JSON
这篇关于如何获得YouTube即时聊天消息的会员徽章?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!