Skip to content

弹幕转义功能对高级弹幕不生效 #5745

Description

@Harumodo

对应功能

弹幕转义(unescapeDanmaku)

问题描述

在 Chrome + Tampermonkey 中使用 Bilibili Evolved 2.11.3,已启用“弹幕转义”,并确认“对 \n 转义 / 对 /n 转义”开关开启。刷新页面后,高级弹幕中的字面量 /n 没有被替换为真实换行。例如在BV1ws411S7tm中,有许多带/n的高级弹幕,此功能对这些弹幕并未生效(例如2:46和2:54等)

脚本版本

2.11.3

脚本管理器及版本

Tampermonkey v5.5

浏览器及版本

Chrome 151.0.7922.170

播放器日志

播放策略

默认

错误信息

Console 未观察到明显报错。
我看了一下 v2.11.3 源码,`弹幕转义``registry/lib/components/video/danmaku/unescape/index.ts` 中通过 `forEachVideoDanmaku()` 处理弹幕文本;而 BPX 播放器选择器里普通弹幕层和高级弹幕层是分开的:
- `danmaku: '.bpx-player-row-dm-wrap'`
- `advDanmaku: '.bpx-player-adv-dm-wrap'`
- `basDanmaku: '.bpx-player-bas-dm-wrap'`

当前 `弹幕转义` 似乎只覆盖了普通弹幕层,没有覆盖 `advDanmaku`,所以 mode=7 高级弹幕中的 `/n` 没被处理。

本地验证:
我用一个额外 userscript 通过 Tampermonkey 同时监听 `.bpx-player-adv-dm-wrap` 后,问题可以解决。因此推测修复方向是让 `弹幕转义` 同时处理普通弹幕层、高级弹幕层,可能还包括 BAS 弹幕层。

附加截图

bilibili-advanced-danmaku-newline-fix.user.js

致遇到了相同问题准备回复的人

太长不看
1、遇到了相同的问题:请用左下角的 reaction 点赞
2、实时关注该 Issue 的后续进展:请用 Issue 页上的 Subscribe 功能(在 PC 端按钮通常位于页面右侧)。
请您回复前务必确认您有在本 Issue 之外补充了其它相关信息(比如 Log)再行回复以免对他人造成不必要的困扰

完整版 由于每个 Issue 甚至整个项目都是可以订阅通知的, 对于已经有人汇报过的 Bug, 如果您也遇到了并且没有其他信息要补充, 可以直接在左下点个赞表示 +1, 不要再去新增评论。想关注后续的可以用 Subscribe,Subscribe 之后该 Issue 如果有变动都可以收到通知,如果不想被回复打扰可以使用更加进阶的 Customize 功能,勾选 "Closed" & "Reopened"。Closed 通常代表该 Issue 已被解决,极少数情况下的 Reopened 代表该 Issue 的问题重新出现。如果您新增了无意义评论,因为 Issue 这个 bug tracker 与邮件列表类似,订阅某个 Issue 的用户会在每次这个 Issue 有新的动态时收到一封新的提醒邮件。也就是说,在 Issue 中的一个不能提供新的信息的评论,相当于给所有订阅这个 Issue 的用户发了一封垃圾邮件(spam)。尤其项目的维护者也是订阅者中的一员,太多垃圾邮件会对维护者带来很多不必要的困扰。发送垃圾邮件在开源社区通常是不那么受欢迎的行为。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions