Elegy233
62fd0afddf
feat: 弹弹play源支持经 NipaPlay 302关联链接获取弹幕,并支持 NIPAPLAY_REPLACE_DANDAN 替代原生弹幕开关 (#439)
* feat: 弹弹play源支持经 NipaPlay 302关联链接获取弹幕,并支持 NIPAPLAY_REPLACE_DANDAN 替代原生弹幕开关
当 dandanplay 原生弹幕为空(新番上线缓存空窗期)时,dandan 源借助 NipaPlay 授权的
302关联接口,经 302 重定向获取用户在弹弹play客户端实际绑定的跨平台播放链接,实时拉取
bilibili/bahamut/iqiyi/youku/tencent/mango 的弹幕作为兜底。
新增 NIPAPLAY_REPLACE_DANDAN 开关(默认关闭,经 envs 暴露、前端可配置):开启后 dandan
源以 nipaplay 关联弹幕替代弹弹原生弹幕,跳过原本的弹弹 HTTP 弹幕接口请求(不做并行,避免请求量
放大);当关联链接为空时回退弹弹自身弹幕作为安全网(因采用项目链路获取弹幕,会丢失弹弹
自身平台弹幕,多平台中巴哈需确保可连通)。
实现要点:
- 关联接口凭证由 NipaPlay 授权下发,参数经运行时派生与重组还原,源码不出现可读明文(禁止滥用);
- 签名生成、302 关联链接的解析与请求抽取至 nipaplay-util.js,dandan.js 仅负责触发与分发;
- 复用各平台既有源实例拉取弹幕,对各源零侵入;
- 兜底弹幕按真实来源标注平台标识(如 bilibili1/qq/qiyi),与手动解析链接输出一致;
- 同平台多个链接串行、间隔 1 秒请求,避免短时间内同平台并发触发风控;
- 已独立选择的合并源按源名与平台标识双重比对跳过,避免重复获取;对跳过的合并源输出日志,使合并源冲突防范可见;
- 关联接口响应仅含重定向(无弹幕体,单次线上响应约数百字节),弹幕数据来自后续按平台
链接实时拉取,对既有请求路径无额外放大。
* test: 增加 nipaplay 弹蛋302关联工具函数单元测试(注释态)
覆盖 parseNipaplayRelatedLinks、resolveNipaplayLink、applyShiftToDanmu、generateNipaplaySignature;按仓库既有约定以注释形式提交,解除注释即可经 node --test 运行。
* fix: 移除 NIPAPLAY_REPLACE_DANDAN 配置说明反引号并改用换行
envs.js 与 .env.example 的 NIPAPLAY_REPLACE_DANDAN 说明原使用反引号包裹 false/true 与三条注意事项,前端当前无法渲染反引号。改为去掉反引号,并参照既有配置(如 USE_BANGUMI_DATA)使用换行分隔默认值、可选值与注意事项,提升前端展示可读性。
* docs: 调整 README 致谢中 NipaPlay-Reload 弹弹302关联链接描述
去掉致谢行中重复的 NipaPlay-Reload 字样,并将授权改为请求授权以准确描述链接授权性质。
* docs: README 致谢补充弹弹play开放平台链接
在 NipaPlay-Reload 提供的 302关联链接请求授权描述中,为弹弹play开放平台补充官方文档链接,与上方 danmaku-anywhere 行风格一致。
2026-08-15 07:57:46 +08:00
..
2026-03-15 12:57:32 +08:00
2026-07-26 20:59:19 +08:00
2026-08-11 00:19:02 +08:00
2026-08-08 21:33:20 +08:00
2026-08-09 12:23:03 +08:00
2026-08-15 07:57:46 +08:00
2026-08-08 21:32:43 +08:00
2026-06-20 13:33:10 +08:00
2026-07-26 21:53:19 +08:00
2026-08-02 08:54:17 +08:00
2026-07-26 20:59:19 +08:00
2026-08-08 22:16:56 +08:00
2026-08-09 12:23:03 +08:00
2026-07-26 20:56:32 +08:00
2026-08-15 07:57:46 +08:00
2026-07-26 20:59:19 +08:00
2026-07-26 20:59:19 +08:00
2026-03-15 12:57:32 +08:00
2026-07-26 21:03:56 +08:00
2026-07-29 22:35:35 +08:00
2026-08-15 07:57:46 +08:00
2026-07-14 22:29:52 +08:00
2026-08-08 22:16:56 +08:00
2026-08-15 07:56:27 +08:00
2026-03-29 23:53:50 +08:00
2026-08-09 12:23:59 +08:00
2026-07-26 20:56:45 +08:00