- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想将来自 Twitch 的 IRC 消息解析为字典列表,以解释表情。
以下是我可以从 Twitch 获得的示例:
"Testing. :) Confirmed!"
{"emotes": [(1, (9, 10))]}
它描述了从字符 9 到 10 存在 ID 为 1 的表情(字符串为零索引)。
我希望我的数据采用以下格式:
[
{
"type": "text",
"text": "Testing. "
},
{
"type": "emote",
"text": ":)",
"id": 1
},
{
"type": "text",
"text": " Confirmed!"
}
]
有没有一种相对干净的方法来实现这一点?
最佳答案
我不确定您收到的消息是否如下所示:
message = '''\
"Testing. :) Confirmed!"
{"emotes": [(1, (9, 10))]}'''
或者
text = "Testing. :) Confirmed!"
meta = '{"emotes": [(1, (9, 10))]}'
我假设是后者,因为很容易从前者转换为后者。也可能这些是 python 表示。你没说清楚。
有一种大大更好的方法来解决这个问题,即不使用正则表达式而仅使用字符串解析:
import json
text = 'Testing. :) Confirmed! :P'
print(len(text))
meta = '{"emotes": [(1, (9, 10)), (2, (23,25))]}'
meta = json.loads(meta.replace('(', '[').replace(')', ']'))
results = []
cur_index = 0
for emote in meta['emotes']:
results.append({'type': 'text', 'text': text[cur_index:emote[1][0]]})
results.append({'type': 'emote', 'text': text[emote[1][0]:emote[1][1]+1],
'id': emote[0]})
cur_index = emote[1][1]+1
if text[cur_index:]:
results.append({'type': 'text', 'text': text[cur_index:]})
import pprint; pprint.pprint(results)
<小时/>
根据您的评论,数据采用自定义格式。我从评论中复制/粘贴了一些字符,我不确定实际上是否出现在传入的数据中,我希望我的部分正确。消息中也只有一种类型的表情,所以我不完全确定它如何表示多种不同的表情类型 - 我希望有一些分隔符而不是多个 emote=
部分,或者这个方法需要一些重大修改,但这应该提供不需要正则表达式的解析。
from collections import namedtuple
Emote = namedtuple('Emote', ('id', 'start', 'end'))
def parse_emotes(raw):
emotes = []
for raw_emote in raw.split('/'):
id, locations = raw_emote.split(':')
id = int(id)
locations = [location.split('-')
for location in locations.split(',')]
for location in locations:
emote = Emote(id=id, start=int(location[0]), end=int(location[1]))
emotes.append(emote)
return emotes
data = r'@badges=moderator/1;color=#0000FF;display-name=2Cubed;emotes=25:6-10,12-16;id=05aada01-f8c1-4b2e-a5be-2534096057b9;mod=1;room-id=82607708;subscriber=0;turbo=0;user-id=54561464;user-type=mod:2cubed!2cubed@2cubed.tmi.twitch.tv PRIVMSG #innectic :Hiya! Kappa Kappa'
meta, msgtype, channel, message = data.split(' ', maxsplit=3)
meta = dict(tag.split('=') for tag in meta.split(';'))
meta['emotes'] = parse_emotes(meta['emotes'])
关于python - 如何将 Twitch IRC 响应中的表情解析为字典列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38382703/
Youtube 等视频共享网站有一个视频缩略图端点 示例:http://img.youtube.com/vi/youtube_id/default.jpg 其中 youtube_id = 视频的id
我最近创建了一个 twitch 面板扩展,但我不知道如何上传它并使其可供安装。我看过 Twitch 扩展文档,但没有找到如何上传扩展。如果有人知道如何做到这一点,请分享您的知识。 这是我看过的文档ht
我想在我的网站中嵌入一个 twitch 流,但我希望它不会在您转到该页面时自动播放。我将如何在 iFrame 中执行此操作?我在 Internet 上找不到任何地方。 Watch live video
Twitch 引入了一项功能,当您打开流页面并导航到网站的不同部分时,允许视频在左下角继续播放而不会中断。这甚至在按下浏览器中的后退按钮时也有效,只有在关闭选项卡或手动输入您要转到的 URL 时才会中
只是想知道是否有使用 JQuery 或 twitch API 经验的人可以帮忙解决这个问题。基本上我试图获取用户名,但我不想单击按钮或将其显示在输入框中。 以下是 API 示例中的代码: $('#
我正在努力做到这一点,以便我可以在我的 twitch 机器人中注册第二部分:!test [var]。基本上,如果他们说 !test @jeff,它就可以说你好@jeff。 我正在使用tmi clien
我正在从辉煌的 tup 切换(或尝试)至 haskell shake作为我的构建系统.. 只是我不知道如何在更改时重建文件。 我当然可以使用 inotify 或像 filewatcher 这样的包装器
我想检索正在直播代码的用户列表。 此端点将提供直播流列表: curl -H 'Accept: application/vnd.twitchtv.v3+json' -X GET https://api.
我想为存档的 twitch 视频设置当前时间(例如 https://www.twitch.tv/videos/319946452)。我试过使用 video.currentTime 或模拟点击坐标但都没
所以我正在为我的 channel 开发一个基本的 Twitch Bot,代码如下: 配置.java import java.io.IOException; import org.jibble.pirc
我目前正在从事一个项目,为一家公司开发电子竞技流媒体日历。该应用程序运行良好,但问题是 twitch 仅允许您流式传输 flash,而对于 Android,在 Google 决定取消支持后,它就不能正
我刚刚尝试将 twitch.tv 聊天移到左侧,因为在左侧阅读聊天会更舒服。 我在 tampermonkey 中使用了这个脚本: document.addEventListener("DOMConte
我目前正在为 friend 的 twitch 流制作一个网站,我对如何实现 twitch 流感到非常困惑。我已经创建了一个带有“Twitchscreen”类的 div,但我不知道如何链接到 twitc
我知道这之前已经做过很多次了,但我对编码场景很陌生(相对较新)并且喜欢摆弄东西。我从来没有设法让任何东西真正发挥作用,对我来说没有用。我正在尝试制作一个 chrome 扩展,显示当前正在播放的在线《反
我对 CSS 中的 :hover 有疑问。 这是我的导航菜单 HTML 代码: 2D 3D 这是 CSS 代码: .nav { position: absolute; f
我想使用以下代码访问 twitch api。 package droa.app.twitch; import java.io.BufferedReader; import java.io.IOExce
我正在尝试为本地流媒体社区制作索引。 我正在着手编写一些模板代码。 下面是一个模型 - 勾号代表实时,X 代表离线(我的最终产品会更有吸引力 - 这只是为了可视化。) 我的代码模板 Title
我正在尝试为我 friend 的直播制作一个 Twitch 机器人,但在让它发送消息(或识别命令)时遇到一些问题。 我的代码: import socket,string HOST = "irc.twi
我开始使用 Python 制作一个简单的 Twitch 聊天机器人。连接正常,还可以看到其他人在聊天中发送的消息。然而,我的问题是,在使用命令时我似乎无法检测到它们。我可以获取聊天条目的用户名和消息,
我正在使用 Twitch api 和 python 来获取特定游戏(例如 Dota 2)的观众总数。以下代码获取游戏的当前观看人数: import requests def main(): h
我是一名优秀的程序员,十分优秀!