b站弹幕姬python_Python 融合多方代码b站弹幕朗读姬代码

该博客介绍了一个使用Python编写的b站弹幕姬程序,通过获取直播间弹幕并将其转换为语音朗读。用户输入房间号后,程序会实时获取弹幕,将新弹幕内容与历史记录对比,只读取未读过的弹幕,并将其保存到文件,同时利用win32com客户端库将弹幕转化为语音播放。
摘要由CSDN通过智能技术生成

import requests

import win32com.client

import time

danmu="D:/python_work/成品/danmu.txt"

old_list=[]

romid = input("请输入房间id:")

#创建一个old_list列表用于辅助后面的text_danmu方法提取新消息

class bilibiliDanmu():

#定义一个Danmu类

def __init__(self):

self.url = "https://api.live.bilibili.com/ajax/msg"

self.headers={

"User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1",

"Referer": "https://live.bilibili.com/",

}

self.data = {

"roomid":romid,

"csrf_token":"",

"csrf":"",

"visit_id":""

}

#在 __init__方法中先定义好要使用的请求url,请求头,和请求参数

def speak_text(self,text):

#定义一个speak_text方法,并创建形参text,用于作为接下来读取的文字

speak =  win32com.client.Dispatch("SAPI.SpVoice")

#创建发声对象

speak.Speak(text)

#使用发生对象读取文字!!可以关闭声音!

def text_danmu(self,html):

#创建一个text_danmu方法,用于提取弹幕信息

global old_list

#设置变量作用域,使得该方法可以修改全局变量old_list的值

temp_list = []

#创建一个temp_list列表用于作为临时列表辅助提取弹幕消息

for text in html["data"]["room"]:

#for循环提取html字典中嵌套的子字典data中嵌套的子字典room的内容赋值给text变量

#这个html字典来自于get_danmu方法传递

danmu_string=text["nickname"] +"说:"+ text["text"]

temp_list.append(danmu_string)

#print(danmu_string)

if temp_list == old_list:

pass

#检测temp_list临时列表的内容和old_list是否相同,如果相同则跳过

else:

print ("First list length : %d" %len(temp_list))

for text_number in range (1,11):

#创建for循环一次将1到10的数字赋给text_number

if "".join(temp_list[:text_number]) in "".join(old_list):

pass

#使用join方法以""为分割符提取temp_list切割后的列表的内容

#使用join方法以""为分割符提取old_list列表的内容

#比较内容是否相同,如果相同则跳过

else:

try:

print (temp_list[text_number-1])

c=(temp_list[text_number-1])

with open (danmu,"w")as g:

e=c

g.write(str(e))

g.close()

except:

pass

else:

self.speak_text(temp_list[text_number-1])

#尝试打印temp_list指定索引的内容,如果报错则跳过

#否则调用speak_text方法,进行文字转语言

old_list = temp_list[:]

#将temp_list的值赋给old_list,进行更新旧信息列表

def get_danmu(self):

html = requests.post(url=self.url,headers=self.headers,data=self.data)

html.json()

self.text_danmu(eval(html.text))

#定义get_danmu方法

#使用requests.post方法获取网页内容

#将网页返回值以json的信息加载

#调用之前定义的text_danmu方法,传递eval处理后的网页返回值的文本内容

bzhan = bilibiliDanmu()

#创建一个bzhan实例

while True:

bzhan.get_danmu()

time.sleep(10)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值