- 本文章属于qaq卟言本人自己的学习教程,如果做其不法事情,跟本人无关
- 1.png
- 开发这个功能是因为我时不时在哔哩哔哩直播,但是基本上是obs推流视频没错就是在挂机直播😅
- 然后不可能时不时进来看一下直播间吧虽然没有人会看我回放视频😅,可能是因为视频是自己写代码的,进来看见都跑了
- 不过可以通过我写好的这个脚本,大家可以自定义一下功能,我目前就写了一个记录弹幕
- 比如直播点歌,语音朗读,或者弄一个互动小游戏
- 我抓包发现哔哩哔哩直播弹幕有3种协议WebSocketGETPOST
- WebSocket
https://api.live.bilibili.com/room/v1/Room/room_init?id=
- GET
http://api.live.bilibili.com/ajax/msg?roomid=
- POST
https://api.live.bilibili.com/xlive/web-room/v1/dM/gethistory
- 这里使用GET来获取弹幕
- 水友们其实很喜欢发送类似dddd这类重复单词(叠词),所以我创建cache.tmp文件
- 过滤重复的弹幕,水友们发现不得劲,没有作用后,就从直播间走了😜
- 基本上注释我都写了,还看不懂,就联系我我可以不说脏话的来骂你😏
- 创建配置文件
touch config.json
- 写入内容
{ "url":"http://api.live.bilibili.com/ajax/msg?roomid=", "room":"4365864", "cache":"cache.tmp", "record":"danmu.log" }
- 创建脚本
touch main.py
- 写入内容
""" ------------------------------------------------- # !~/桌面/弹幕 # -*- coding: utf-8 -*- # @Time : 2023-08-20 21:57:14 # @Author : buyan<buyan@mail.qaqbuyan.com> # @Description : 爬取哔哩哔哩直播弹幕 ------------------------------------------------- """ import requests import json import os # 配置文件 config = "./config.json" configuration = json.load(open(config, encoding='utf-8')) # 弹幕url url = configuration["url"] # 房间号 room = configuration["room"] # 缓存数据 cachedata = configuration["cache"] # 所有弹幕记录 record= configuration["record"] # 将输出重定向到文件 def cache(file,content,operation): f = open(file,operation) f.writelines(content) # 当文件结束使用后关闭文件 f.close() def get_danmu(): # 伪装请求头 headers={"User-Agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36"} # 发送请求 res = requests.get(url+room,headers=headers).json() # 解析最新 data = res["data"]["room"][9] # 获取发言 text = data["text"] # 获取uid #uid = data["uid"] # 获取昵称 nickname = data["nickname"] # 判断是不是管理员 if data["isadmin"] == 1: user = " 管理" else: user = "" # 获取时间 timeline = data["timeline"] # 如果不存在写缓存数据文件,就自动创建一个 if not os.path.exists(cachedata): cache(cachedata,'','w') # 读内容 f = open(cachedata, 'r') # 获取内容 content = f.read() # 当文件结束使用后记住需要关闭文件 f.close() # 判断是不是一样 if text == content: pass else: danmu = timeline,user," ",nickname," 说 ",text,"\n" print(timeline,user,nickname,"说",text) # 这里你可以定义自己需要的功能 # if text[0:4] == "#点歌 ": # 点歌 # songs() # 语音朗读 # read() cache(cachedata,text,'w') # 如果不存在弹幕记录文件,就自动创建一个 if not os.path.exists(record): cache(record,danmu,'w') else: cache(record,danmu,'a') if __name__ == '__main__': while 1 > 0: # 获取弹幕 get_danmu()
- 运行脚本
python3 ./main.py
- 运行效果
- 1.png
- 运行后目录结构
- 2.png
- 运行后弹幕记录文件danmu.log
- 3.png
- 其他文章
- 自用哔哩哔哩每日自动签到
- 实现哔哩哔哩自动签到
【爬取哔哩哔哩直播弹幕】
qaq卟言2023-08-20 23:28:04
Python
开始
完结