Giter Club home page Giter Club logo

Comments (26)

songtianyi avatar songtianyi commented on July 19, 2024 2

@fuzhuo
@subtank
chatroom --> chatinfo

from danmu.

songtianyi avatar songtianyi commented on July 19, 2024 1
import time, sys

from danmu import DanMuClient

def pp(msg):
    print(msg.encode(sys.stdin.encoding, 'ignore').
        decode(sys.stdin.encoding))

#dmc = DanMuClient('https://www.douyu.com/32892')
#dmc = DanMuClient('https://live.bilibili.com/324')
dmc = DanMuClient('https://www.panda.tv/66666')

if not dmc.isValid(): print('Url not valid')

@dmc.danmu
def danmu_fn(msg):
    pp('[%s] %s' % (msg['NickName'], msg['Content']))

@dmc.gift
def gift_fn(msg):
    pp('[%s] sent a gift!' % msg['NickName'])

@dmc.other
def other_fn(msg):
    pp('Other message received')

dmc.start(blockThread=True)

+1

from danmu.

subtank avatar subtank commented on July 19, 2024

顶一个

from danmu.

subtank avatar subtank commented on July 19, 2024

@songtianyi ???

from danmu.

subtank avatar subtank commented on July 19, 2024

后一条看不懂,修改哪里

from danmu.

qiudaomao avatar qiudaomao commented on July 19, 2024

@songtianyi thanks, 看起来可以
http 'http://www.panda.tv/ajax_chatinfo?roomid=66666&_=1500220999'

from danmu.

subtank avatar subtank commented on July 19, 2024

@songtianyi 搞定,万分感谢。
@fuzhuo 你去修改一下Python\Lib\site-packages\danmu\目录下的32行代码就好了

from danmu.

songtianyi avatar songtianyi commented on July 19, 2024

@subtank
你们能连上服务器不,我这边还是没反应

from danmu.

subtank avatar subtank commented on July 19, 2024

@songtianyi 可以了,你要修改我说的那个文件对应位置

from danmu.

songtianyi avatar songtianyi commented on July 19, 2024

@subtank
改了啊,是我提出的方法啊

from danmu.

subtank avatar subtank commented on July 19, 2024

那就不知道了

from danmu.

qiudaomao avatar qiudaomao commented on July 19, 2024

@subtank 提个PR吧

from danmu.

songtianyi avatar songtianyi commented on July 19, 2024

@subtank
@fuzhuo
你们了解他发的内容不,我不是很懂python
第一个包

4 byte 消息类型

2 byte 数据大小,不包括消息类型

数据

4 byte 心跳包

不知道为什么第一个认证包 要带上心跳包

from danmu.

qiudaomao avatar qiudaomao commented on July 19, 2024

@songtianyi
我是做了个objc的实现,第一个心跳包是单独发的不是带上的吧?
难道不是先发个房间认证包,包含rid appid ts sign authType之类的
再发第一个心跳包
接下来进入异步读取弹幕消息的循环
然后开始定时发心跳包

from danmu.

songtianyi avatar songtianyi commented on July 19, 2024

@fuzhuo
作者的第一个心跳包是和认证包一起的。
你的能work不?

from danmu.

qiudaomao avatar qiudaomao commented on July 19, 2024

@songtianyi 可以work,我是分开发的,tvOS上正常弹幕。但没试过不知道第一个心跳包有没有时间限制,也许在超时前发就好了

from danmu.

songtianyi avatar songtianyi commented on July 19, 2024

@fuzhuo
你是按照我刚才说的 协议方式发的不?
数据大小 2个字节,一般都是用4个字节的,所以我有点怀疑。

from danmu.

qiudaomao avatar qiudaomao commented on July 19, 2024

@songtianyi 发送时数据大小不是两个字节而是一个字节吧,也许熊猫觉得进入房间的字符串长度是比较固定的不会超过256一个字节足以。这个python里第一个心跳确实一起发了,我分开发也没问题
data = (b'\x00\x06\x00\x02\x00' + pack('B', len(data)) +
data.encode('utf8') + b'\x00\x06\x00\x00')

from danmu.

songtianyi avatar songtianyi commented on July 19, 2024

@fuzhuo
两个字节啊,

\x00\x06\x00\x02\x00

最后的\x00 其实是长度的前半部分,作者的实现是有问题的。
你是直接用的他的代码还是自己开发的?

from danmu.

qiudaomao avatar qiudaomao commented on July 19, 2024

@songtianyi 嗯,多谢,你这样理解应该更合理,多出一字节有点怪怪的,可能在实际使用过程中长度没遇到过超过256,于是那个字节固定是0x00,所以作者的实现暂时使用不会出问题。我的是自己开发的oc版,但协议跟作者的实现用的一样的

from danmu.

songtianyi avatar songtianyi commented on July 19, 2024

@fuzhuo
看来我还是得自己抓包看下才行

from danmu.

qiudaomao avatar qiudaomao commented on July 19, 2024

@songtianyi 除非遇到验证包的长度值一个字节容纳不了才能验证你的想法,估计很难验证了

from danmu.

songtianyi avatar songtianyi commented on July 19, 2024

目前来看,panda的弹幕协议设计的比较混乱,收到的包不带长度,固定以ack开头,中间有一段不固定长度的内容,之后是json弹幕。
buffer要留的足够大即可。

from danmu.

songtianyi avatar songtianyi commented on July 19, 2024

不过我跑一段时间 会出现EOF

from danmu.

subtank avatar subtank commented on July 19, 2024

@fuzhuo 又挂了求帮忙。

from danmu.

rwifeng avatar rwifeng commented on July 19, 2024

又挂了

from danmu.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.