Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

能否按发送时间过滤弹幕 #235

Closed
MC-dusk opened this issue Dec 24, 2022 · 2 comments
Closed

能否按发送时间过滤弹幕 #235

MC-dusk opened this issue Dec 24, 2022 · 2 comments

Comments

@MC-dusk
Copy link

MC-dusk commented Dec 24, 2022

想问问pakku能不能按照时间筛选弹幕,比如过滤掉19年后的弹幕,或者只留下17.3.1~17.10.30的弹幕,unix时间戳都写在xml里面了,目前我只能下载到本地,处理了再加载回去,有点麻烦。

B站自带的历史弹幕功能,一个是要选早年的弹幕要点很久(比如选18年的弹幕要点50次后退),一个是即使选了早年的弹幕,仍然可能填充后面的弹幕抓壮丁。而且比选择时间更早的弹幕是不能控制是否加载的。

如果pakku能实现自动加载选定时间(比如19.1.1)的历史弹幕,并进行自定义的时间过滤就好了。


另外想请问一下,下图显示加载和处理的弹幕高达上万条,但点击按钮把弹幕下载到本地打开(无论是左边的原弹幕,还是右边的处理后弹幕),又只有两千多条。这是什么情况?

而且如果使用了历史弹幕功能,点击下载弹幕的按钮,左侧原弹幕仍然是标准弹幕池(即类似https://comment.bilibili.com/123.xml )而不是历史弹幕,右侧处理后也不是对应的历史弹幕。(但历史弹幕确实被处理了并在浏览器播放器正常显示。)

image

@xmcp
Copy link
Owner

xmcp commented Dec 24, 2022

B站弹幕有 XML 和 protobuf 两种 API。新版播放器使用的是 protobuf API,弹幕会每 6 分钟分一段加载,总数比较多;XML API 会一次返回所有弹幕,总数比较少。

pakku 支持以上两种 API,但点击 “过滤后xxx” 链接的时候默认会请求 XML API,所以弹幕总数上限比较小。

你可以手动把 url 改成 protobuf API,但是超过一段(6分钟)的视频需要自己手动拼接一下。

比如:chrome-extension://jklfcpboamajpiikgkbjcnnnnooefbhh/page/parse_url.html?ret_type=xml&url=https%3A%2F%2Fapi.bilibili.com%2Fx%2Fv2%2Fdm%2Fweb%2Fseg.so%3Ftype%3D1%26oid%3D3262388%26pid%3D314%26segment_index%3D1,上面 url 参数里面的 oid 是弹幕 CID(就是 XML API 使用的编号),pid 是 AV 号,segment_index 是分段编号。

历史弹幕也可以手动输入 URL 来获取,URL 的格式大致是:https%3A%2F%2Fapi.bilibili.com%2Fx%2Fv2%2Fdm%2Fweb%2Fhistory%2Fseg.so%3Ftype%3D1%26oid%3D3262388%26date%3D2022-12-21

因为使用场景比较少,所以上面这些功能没做到 UI 里,需要手动输入。

高级筛选也因为使用场景比较少所以没做到 UI 里。之前我弄过一个 https://github.com/xmcp/pakku-advanced-filter ,但很久没更新了,不知道现在还能不能用。

@xmcp xmcp closed this as completed Dec 24, 2022
@MC-dusk
Copy link
Author

MC-dusk commented Dec 25, 2022

谢谢,弹幕api我之前也抓包了解过,但仅仅都是当一次学习。
如果看个番得一集集找cid和aid,再手写url获取xml,本地处理再看,实在是太麻烦了,这也是我希望能直接自动化处理的原因。
我想应该还是有不少补旧番的人有历史弹幕的需求,毕竟现在B站的弹幕环境一言难尽,直接通杀近几年的弹幕也是无奈之举(几百条正则过滤还是感觉不足),反正几万条也根本显示不完(1/4屏)。

另外,比如打开这个,花了8s加载了6w条弹幕并处理降到4w条,却不能直接下载处理结果,而得重新手写protobuf的链接来获取,这实在是很奇怪。
无论是xml还是proto,下载弹幕都是重新获取,但开视频时已经加载过一遍了,为什么不能直接使用浏览器处理完的结果呢?

另外,

chrome-extension://jklfcpboamajpiikgkbjcnnnnooefbhh/page/parse_url.html?ret_type=xml&url=https%3A%2F%2Fapi.bilibili.com%2Fx%2Fv2%2Fdm%2Fweb%2Fseg.so%3Ftype%3D1%26oid%3D16773211%26pid%3D9814819

里面的分片参数segment_index似乎不是必须的,而且无论是否有这个参数,pakku都获取并合并了全片(24min)的弹幕。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants