Open xiaoweigege opened 3 years ago
https://github.com/yjqiang/danmu/blob/master/examples/huya/utils.py 这个应该是通用的,原版有 js 的,我是手动翻译过来的。核心是调用了 https://github.com/yjqiang/danmu/tree/master/examples/huya/tars ,这个是我找到 tar 项目,复制的
@yjqiang 请问下, 我在翻译 getLivingInfo 检测开播状态的结构发现一个叫做 Taf.Wup
的对象, 好像在 https://github.com/TarsCloud/TarsTup 这里没找到, 大概长这样
var s = new p.Wup;
s.setServant(t),
s.setFunc(e),
s.setRequestId(r),
s.writeStruct("tReq", i);
var a = new l.WebSocketCommand;
a.iCmdType = l.EWebSocketCommandType.EWSCmd_WupReq,
a.vData = s.encode();
var u = c.report.getTraceId(r);
u && (a.traceId = u + "-" + u);
var h = new p.JceOutputStream;
a.writeTo(h),
c.report.setField(r, "unipacket_encode_end")
有点没搞懂这里的 writeStruct
跟后面的 encode
如何翻译成 python 代码
我目前的做法是通过 node 调用翻译不了的 js 代码, 把结果解析后回传给 python https://github.com/hldh214/recorder/blob/598b17f69714d3d277ed7b6e8f9c1e50ce232ff6/recorder/source/taf.js#L6001-L6032 不知道有没有啥好方法可以把 js 翻译过来
我建议别折腾,转 js。 这东西估计只能像我这样,你发现有需要的 pattern,就去 js 里面找到匹配代码段,翻译一部分转成 py。
刚刚研究了一下, 发现 tarscore.TarsUniPacket()
好像跟 Taf.Wup()
类似, 都有 servant
, func
, requestid
这些, 组装消息发给虎牙终于能收到响应了, 但是是提示 type mismatch
, 也不知道具体是啥地方没对上... 这东西硬翻译感觉太难了. 找不到其他方法估计我还是只能先用 js 顶着了.
请问虎牙的 tars 对象 是怎么转换成 python的