有了 danmu,二十行代码轻松愉快对弹幕进行二次开发

2016-08-04 20:51:03 +08:00
 NxnXgpuPSfsIT

废话不多,先上演示代码, py2 与 py3 及全平台支持。

源代码见这里,欢迎 Star 与 Fork 。

import time, sys

from danmu import DanMuClient

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

dmc = DanMuClient('http://www.douyu.com/lslalala')
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!' % content['NickName'])

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

dmc.start(blockThread = True)

danmu 是一个开源的直播平台弹幕接口,使用他没什么基础的你也可以轻松的操作各平台弹幕。

使用不到三十行代码,你就可以使用 Python 基于弹幕进一步开发。

支持斗鱼、熊猫、战旗、全民多平台弹幕。

支持各版本 Python ,无平台依赖,方便各类开发者、爱好者使用。

一次开启,主播上线自动连接,下线后上线自动重连。

经过深度优化,几乎不漏过任何一条弹幕;使用抽象构架,方便修改与开发。

Installation

可以通过本命令安装 danmu :

pip install danmu

Screenshot

Documents

你可以在这里获取使用帮助。

Advanced uses

设置默认的消息处理方式

消息被分为三种类型注册: danmu, gift, other

分别对应:普通弹幕,礼物消息,其他消息

如果某种类型没有注册过,将会使用默认方法,默认方法的注册方式如下:

from danmu import DanMuClient

dmc = DanMuClient('http://www.douyu.com/lslalala')

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

取消已经注册过的方法

通过以下方式可以取消某一种类型的注册。

from danmu import DanMuClient

dmc = DanMuClient('http://www.douyu.com/lslalala')
dmc.default(None)
dmc.gift(None)

Comments

如果有什么问题或者建议都可以在这个Issue和我讨论

或者也可以在 gitter 上交流:

7670 次点击
所在节点    Python
44 条回复
fxxkgw
2016-08-05 10:09:17 +08:00
@fxxkgw LZ 我理解错了 抱歉!
NxnXgpuPSfsIT
2016-08-05 10:19:19 +08:00
@tempdban 哈哈,必须的!
NxnXgpuPSfsIT
2016-08-05 10:20:03 +08:00
@Tink 没有啦,那个应该不是我的
NxnXgpuPSfsIT
2016-08-05 10:22:18 +08:00
@nellace 试一下这两个操作
1. pip list 看一下有没有安装好
2. python -c "from danmu import DanMuClient"这个命令会有问题吗?
fxxkgw
2016-08-05 11:01:44 +08:00
@NxnXgpuPSfsIT LZ 你好 如果直播间未开播 是不是就抓不到弹幕?
hwwh1999
2016-08-05 11:04:30 +08:00
真是好! 抓取用户登录消息,发送欢迎字符.或者自己要说话怎么弄?
Garantion
2016-08-05 11:08:06 +08:00
强 无敌!
21grams
2016-08-05 11:11:19 +08:00
百分之八十都是 666 吧
nellace
2016-08-05 11:21:21 +08:00
pip list 没问题 里面有 danmu(1.02)

```bash
(ENV)20152015:Desktop wn$ python -c "from danmu import DanMuClient"
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/Users/wn/Desktop/danmu.py", line 4, in <module>
from danmu import DanMuClient
ImportError: cannot import name 'DanMuClient'
```
VicYu
2016-08-05 11:43:19 +08:00
代码非常整洁,思路清楚,学习了
NxnXgpuPSfsIT
2016-08-05 12:26:02 +08:00
@nellace 你把主文件的名字改一下,主文件名不能和第三方包名重复
xiahei
2016-08-05 13:09:10 +08:00
一大早就被 pythontrending 盯上了, star 了一波,很赞!
nellace
2016-08-05 13:21:33 +08:00
@nellace 我的天 蠢了蠢了,真的是这个问题, thx 楼主
ma125125t
2016-08-05 13:44:44 +08:00
使用 pip install danmu ,报安装错误
Exception:
Traceback (most recent call last):
File "/Library/Python/2.7/site-packages/pip-7.1.0-py2.7.egg/pip/basecommand.py", line 223, in main
status = self.run(options, args)

改用 python3 和 pip3 后可以正常安装, python3 demo.py 后无任何反应
不熟悉 python ,感觉是 python2 , 3 之间的问题。麻烦指点一二
NxnXgpuPSfsIT
2016-08-05 13:55:07 +08:00
@ma125125t pip 的话升级一下 pip 吧
另外,现在啦啦啦不在直播,肯定没有弹幕的,是不是这个问题?
ma125125t
2016-08-05 14:00:14 +08:00
@NxnXgpuPSfsIT 我改到 TI 的链接了,仍旧是没有任何反应。。 Url not valid 也没出现。
pip list 里没有 danmu , pip3 list 里有 danmu 。 pip 升级了,我感觉不是 pip 的问题。
NxnXgpuPSfsIT
2016-08-05 14:12:20 +08:00
@ma125125t 可以报个 issue ,把代码贴一下,我试着看看是什么问题
pip 安装的问题的话是 pip 里面的东西报错,可以就报错作为关键词做一个搜索
ma125125t
2016-08-05 14:16:35 +08:00
@NxnXgpuPSfsIT 等了一段时间后报错

fangs-mac:danmu fang$ python3 a.py
^CTraceback (most recent call last):
File "a.py", line 24, in <module>
dmc.start(blockThread = True)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/danmu/__init__.py", line 55, in start
self.__client.start()
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/danmu/Abstract.py", line 29, in start
time.sleep(self.anchorStatusRescanTime)
KeyboardInterrupt
IMRES
2016-08-05 14:32:34 +08:00
很棒
Shura
2016-08-05 14:47:22 +08:00
加上一个过滤功能就好了,好多无聊的弹幕

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/297196

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX