如何获取 YouTube 实时聊天消息的表情?

问题描述 投票:0回答:2

我一直在使用 YouTube 实时聊天 API 来渲染 YouTube 实时流聊天,但我对如何处理表情感到困惑。

用于实时聊天消息的 YouTube API 似乎只以纯文本形式返回消息,而不是有关表情的元数据。这本身很好,因为纯文本中的表情有标准语法,但我正在努力解决如何将它们转换为图像的问题。

如果我查看从 YouTube API 获得的响应,除了纯文本消息中的内容之外,我看不到任何有关表情的信息:

{
  "kind": "youtube#liveChatMessage",
  "etag": "UaRmhczzavJeCA9S1_s8J_4MHD0",
  "id": "LCC.CjgKDQoLd1VwYUIzYTdkVW8qJwoYVUNEWExPVjNTMEdUd21EOFY4R1A2dzlREgt3VXBhQjNhN2RVbxJFChpDT25vOHN6SW92VUNGZUFJMWdBZE85b1BfZxInQ1BhdG12UEhvdlVDRlhzNFRBb2RVSE1BeVExNjQxNjU5MDY5OTU3",
  "snippet": {
    "type": "textMessageEvent",
    "liveChatId": "Cg0KC3dVcGFCM2E3ZFVvKicKGFVDRFhMT1YzUzBHVHdtRDhWOEdQNnc5URILd1VwYUIzYTdkVW8",
    "authorChannelId": "UC_MMOdc84fer50_SIPiPX1Q",
    "publishedAt": "2022-01-08T16:24:28.363Z",
    "hasDisplayContent": true,
    "displayMessage": ":yougotthis::elbowcough:",
    "textMessageDetails": {
      "messageText": ":yougotthis::elbowcough:"
    }
  },
  "authorDetails": {
    "channelId": "UC_MMOdc84fer50_SIPiPX1Q",
    "channelUrl": "http://www.youtube.com/channel/UC_MMOdc84fer50_SIPiPX1Q",
    "displayName": "Blake Nolan",
    "profileImageUrl": "https://yt3.ggpht.com/ytc/AKedOLSVNcUaOuoH49GXdG1Zlam0uBMJYJXUI5h_pHtMr-rOVr5hDnjzspewBUVqgKyw=s88-c-k-c0x00ffffff-no-rj",
    "isVerified": false,
    "isChatOwner": false,
    "isChatSponsor": false,
    "isChatModerator": false
  }
}

但是如果我看看这条消息在 YouTube 聊天中的显示方式,就会呈现表情:

我自己执行此查找和转换以便可以从聊天消息中呈现表情,我缺少什么?

干杯。

youtube youtube-api youtube-data-api youtube-livestreaming-api
2个回答
0
投票

要完成我的回答来自你的其他问题关于这个精确的问题:

通过运行步骤 1,您将在请求之前收到以 HTML 格式发送的实时消息,其中的表情符号格式为 :emote:,但随后会收到表情符号图像的 URL。

通过运行所有步骤,您将获得以 JSON 格式实时发送的实时消息,同样,您将获得带有 :emote: 格式的表情的实时聊天消息,但随后会收到表情图像的 URL。

我让你了解 HTML 和 JSON 格式。

注意:我还发现,在对 0 到 8 之间的

https://www.gstatic.com/youtube/img/emojis/emojis-svg-N.json
N
进行反向工程时,它们会返回一堆链接到其图像 URL 的表情代码,但是像您所说的一些表情并不在这些文件中不知道为什么。


0
投票

2024年呼唤,

我正在尝试执行相同的操作,以在流元素的自定义 twitch + youtube 聊天小部件中获取表情,因此我尝试在聊天的网络请求中查找表情...... 我找到了它们,但是...

整个内容仅包含在聊天返回的 HTML 中的脚本标记内,并保存到

window["ytInitialData"]
对象中,并且可以通过
window["ytInitialData"].contents.liveChatRenderer.emojis
访问。该对象包含表情选择器中显示的所有表情的数组(包括频道唯一的表情)

因此,只要您找到一种方法来获取正确的频道聊天,对其进行解析,并获取具有

window["ytInitialData"]
的脚本内容,您应该能够执行您需要的操作(我还没有达到这一点,我会在我这样做之后更新这个,主要是把它留在这里,以防有人有一个聪明的方法来做到这一点或者比我更快)。

© www.soinside.com 2019 - 2024. All rights reserved.