概述:
最近迷上王者荣耀张大仙的虎牙直播,除了大仙幽默风趣解说之外,粉丝的弹幕互动也比较搞笑,一般大v的直播房间,弹幕满屏,不太方便看,突发奇想是是否可以做一款工具,动态获取直播房间的弹幕信息, 通过工具逐条可以逐条看弹幕信息,闲话不说,分享下实现细节,一起来探讨下。此文仅供学习参考,其他人用于商业用途,造成其他问题,与本文作者无关哈。本文主要用nodejs实现一款小工具。
虎牙弹幕动态获取
这个是做这个工具的核心点,其实也比较简单,主要用了nodejs第三方库huya-danmu,一个虎牙直播动态监听库,可以理解是用一个webserver,本地可以new一个对象,其实就是一个client,实时监听server传送的弹幕、刷礼物、人气等实时信息。详细使用方法,可以看这个连接:https://www.npmjs.com/package/huya-danmu
动态库安装方法,npm install huya-danmu
工具界面
有了虎牙弹幕获取方式,需要有个工具界面,可以输入一个房间号,点击获取,可以在界面上动态打印实时动态弹幕信息,或者弹幕也可以保存到文件中。
这里用了nodejs库carlo,做了一个桌面软件,对,你没听错,nodejs除了可以做web应用,也可以做桌面软件,其实说是桌面软件,其实也不完全是,这个库的本质是这个本身有个浏览器的外壳,本身提供了一个框架,可以把开发者自己写的前端静态页面,基于这个浏览器外壳上运行,那样,启动运行之后,用户看到的效果是启动了一个浏览器(内置的),浏览器上选染用的html页面,和打开一个桌面app是一样的效果,哈哈,废话不多说,下面介绍下工具的代码。
代码解析
工具包括两个模块,server端,使用carlo选染的一个静态页面,页面上有个表单,信息打印区域,为了实现server端和页面(client)信息交互(房间号、弹幕),server端同时启动了一个webserver,上代码
![4763f6224e6aef0e5ce390f991b96e5f.png](https://i-blog.csdnimg.cn/blog_migrate/22957a2902a61decf6dff1a28b29ca96.jpeg)
server.js
server.class 内部通过,监听到前端的连接之后,实时的接受消息(如房间号、过滤弹幕关键字),然后调用huya-danmu库,实时获取弹幕,把弹幕信息返回给前端,前端在弹幕打印区域做显示。
![391c481fe3c6d5e1686af9f6c8772acd.png](https://i-blog.csdnimg.cn/blog_migrate/53a2d1de601c0374cdc1a5912c8d2c44.jpeg)
server.class
前端client,其实就是server端选染的test.html页面,页面是是一个表单和弹幕显示区域,用户输入房间号和过滤弹幕关键字之后,点击获取按钮,其实就是启动了一个client,与server进行连接,然后实时传输参数和获取弹幕信息,并打印。
![e63c4c1ea921cc43a82ddcaacaeb0829.png](https://i-blog.csdnimg.cn/blog_migrate/a967486491f6348ff8a59c73eb06491e.jpeg)
前端html代码
![39f9f564255793651c7e20ae5d722943.png](https://i-blog.csdnimg.cn/blog_migrate/68fa89a2d399de6e04674ac1c8cbebb1.jpeg)
前端js代码
工具页面完整版全图:
![a6b7086ed3a4ae8a091d616b40fc41ab.png](https://i-blog.csdnimg.cn/blog_migrate/015b017699d8efbe80316afaf6e947c5.jpeg)
虎牙弹幕工具
哈哈,以上是自己做的一个简单工具,仅供学习,只花了一晚上的时间闲着没事搞的,大家不喜勿喷,一起探讨下。