11 Commits
Author SHA1 Message Date
e8851c5bc5 fix(forward): 构建独立 widget 时隔离服务端本地弹幕存储 (#495)
* fix(forward): 构建独立 widget 时隔离服务端本地弹幕存储

Prepared, adapted, tested and submitted by GPT-6 agent with the account owner's authorization. These changes were not manually authored or submitted by the account owner.

* test(forward): 将构建回归测试合并到主测试文件

* chore: 更新版本号至 1.21.4

---------

Co-authored-by: GPT-6 Agent <agent@localhost>
Co-authored-by: huangxd- <649924757@qq.com>
2026-10-02 21:35:14 +08:00
huangxd- 1bdb2a879e fix: 修复 widget 构建中 http/https 模块兼容性及环境检测逻辑
- 在构建插件中为 node:http 和 node:https 添加解析规则,并提供空实现,避免构建失败
- 增加 IS_NODE_RUNTIME 判断,结合 __FORWARD_WIDGET__ 标识和 process.versions.node 准确识别 Node 环境
- 修正降级检测逻辑,仅在 Node 运行时检查版本,防止在浏览器环境下误判并触发不必要的 node-fetch 降级
- node-fetch Agent 仅在 Node 运行时创建,避免在非 Node 环境引用 http/https 模块导致异常
- 调整全局变量定义,注入 __FORWARD_WIDGET__ 标识供运行时环境判断使用
2026-08-15 08:48:08 +08:00
huangxd- 22ba6dabd0 feat: 将 dan-any 模块提取为独立工具并优化构建流程
- 在 build-forward-widget 中为 dan-any.js 添加解析和加载钩子,将其排除出 widget 捆绑包,仅保留转换功能占位
- 新增 convertDanAny 函数封装所有 dan-any 格式转换逻辑,支持 JSON/XML/Binary 输出
- 重构 danmu-util 中的格式响应函数,移除直接依赖 @dan-uni/dan-any,改为调用本地 convertDanAny
- 清理冗余导入,降低模块耦合,为后续 forward 独立部署做准备
2026-07-26 21:53:19 +08:00
huangxd- 3a6b5340a0 改用opencc-js处理繁简转换 (#395)
* refactor: 优化构建脚本并改用opencc-js处理繁简转换

- 重构 `build-forward-widget.js` 中的行删除逻辑,改用 split/filter 按片段匹配,避免单行大字典导致正则回溯或内存问题
- 增加 `esbuild.stop()` 确保构建进程正常退出,将 `process.exit(1)` 改为 `process.exitCode = 1` 以允许清理
- 将 `zh-util.js` 中硬编码的繁简映射替换为 `opencc-js` 库,大幅精简代码并提高转换准确性和可维护性

* refactor(utils): 更新 opencc-js 转换器初始化方式

改用 ConverterFactory 并显式导入字典文件,避免使用已弃用的 Converter 构造函数,确保与最新 opencc-js API 兼容。
2026-07-26 20:56:45 +08:00
huangxd- c4d2951eb5 新增红果短剧源 (#394)
* feat: 新增红果短剧源支持

- 在 README 和配置示例中添加红果短剧(hongguo)源,扩展弹幕获取来源
- 更新 SOURCE_ORDER、PLATFORM_ORDER、MERGE_SOURCE_PAIRS 等配置项的可选值
- 新增 hongguo.js 源文件,完善项目文档和目录结构说明

* fix: 支持通过红果播放链接获取弹幕

* feat: 添加红果短剧全集合并选项,支持按集号顺序合并所有集弹幕

- 新增环境变量 `HONGGUO_MERGE_ALL_EPISODES`,默认为 false,启用后将红果短剧所有集的弹幕按剧集顺序合并为一集返回,每集弹幕时间累加前面各集时长,剧集列表显示为“全集”
- 修改缓存键生成逻辑,当启用合并时在缓存键后追加标识,避免与未合并缓存冲突
- 新增 `parseHongguoSeriesId`、`isHongguoSeriesId` 等工具函数用于识别红果系列 ID
- 更新 README 和 `.env.example` 文档说明新配置项

* test: 增强 forward-widget 测试流程的健壮性与剧集匹配逻辑

- 注释掉 storage 模拟中的调试日志,减少测试输出干扰
- 增加进程退出码设置,测试失败时正确返回非零状态
- 新增搜索结果为空时的异常抛出,避免后续空引用
- 优化剧集选择:优先按集数精确匹配,回退到数组索引,增加匹配失败提示
- 新增弹幕分片选择:优先选择包含 450 秒左右的分片,否则取中间时间点
- 增加对分片列表和弹幕列表为空时的异常检查,确保链路完整性
- 调整输出日志,明确显示所选剧集、分片和请求时间点,便于调试

* test: 更新 forward-widget 测试用例参数

- 调整测试数据中的 episode、sourceOrder 和 title 值
- 新增 hongguoMergeAllEpisodes 配置项用于测试
- 更新测试场景以覆盖新逻辑

* feat(forward): 支持debug构建并添加真机远程日志回传

- 新增 `--debug` 构建参数,生成 `logvar-danmu.debug.js` 供真机调试使用
- debug 版本将 `httpGet/httpPost` 替换为带日志回传的调试实现
- 实时回传 handler 执行、请求详情、耗时、异常及 console 输出到服务端终端和 `/api/logs`
- 敏感信息(Cookie、token、API key)在回传前自动脱敏,且回传失败不影响主流程
- 更新 README,补充 Forward 真机调试步骤和使用说明
2026-07-26 20:56:32 +08:00
huangxd- ce8b3cbddf feat: 为ForwardWidget构建添加运行时兼容插件,并重构解压工具函数 (#376)
- 新增 forwardRuntimeCompatPlugin 插件,处理 node:async_hooks 的浏览器兼容实现,并重定向 brotli 字典文件至浏览器版本,确保 ForwardWidget 在浏览器类运行时环境中正常运行
- 将 iQiyi 源中的 Brotli 解压逻辑迁移至 codec-util 的 decompressBrotli 通用函数,统一使用 utf8BytesToString 替代 TextDecoder,提升代码复用性和可维护性
- 此举旨在减少构建产物中的 Node.js 内置模块依赖,并集中管理解码工具,便于后续扩展
2026-07-18 08:08:12 +08:00
huangxd- e851d7495d 修复最近bangumi-data继承导致fw插件不可用的问题 (#297)
* fw插件删除bangumi-data-util.js的代码导入

* fw中删除bangumi-data-util引用语句

* GitHub默认需配置ENABLE_HF_SYNC为true才开启sync_hf.yml

* 修改readme
2026-05-02 10:50:10 +08:00
huangxd- 5aedb8a15d 修复fw插件构建问题 2026-03-01 15:59:29 +08:00
huangxd- 667c860e96 修改弹幕点赞显示格式 2026-03-01 14:41:32 +08:00
huangxd- 16d6c5ab4d 修复build-forward-widget.js的包导入问题 2026-02-08 23:31:17 +08:00
huangxd- 3022f14fdf Feature: 支持分片弹幕接口并增加一键导出forward弹幕插件 (#118)
支持分片弹幕接口

/api/v2/comment 请求时支持定义 segmentflag=true 参数,用于请求弹幕分片列表
/api/v2/segmentcomment 通过comment接口返回体中的Segment类JSON数据获取单独一个分片的弹幕数据
增加一键导出forward弹幕插件,使用命令 node build-forward-widget.js

修复youku弹幕里color是字符串导致返回的格式错误的问题
2025-12-24 22:38:36 +08:00