废话不多,先上演示代码, 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 ,无平台依赖,方便各类开发者、爱好者使用。
一次开启,主播上线自动连接,下线后上线自动重连。
经过深度优化,几乎不漏过任何一条弹幕;使用抽象构架,方便修改与开发。
可以通过本命令安装 danmu :
pip install danmu
你可以在这里获取使用帮助。
消息被分为三种类型注册: 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)
如果有什么问题或者建议都可以在这个Issue和我讨论
1
shakespaces 2016-08-04 21:01:33 +08:00
做的真好,已 star
|
2
NxnXgpuPSfsIT OP @shakespaces 谢谢你的鼓励!
|
3
Yinz 2016-08-04 21:25:51 +08:00
写得很棒!正巧我最近也在对弹幕下手 XD 已经抓了 1 千多万条 B 站的弹幕了 XD
|
4
a2ex 2016-08-04 21:33:50 +08:00
lalala
|
5
GreatMartial 2016-08-04 22:01:40 +08:00
额,看过楼主写的文章。
想问一下,获取弹幕有什么用处呢? |
6
NxnXgpuPSfsIT OP @Yinz 谢谢!新版本我把 bilibili 也加进去了:)
|
7
NxnXgpuPSfsIT OP @GreatMartial
能明说的比如弹幕互动、抓素材,不能明说的比如协议号? |
8
cxyfreedom 2016-08-04 22:30:50 +08:00
看过好多次 LZ 的干货,都很不错,学习学习:)
|
9
devzero 2016-08-05 00:19:20 +08:00 via Android
没想到不用第三方包也行,之前用 aiohttp ,来看看
|
10
ETiV 2016-08-05 02:46:54 +08:00
……回头可以整理一份抓直播站视频流的技巧了……
|
11
scnace 2016-08-05 06:33:57 +08:00 via Android
star 了 有空玩
|
12
SlipStupig 2016-08-05 07:38:56 +08:00
@Yinz 请教一下,抓取这多弹幕有什么作用啊!
|
13
tempdban 2016-08-05 08:04:06 +08:00 via Android
@NxnXgpuPSfsIT 你看我眼熟不
|
14
Tink 2016-08-05 08:09:42 +08:00 via iPhone
我很早之前好像看到过楼主写的一个 c 版本的?
|
15
willike 2016-08-05 09:06:22 +08:00
start, 周末玩下.
|
16
zsx 2016-08-05 09:07:23 +08:00
哎这个不错,我过几天研究一下怎么和我的系统集成
|
17
nellace 2016-08-05 09:10:56 +08:00
其实还是挺有用的,比如根据一些视频弹幕频次算出最近流行语流行词,根据弹幕来分析那些热门主播用户群习性
当然最重要的是现在可以根据弹幕内容看 ti6 的文字直播咯, thx 楼主 |
18
zsx 2016-08-05 09:12:42 +08:00
@GreatMartial
我这里有一套在大型会场 LED 使用弹幕的解决方案,这样的话开直播后可以把 B 站的弹幕一并同步到 LED 上,互动蛮不错的 |
19
nellace 2016-08-05 09:58:17 +08:00
|
20
fxxkgw 2016-08-05 10:07:45 +08:00
这个工具意义是什么呢? 弹幕可以通过斗鱼助手这种东西抓取保存成 ass 文件的。。
|
22
NxnXgpuPSfsIT OP @tempdban 哈哈,必须的!
|
23
NxnXgpuPSfsIT OP @Tink 没有啦,那个应该不是我的
|
24
NxnXgpuPSfsIT OP |
25
fxxkgw 2016-08-05 11:01:44 +08:00
@NxnXgpuPSfsIT LZ 你好 如果直播间未开播 是不是就抓不到弹幕?
|
26
hwwh1999 2016-08-05 11:04:30 +08:00
真是好! 抓取用户登录消息,发送欢迎字符.或者自己要说话怎么弄?
|
27
Garantion 2016-08-05 11:08:06 +08:00
强 无敌!
|
28
21grams 2016-08-05 11:11:19 +08:00 via Android
百分之八十都是 666 吧
|
29
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' ``` |
30
VicYu 2016-08-05 11:43:19 +08:00
代码非常整洁,思路清楚,学习了
|
31
NxnXgpuPSfsIT OP @nellace 你把主文件的名字改一下,主文件名不能和第三方包名重复
|
32
xiahei 2016-08-05 13:09:10 +08:00
一大早就被 pythontrending 盯上了, star 了一波,很赞!
|
34
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 之间的问题。麻烦指点一二 |
35
NxnXgpuPSfsIT OP @ma125125t pip 的话升级一下 pip 吧
另外,现在啦啦啦不在直播,肯定没有弹幕的,是不是这个问题? |
36
ma125125t 2016-08-05 14:00:14 +08:00
@NxnXgpuPSfsIT 我改到 TI 的链接了,仍旧是没有任何反应。。 Url not valid 也没出现。
pip list 里没有 danmu , pip3 list 里有 danmu 。 pip 升级了,我感觉不是 pip 的问题。 |
37
NxnXgpuPSfsIT OP @ma125125t 可以报个 issue ,把代码贴一下,我试着看看是什么问题
pip 安装的问题的话是 pip 里面的东西报错,可以就报错作为关键词做一个搜索 |
38
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 |
39
IMRES 2016-08-05 14:32:34 +08:00
很棒
|
40
Shura 2016-08-05 14:47:22 +08:00
加上一个过滤功能就好了,好多无聊的弹幕
|
41
wojiaodaxiaxia 2016-08-05 23:02:51 +08:00
可以可以 谢楼楼一个
|
42
creaer 2016-08-12 11:04:40 +08:00
你好,为什么示例代码不能运行了
|
43
NxnXgpuPSfsIT OP |