1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 哔哩哔哩弹幕api及一些解释

哔哩哔哩弹幕api及一些解释

时间:2024-06-10 22:19:59

相关推荐

哔哩哔哩弹幕api及一些解释

有两个弹幕api接口,分别是移动端与电脑端

/ + cid + .xml/x/v1/dm/list.so?oid= + cid

以电脑端为例子,使用谷歌浏览器打开某个哔哩哔哩的视频:

右键–检查–network–刷新–一个个找吧,如图,这里已经找到了,点击Headers,就是api了,移动端的请点击左上角的toggle device toolbar,重复上述步骤。

弹幕XML文件中的含义

啧啧,原来阿卡丽那么小?

参数1(157.47900):弹幕出现的时间,以秒数为单位

参数2(1):弹幕的模式,1-3 滚动弹幕,4 底端弹幕,5顶端弹幕,6 逆向弹幕,7 精准定位,8 高级弹幕

参数3(25):字号 (12非常小,16特小,18小,25中,36大,45很大,64特别大)

参数4(16777215):字体的颜色;这串数字是十进制表示;通常软件中使用的是十六进制颜色码;

e.g:

白色

RGB值:(255,255,255)

十进制值:16777215

十六进制值:#FFFFFF

参数5(1548340494):unix时间戳,从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数

参数6(0):弹幕池,0普通池,1字幕池,2特殊池 【目前特殊池为高级弹幕专用】

参数7(389b20da):发送者的ID,用于“屏蔽此弹幕的发送者”功能

参数8(11114024647262210):弹幕在弹幕数据库中rowID 用于“历史弹幕”功能。

获取弹幕

我们可以直接通过上面的方法从网页直接找到xml文件下载,我们也可以使用api接口获取弹幕。

使用api之前需要知道视频的cid,获取cid也需要一个api,一下为python代码

import requests,json,re,time,datetimefrom bs4 import BeautifulSoup#这里就直接一次性倒入要用的库了def get_oid(av_num:str)->int:#获取cid,输入视频av号num=re.search(r'\d+',av_num).group(0)url='/x/player/pagelist?aid={}&jsonp=jsonp'.format(num)#获取cid的apijs=requests.get(url).content.decode('utf8')js_format=json.loads(js)#转换为json格式return js_format['data'][0]['cid']#返回ciddef get_dm(oid):#获取弹幕,输入cidurl='/x/v1/dm/list.so?oid={}'.format(oid)#弹幕apidm=requests.get(url).content.decode('utf8')#编码,防止中文乱码soup = BeautifulSoup(dm)#美化下输出格式return soup.find_all('d')#只返回d标签,即弹幕def run():av_num=input('请输入视频的AV号:')cid=get_oid(av_num)dm=get_dm(cid)print(dm)#此处偷懒点,直接打印了,当然也可以直接保存为xml文件

通过弹幕查询用户

参照xml文件各种字符的含义,通过参数7反查即可:

/api/user/hash/[用户Hash]

返回json,id后面就是用户的uid了

直接上python程序:

def find_users(usr_cid:str)->int:url='/api/user/hash/{}'.format(usr_cid)#反查,获得jsonjs=json.loads(requests.get(url).text)if len(js['data'])==1:#如果有两个id,选择后面的idposi=0else: posi=1usr_id=str(js['data'][posi]['id'])获得uidspace='/{}'.format(usr_id)return space#返回用户的个人主页网址

这边直接返回了用户主页的链接,也可以使用用户数据的api来获得用户数据

api:/x/space/acc/info?mid=【uid】&jsonp=jsonp

【uid】为用户的uid,返回json,里面有等级、姓名,是否大会员等许多用户信息

转换弹幕格式

送上一个网站:https://tiansh.github.io/us-danmaku/bilibili/

以及教程:/read/cv1022304/

转换成ass字幕后就可以离线播放有弹幕的视频了

unix时间戳转换

参数5,请直接百度转换,python代码:

def get_time(unix_time:int)->str:#输入unix时间戳time=datetime.datetime.fromtimestamp(unix_time)return time.strftime("%Y-%m-%d %H:%M:%S")#返回时间

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。