找回密码
 立即注册

QQ登录

只需一步,快速开始

斗鱼向第三方开放了弹幕API,网上已经有许多用Python、Java等盛行开辟语言写的弹幕步伐,本日我拿斗鱼弹幕来抛砖引玉,有不正之处,还请各人品评指正,多多批评哈!

fs5v78xssJ2S85j9.jpg
预备工作:
1.PowerShell
2.斗鱼弹幕API协议,http://dev-bbs.douyutv.com/forum.php?mod=viewthread&tid=399&extra=page%3D1
rlFEmXfc834CwGEx.jpg
代码如下:

#斗鱼弹幕服务器地点、端口
$douyu_server="openbarrage.douyutv.com"
$douyu_port=8601
#要检察的房间号,xxxxx改成房间的id号
$roomid=xxxxx
$socket = new-object System.Net.Sockets.TcpClient($douyu_server, $douyu_port)
$send = new-object System.Byte[] 1024
$recv = new-object System.Byte[] 1024
$end_byte = new-object System.Byte
$encode = new-object System.Text.UTF8Encoding
$stream = $socket.GetStream()
function SendMsg($msg)
{
#把字符串转换为byte数组
$msg_byte = $encode.GetBytes($msg)
#调用BitConverter的GetBytes方法把值转换为byte数组
$len_byte = [System.BitConverter]::GetBytes(4+4+$msg_byte.length+1)
$magic_byte = [System.BitConverter]::GetBytes(0x2b1)
$end_byte = 0x0
$send = $len_byte+$len_byte+$magic_byte+$msg_byte+$end_byte
$stream.Write($send, 0, $send.Length)
}
#参照斗鱼API写哀求
$login="type@=loginreq/roomid@=$roomid/"
$joingroup="type@=joingroup/rid@=$roomid/gid@=-9999/"
#发送哀求
SendMsg($login)
SendMsg($joingroup)
#吸收弹幕
while(1)
{
$recvi=$stream.Read($recv,0,$recv.Length)
if($recv.Length -ne 0)
{
$str=$encode.GetString($recv,0,$recvi)
#正则表达式,用了子表达式取出等号右边的值

$regex = [regex]"type@=([\W\w][^@=/]*)/"
$type = $regex.Matches($str)
if($type[0].Groups[1].Value -eq "chatmsg")
{
$regex1 = [regex]"nn@=([\W\w][^@=/]*)/"
$regex2 = [regex]"txt@=([\W\w][^@=/]*)/"
$name = $regex1.Matches($str)
$danmu = $regex2.Matches($str)
write-host($name[0].Groups[1].Value+":"+$danmu[0].Groups[1].Value)
}
}
}
$socket.Close()
Qp7lQwGK9I8lKXQq.jpg
弹幕结果
这个步伐照旧很粗糙的,像心跳相应等都没有实现,只是给各人一个演示,阐明PowerShell的功能不比别的编程语言差,好了,本日就到这吧,感谢各人对我的支持与鼓励。
分享至 : QQ空间
收藏

10 个回复

倒序浏览
擦,我还以为PHP呢
回复 使用道具 举报
是时间写个脚本爬美图了[狞笑]
回复 使用道具 举报
为什么不直接利用python,那里都能用啊,
回复 使用道具 举报
锅盖 举人 2018-2-16 10:39:29
5#
您好,我利用报错,无法对Null数组举行索引,地点位置74字符4 [捂脸]
回复 使用道具 举报
yuantou 举人 2018-2-16 10:47:25
6#
清除0
回复 使用道具 举报
12341234 举人 2018-2-16 10:54:30
7#
[恐惊]居然这么锋利。。还能这么玩
回复 使用道具 举报
12341234 举人 2018-2-16 11:01:55
8#
那直播间怎么判定活人死人发的弹幕
回复 使用道具 举报
twky58814 举人 2018-2-16 11:09:16
9#
这个有点专业 欠好喷!
回复 使用道具 举报
[来看我]
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册