如何获取 YouTube 频道表情符号列表?

How to get a list of YouTube channel emojis?

我想从 YouTube 实时聊天(网址或图片)中获取表情符号列表。例如来自 this channel 的表情符号。有没有办法让他们使用 youtube 直播 api?

不确定这些表情符号是否可以通过任何 API 获得,但是,您可以获得这些表情符号的一种方法是:

  • 点击任一频道表情符号列表。
  • 将出现一个新的 window“加入该频道”。
  • Right-click 来自频道的任何表情符号 > 检查元素 > 获取 URLS

以下屏幕截图显示了上述步骤的结果:

来自 YouTube 频道 ChilledCow 的

URL 个表情符号:

补充说明:您可以更改表情符号的大小 - 通过更改 URL:

中的值

表情符号示例 - :_studynight:

https://yt3.ggpht.com/qKW3_-A6jHFQ5Jqg43ETtH0fdXnxsS8K1YNvz1jlRb9KBa8sRYBEVnucvy54LUU6yWz2kDULLZk=w100-h100-c-k-nd

wh 的值更改为:

k=w100-h100-c-k-nd

至:

k=w300-h300-c-k-nd

已修改 URL - :_studynight

我写了一个小脚本来获取浏览器控制台中由空格分隔的名称/url 对列表。

Array.from(document.querySelectorAll('img[role="option"][class*="emoji"][aria-label^=":"]').values()).slice(0, 20).map(e => e.getAttribute('aria-label') + ' ' + e.getAttribute('src')).join('\n');

类似于@Γариша-Γалустян,但是这将获取所有频道表情并将它们输出为具有 codesrc 属性的对象。

此外,聊天框位于 iframe 中,可能没有 querySelector() 正常工作的上下文。

因此,要获取包含所有频道表情的对象:

  1. 转到有表情的频道
  2. 在聊天框中,单击输入框附近的图标以加载表情符号选择器。等待大约一秒钟,以便加载频道的所有图像。
  3. 运行 下面是完整的脚本。 frameContext() 将确保 querySelector() 使用正确的文档库。
let frameContext = function () {
    let frameContext = document.querySelector('ytd-live-chat-frame iframe');

    if (frameContext) {
        frameContext = frameContext.contentDocument.body;
    } else {
        frameContext = document.body;
    }

    return frameContext;
};

Array.from(
    frameContext()
        .querySelector(
            '#categories-wrapper #categories .yt-emoji-picker-renderer'
        )
        .querySelectorAll('img[role="option"][class*="emoji"][aria-label^=":"]')
        .values()
).map((e) => ({ code: e.alt, src: e.src }));