有了 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 上交流:

7557 次点击
所在节点    Python
44 条回复
shakespaces
2016-08-04 21:01:33 +08:00
做的真好,已 star
NxnXgpuPSfsIT
2016-08-04 21:09:59 +08:00
@shakespaces 谢谢你的鼓励!
Yinz
2016-08-04 21:25:51 +08:00
写得很棒!正巧我最近也在对弹幕下手 XD 已经抓了 1 千多万条 B 站的弹幕了 XD
a2ex
2016-08-04 21:33:50 +08:00
lalala
GreatMartial
2016-08-04 22:01:40 +08:00
额,看过楼主写的文章。
想问一下,获取弹幕有什么用处呢?
NxnXgpuPSfsIT
2016-08-04 22:27:46 +08:00
@Yinz 谢谢!新版本我把 bilibili 也加进去了:)
NxnXgpuPSfsIT
2016-08-04 22:28:21 +08:00
@GreatMartial
能明说的比如弹幕互动、抓素材,不能明说的比如协议号?
cxyfreedom
2016-08-04 22:30:50 +08:00
看过好多次 LZ 的干货,都很不错,学习学习:)
devzero
2016-08-05 00:19:20 +08:00
没想到不用第三方包也行,之前用 aiohttp ,来看看
ETiV
2016-08-05 02:46:54 +08:00
……回头可以整理一份抓直播站视频流的技巧了……
scnace
2016-08-05 06:33:57 +08:00
star 了 有空玩
SlipStupig
2016-08-05 07:38:56 +08:00
@Yinz 请教一下,抓取这多弹幕有什么作用啊!
tempdban
2016-08-05 08:04:06 +08:00
@NxnXgpuPSfsIT 你看我眼熟不
Tink
2016-08-05 08:09:42 +08:00
我很早之前好像看到过楼主写的一个 c 版本的?
willike
2016-08-05 09:06:22 +08:00
start, 周末玩下.
zsx
2016-08-05 09:07:23 +08:00
哎这个不错,我过几天研究一下怎么和我的系统集成
nellace
2016-08-05 09:10:56 +08:00
其实还是挺有用的,比如根据一些视频弹幕频次算出最近流行语流行词,根据弹幕来分析那些热门主播用户群习性
当然最重要的是现在可以根据弹幕内容看 ti6 的文字直播咯, thx 楼主
zsx
2016-08-05 09:12:42 +08:00
@GreatMartial
我这里有一套在大型会场 LED 使用弹幕的解决方案,这样的话开直播后可以把 B 站的弹幕一并同步到 LED 上,互动蛮不错的
nellace
2016-08-05 09:58:17 +08:00
python3
pip install danmu 后写了一个 model.py ,内容就是 demo 里面内容
报 cannot import name 'DanMuClient'不知道怎么回事
fxxkgw
2016-08-05 10:07:45 +08:00
这个工具意义是什么呢? 弹幕可以通过斗鱼助手这种东西抓取保存成 ass 文件的。。

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

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

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

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

© 2021 V2EX