如何获取 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
将 w
和 h
的值更改为:
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');
类似于@Γариша-Γалустян,但是这将获取所有频道表情并将它们输出为具有 code
和 src
属性的对象。
此外,聊天框位于 iframe 中,可能没有 querySelector()
正常工作的上下文。
因此,要获取包含所有频道表情的对象:
- 转到有表情的频道
- 在聊天框中,单击输入框附近的图标以加载表情符号选择器。等待大约一秒钟,以便加载频道的所有图像。
- 运行 下面是完整的脚本。
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 }));
我想从 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
将 w
和 h
的值更改为:
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');
类似于@Γариша-Γалустян,但是这将获取所有频道表情并将它们输出为具有 code
和 src
属性的对象。
此外,聊天框位于 iframe 中,可能没有 querySelector()
正常工作的上下文。
因此,要获取包含所有频道表情的对象:
- 转到有表情的频道
- 在聊天框中,单击输入框附近的图标以加载表情符号选择器。等待大约一秒钟,以便加载频道的所有图像。
- 运行 下面是完整的脚本。
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 }));