伪·BiliLocal播放器全弹幕发射教程
相关记录
一、前言
BiliLocal 播放器是一款可以播放弹幕的播放器。
这个教程指在表现出全弹幕发射的样子,但是不是真真意义上的全弹幕发射。
本身它也是有这个功能,现在好像有点失效了。所以,在这里,博主准备模拟一下所谓的全弹幕装填的效果。让我们开始吧。
二、软件回顾
-
在线加载弹幕
-
只有 1000 条,太少了
-
实际播放效果
多少还是有点单薄的,所以咱准备疯狂一把。
-
修改后的弹幕量
-
实际效果
弹幕量果然爆炸,确实有点全弹幕装填的意味了。(图片鬼畜的原因是,限制 5 M)
三、具体操作
-
先讲讲原理
实际上,原理很简单,因为有一个获取历史弹幕的接口,只要获取不同天数的弹幕池弹幕,最后拼接在一起就可以了。
接口如下所示:
https://api.bilibili.com/x/v2/dm/history?type=1&date=2020-08-25&oid=76113255
date 与 oid需要我们填写,一个是日期,另一个是 cid 号 -
关于 XML 文件
这个涉及到 DOM 操作,说白就是怎么快速的生成一个这样的文件结构。
-
具体代码实现思路可以这样
① 获取很多弹幕池弹幕
② 新建一个空 XML 文件
③ 把弹幕以 DOM 形式添加进 XML 文件中
④ 保存下来 -
也可以复制粘贴
都是文本,但是可能太累了
四、Python 代码
本人写的渣代码,功能是可以实现的。(去掉了一些不需要的功能,稍微精简一点)
#! Python3
# 调整 XML 弹幕文件
from xml.dom.minidom import parse
import xml.dom.minidom
import requests
from fake_useragent import UserAgent
import datetime
import time
class XMLDownloader:
def __init__(self, cid, cookie):
self.cid = cid
self.cookie = cookie
self.chatserver='chat.bilibili.com'
self.chatid=cid
self.mission='0'
self.maxlimit=''
self.state='0'
self.real_name='0'
self.source='e-r'
## print(self.chatserver, self.chatid, self.mission, self.maxlimit, self.state, self.real_name, self.source)
self.current_danmaku_url = "https://comment.bilibili.com/{}.xml"
self.history_danmaku_url = "https://api.bilibili.com/x/v2/dm/history?type=1&date={}&oid={}"
self.headers = {
'User-Agent': UserAgent(path='fake_useragent.json').random}
# print(self.headers)
def getCurrentDanmakuXML(self):
# 下载目前的弹幕池弹幕,并得到核心弹幕内容列表
data = requests.get(url=self.current_danmaku_url.format(self.cid),