
Elegy233andhuangxd-
b06d40999e
fix: 修复手动链接搜索与直连接口未剥离 @偏移 后缀导致请求失败 (#455)
* fix: 修复手动链接搜索与直连接口未正确处理 @偏移 后缀
搜索阶段取标题前剥离 @偏移 后缀:此前带 @偏移 的链接直接传入源请求(如 bilibili 返回 404)并产生脏标题,现统一用 stripLinkOffset 取洁净链接后再取标题。
直连接口 getCommentByUrl 此前完全忽略 @偏移,现与 getComment 对齐:解析 @秒数/@%百分比 偏移、用洁净链接取弹幕、取回后应用偏移;百分比偏移按弹幕最大时间缩放,逻辑与 getComment 一致。
将散落各处的 @偏移 解析统一收口到 offset-util.js 的 stripLinkOffset(消除 7 处重复内联正则),getComment / fetchMergedComments / resolveSourceAndRealId / getCommentByUrl 均复用之。
顺带修复:animeko/bahamut 此前用仅匹配 @秒数 的正则,会静默丢弃 @% 百分比偏移,现经 stripLinkOffset 统一解析后予以保留。偏移为 0(如 @0)时不再回写 @0 后缀(原会保留,属无操作偏移,无实际影响)。
* fix: 修复合并链接偏移被重复施加导致弹幕时间整体偏移
合并链接(含 $$$ 分隔的多个子链接)的弹幕在 fetchMergedComments 中已按各子链接来源分别施加偏移,而 getComment 顶层又对整段合并弹幕再次施加单链接偏移,导致所有弹幕时间被叠加偏移一次(首个子链接无偏移标记时其弹幕被整体抬走)。
改为顶层单链接偏移仅在非合并链接时施加,与既有 danmuOffsetRules 守卫(dandan-api.js:2699)一致——合并链接的偏移完全由 fetchMergedComments 按来源处理。单链接偏移行为与直连接口 getCommentByUrl 不受影响。
* fix: 修复合并链接弹幕时长仅取单视频时长而非合并时间轴长度
合并链接(含 $$$ 分隔的多个子链接)此前在 resolveMergedDuration 中对各子链接时长取最大值,导致返回的 videoDuration 为单个视频的时长(如 3266s),而非合并后时间轴的实际长度(约 6463s),前端进度条与时长显示偏短。
改为:合并链接的时长取各子链接按 @偏移 平移后时间轴末端的最大值——即 max(子链接时长 + 应用的偏移)。偏移量直接复用 applyOffset 的语义(绝对与百分比模式下均将时间轴末端平移 offset 秒),确保返回的合并时长与弹幕实际落点完全一致,且不再手算偏移公式。单链接路径保持不变,正常场景行为不受影响。
* test: 在 worker.test.js 活跃区补充 @偏移 解析与 applyOffset 端点语义用例
---------
Co-authored-by: huangxd- <649924757@qq.com>
2026-08-22 12:17:19 +08:00
..
2026-08-22 12:17:19 +08:00
2026-08-22 12:05:38 +08:00
2026-08-11 00:19:52 +08:00
2026-08-22 12:07:11 +08:00
2026-08-22 12:05:38 +08:00
2026-08-22 12:17:19 +08:00
2026-02-04 18:10:58 +08:00
2026-08-15 08:06:38 +08:00
2026-08-15 08:06:38 +08:00
2026-08-22 12:17:19 +08:00