教你打造一款d幕复读机!恶搞主播!你说王校长会招聘我嘛!

教你打造一款d幕复读机!恶搞主播!你说王校长会招聘我嘛!,第1张

概述目录这个项目是我从B站的一个up主那学到的(原视频号269525280),感觉很是有趣,就是很欠打哈哈

目录

这个项目是我从B站的一个up主那学到的(原视频号269525280),感觉很是有趣,就是很欠打哈哈

一、功能

功能很简单,就是将B站直播间的每条d幕重新发送一遍。

二、思路

先通过post请求获取实时d幕,再用post请求重新发送。

三、实现

1. 获取d幕

(1)因为实时d幕是通过AJAX从服务器获取的,我们打开右击页面选择检查,进入Network,经过一番寻找后找到了msg这个请求,查看其中的关键部分,请求URL地址和表单部分,url在请求头中,表单部分类似下图:

其中,roomID是房间号,csrf_token是post请求的安全验证码,还有一个visit_ID是空值,这些都要根据自己的实际情况填写。

进群:548377875    即可获取大量的教学视频以及学习资料哦!祝大家早日入门!

(2)然后我们查看响应信息:

是一个Json字符串,经过比对后可以知道最新的一条d幕存储在res.Json()['data']['room'][-1]['text']中(res是requests响应体)。

(3)然后我们就可以根据这些数据,使用requests模块获取d幕,代码如下

import requestsform_data = { 'roomID': '90713','csrf_token': 'c93526e213231f715424af182dfb0411','visit_ID': ''}res = requests.post("https://API.live.bilibili.com/AJAX/msg",data=form_data)text = res.Json()['data']['room'][-1]['text']

2. 发送d幕

(1)为了找到发送d幕的接口,我们只需要手动发送一条,在Network中就一眼看到了:

这次需要关注的部分除了url和post表单外,还有一个cookie,这个键用来服务器识别我们的浏览器的,如果没有的话,即使发送到服务器d幕也不会显示。

(2)d幕是保存在表单中的msg键中发送给服务器的

(3)然后根据这些数据向第一部获取的url发送表单,代码如下:

form_data_send = { 'color': '16777215','Fontsize': '25','mode': '1','msg': '要发送的d幕','rnd': '1539592977','roomID': '90713','csrf_token': 'c93526e213231f715424af182dfb0411'}cookie = { 'cookie':'l=v; finger=edc6ecda; liVE_BUVID=auto7915376845749539; CURRENT_FNVAL=8; sID=9xsee80j; DedeUserID=23126221; DedeUserID__ckMd5=e597ce186461e9d8; SESSDATA=27b96e94%2C1540276589%2C664ff578; bili_jct=c93526e213231f715424af182dfb0411; fts=1537684594; UM_distinctID=1660524dd947fc-05bc81e71e64fb-8383268-144000-1660524dd95107; im_notify_type_23126221=0; stardustvIDeo=1; buvID3=AE818E5D-B2C1-44F2-8F09-989661B9F8846688infoc; rpdID=owkkqwkwmxdoskqiokoww; bp_t_offset_23126221=174970628267807201; CURRENT_QUAliTY=64; _dfcaptcha=3d138714e8941fa5ecd47cea30ef1917; Hm_lvt_8a6e55dbd2870f0f5bc9194cddf32a02=1538406126,1539591329; Hm_lpvt_8a6e55dbd2870f0f5bc9194cddf32a02=1539593348'}res = requests.post('https://API.live.bilibili.com/msg/send',cookies= cookie,data=form_data_send)

这其中大部分数据要以自己的实际修改(在自己的浏览器上复制)

3. 封装调用

(1)将获取d幕封装成一个方法,返回d幕文本;

(2)将发送d幕也封装,接收方法1获取的d幕文本为参数;

(3)去重,在d幕未刷新时,阻止多次发送同一条d幕。

所以最终代码如下:

import requestsform_data = { 'roomID': '90713','visit_ID': ''}def get_message(): res = requests.post("https://API.live.bilibili.com/AJAX/msg",data=form_data) text = res.Json()['data']['room'][-1]['text'] return textdef send_message(msg): form_data_send = { 'color': '16777215','msg': msg,'csrf_token': 'c93526e213231f715424af182dfb0411' } cookie = { 'cookie':'l=v; finger=edc6ecda; liVE_BUVID=auto7915376845749539; CURRENT_FNVAL=8; sID=9xsee80j; DedeUserID=23126221; DedeUserID__ckMd5=e597ce186461e9d8; SESSDATA=27b96e94%2C1540276589%2C664ff578; bili_jct=c93526e213231f715424af182dfb0411; fts=1537684594; UM_distinctID=1660524dd947fc-05bc81e71e64fb-8383268-144000-1660524dd95107; im_notify_type_23126221=0; stardustvIDeo=1; buvID3=AE818E5D-B2C1-44F2-8F09-989661B9F8846688infoc; rpdID=owkkqwkwmxdoskqiokoww; bp_t_offset_23126221=174970628267807201; CURRENT_QUAliTY=64; _dfcaptcha=3d138714e8941fa5ecd47cea30ef1917; Hm_lvt_8a6e55dbd2870f0f5bc9194cddf32a02=1538406126,1539591329; Hm_lpvt_8a6e55dbd2870f0f5bc9194cddf32a02=1539593348' } res = requests.post('https://API.live.bilibili.com/msg/send',data=form_data_send)s = ''while True: msg = get_message() if s == msg: continue else: print('已发送d幕:',msg) send_message(msg) s = msg

注意:表单数据要以自己的为准

建议再多加一些延迟和随机办法,不然太招仇恨会被举报的……哭

总结

以上是内存溢出为你收集整理的教你打造一款d幕复读机!恶搞主播!你说王校长会招聘我嘛!全部内容,希望文章能够帮你解决教你打造一款d幕复读机!恶搞主播!你说王校长会招聘我嘛!所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1208583.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存