Commit Graph
290 Commits
Author SHA1 Message Date
haodeandhuangxd- 2c3f574cd0 动漫标题缓存最大数量可配置化 (#264)
* Update vercel.json

* Update vercel.json

* Add files via upload

动漫标题缓存最大数量可配置化修改,在某些场景下通过接口获取的标题数会超过100,没有缓存到的标题无法通过id获取到弹幕,增加动漫标题缓存最大数量可配置化修改

---------

Co-authored-by: huangxd- <649924757@qq.com>
2026-03-30 22:27:20 +08:00
lilixu3 3956d80e98 修复爱壹帆源播放列表、视频信息、弹幕接口区域限制问题 (#263)
app-m10.tripdata.app 对部分地区返回"您所在的区域必须登录",
将 PLAYLIST_API、VIDEO_API、DANMU_API 域名替换为 m10.yfsp.tv
2026-03-30 22:23:34 +08:00
huangxd- f7fc36f384 更新小版本号 2026-03-30 22:23:12 +08:00
huangxd- 6a715e6372 修复hanjutv分片不可用的问题 2026-03-30 00:20:01 +08:00
Wo254992 b5d41fb42d 重构韩剧TV弹幕源的核心逻辑,优化双链路(韩小圈 HXQ + 极速版 TV)架构的稳定性和代码质量,修复多个实际运行中的 bug (#261)
* feat(hanjutv): 重构韩剧TV源为双链路架构(韩小圈+极速版)

- 搜索:并行调用 s5(韩小圈)和 TV(极速版)接口,按标题匹配自动合并为 merged 候选,未匹配的保留为独立变体
- 详情/剧集:merged 变体并行拉取双端剧集列表,按集号合并;支持 3 层降级(merged → hxq → tv)
- 弹幕:merged 剧集 ID 编码为 base64url,拉取时按 ref 分别请求并打上细粒度来源标签(韩小圈/极速版)
- 弹幕分页:韩小圈端使用 60s 窗口滑动 + 多 host 容灾,TV 端使用全量范围分页
- 加密:统一 AES-CBC 加密参数,新增 TV 端请求头构建(buildLiteHeaders)和响应解密
- 搜索身份:闭包工厂模式缓存 mobile/tv 请求头,暖身请求实例内只执行一次
- 外层合并:fetchMergedComments 保留韩剧TV内部细粒度标签,仅在缺失时补充源标签
- 点赞阈值:handleDanmusLike 支持韩小圈/极速版变体标签的低阈值判定
- 公共工具:base64url 编解码移至 codec-util,正时间戳归一化移至 time-util

* 将韩剧TV专用函数从通用工具移到hanjutv-util

encodeBase64UrlText、decodeBase64UrlText、normalizePositiveTimestamp
三个函数只有hanjutv-util在用,放在通用工具里会导致部分运行环境
文件体积超限无法加载,移到hanjutv-util作为本地函数
2026-03-29 23:53:50 +08:00
huangxd- ae4f20c9c9 增加爱壹帆源 (#262)
* 增加爱壹帆源

* 修复爱壹帆源自动匹配
2026-03-29 23:53:14 +08:00
huangxd- b4511e501e 优化镜像构建yml (#258)
* 优化镜像构建yml

* 继续优化镜像构建
2026-03-28 00:04:07 +08:00
Wo254992 ba88bc03a5 fix: 修复匹配与过滤误读全局缓存 (#257)
- 复现:全局 animes 被旧详情污染时,/api/v2/match 可能把 E42 错配到第45集;开启剧集过滤时,同 animeId 跨源候选也可能被误过滤
- 修复:匹配、bangumi 解析、剧集过滤统一优先使用当前请求详情快照,并补充回归测试
2026-03-27 23:46:54 +08:00
Elegy233 a5fb406596 为dandan实时拉取功能支持related的合并分P格式 (#256)
* bilibili.js:处理合并分P链接格式

https://www.bilibili.com/combine?cid32908181970=0-583&cid32908250608=0-378&cid32908314947=0-440

* dandan.js:修复实时拉取时b站分p参数被截断,并放行合并分P格式

* merge-util.js:同步更新dandan related 接口对接相关函数

* globals.js:1.17.7
2026-03-27 23:46:38 +08:00
Wo254992 df9696515b 修复快速切集时 lastSearch 竞态导致 offset 写入错误 (#255)
问题复现:连续看同一部剧的第6集再切第5集时,match请求会覆盖
lastSearchMap中的上下文(按IP只存一条),导致第6集的comment请求
读到第5集的episode信息,算出错误的offset写入lastSelectMap,
后续自动匹配全部偏移。

修复:
- setLastSearch 移到 match 成功后调用,附带 episodeId
- getComment 读取 lastSearch 时校验 episodeId 是否与当前 commentId 一致
- 不一致则跳过 offset 计算,避免写入错误数据
2026-03-25 22:23:06 +08:00
Elegy233 57987959c2 放宽合并工具3D2D的处理,增强API路径前缀智能处理逻辑(适配danmaku-anywhere项目请求),修复链接解析错误占位符字符串 (#254)
* dandan.js:从tags中提取3D/2D追加到类型

* merge-util.js:放宽没有3D2D标识时的处理

* worker.js:增强API路径前缀智能处理逻辑,适配Danmaku Anywhere项目仅/v2/的请求

旧逻辑面对http://127.0.0.1:9321/********/v2/search/anime会错误补全为http://127.0.0.1:9321/********/api/v2/v2/search/anime

* dandan-api.js:修复了当请求直链 URL 时,API 错误返回占位符字符串

这个问题导致了danmaku-anywhere项目在解析图片时报错,详情:https://github.com/Mr-Quin/danmaku-anywhere/issues/343
2026-03-25 22:20:42 +08:00
huangxd- e74749b3f9 更新小版本 2026-03-25 22:19:37 +08:00
huangxd- 85771eeb06 优化Tencent源搜索,如果是多语言版本,anime标题增加语言版本 2026-03-22 09:48:43 +08:00
Mr-Quin 9c3efe058e 统一dandan useragent (#253) 2026-03-22 08:04:51 +08:00
Elegy233 832d604aed 为合并支持判断3D2D,修复带有不同配音的结果合集判断失误,增加简易的内部特殊条目映射规则 (#252)
* animeko.js:从tags中提取3D/2D追加到类型

* iqiyi.js:从metaTags中提取3D/2D追加到类型

* tencent.js:从richTags中提取3D/2D追加到类型

* merge-util.js:支持判断3D2D,修复带有不同配音的结果合集判断失误,增加简易的内部特殊条目映射规则
2026-03-22 08:04:32 +08:00
huangxd- 42ae6b8a61 优化Tencent源搜索,补充国粤多语言版本场景下返回多版本 2026-03-22 08:03:47 +08:00
huangxd- c8b42221aa 回退edgeone相关修改并修复edgeone 405问题 (#251)
* Revert "修复 EdgeOne token 路由 match 405 (#248)"

This reverts commit e29c9848bc.

* 修复edgeone 405问题
2026-03-21 00:41:07 +08:00
huangxd- 33a0a37831 修改变量描述 2026-03-20 22:11:40 +08:00
Celestials316 e29c9848bc 修复 EdgeOne token 路由 match 405 (#248) 2026-03-20 21:42:10 +08:00
Celestials316 6d587d910e 修复搜索结果超过 100 条时详情与弹幕失效 (#246)
* 修复搜索缓存详情解析

* 修复搜索缓存详情快照读取与隔离问题
2026-03-20 21:41:37 +08:00
huangxd- 554fc14084 修改小版本号 2026-03-20 21:40:49 +08:00
Wo254992andClaude Opus 4.6 b267db281d 新增自定义颜色池功能,CONVERT_COLOR为color时支持自定义颜色 (#243)
- 新增 COLOR_POOL 环境变量,支持自定义弹幕随机颜色池
- 前端新增色轮选色器、随机添加、批量添加弹窗(支持十进制和#hex格式)
- 颜色池样式提取到 components.css.js,JS 中仅保留动态样式
- 不配置时使用默认颜色池,行为与原来一致
- 同步更新 forward-widget、README、.env.example

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 22:39:27 +08:00
huangxd- 8e1487409d 兼容ios环境下WebAssembly不存在的场景,适配peekpili搭建本地服务 (#245) 2026-03-19 22:38:56 +08:00
Celestials316 7cff1c991b 修复剧集搜索详情丢失 (#242)
变更内容:为 searchEpisodes 增加请求级详情缓存,避免广义搜索结果被全局 100 条上限裁剪后丢失

变更内容:扩展 searchAnime 的搜索缓存结构,在命中缓存时同步回填详情数据

变更内容:抽取 bangumi 详情构建逻辑并复用,保持 searchAnime 和 searchEpisodes 返回结果一致
2026-03-18 23:39:06 +08:00
Celestials316 faa570273f DANMU_OFFSET 支持按来源指定弹幕偏移,重构偏移系统为独立模块,配置界面增加快速添加规则,修复模态框滚动问题 (#241)
* DANMU_OFFSET 支持按来源指定偏移,配置界面增加快速添加规则,修复模态框滚动问题

- DANMU_OFFSET 扩展 @来源 语法,支持针对特定弹幕来源单独设置偏移量
- 查找优先级:带来源规则优先,fallback 到通用规则,层级从集->季->剧名逐级回退
- 配置界面增加"添加规则"按钮,展开快速配置面板(剧名/季/集/来源/偏移秒数)
- 来源列表从后端 ALLOWED_SOURCES 动态加载,支持多选
- 修复所有变量编辑模态框内容过长时顶部无法滚动的问题

* 更新文档:DANMU_OFFSET 补充 @来源 语法说明

- README 功能介绍和环境变量表格补充来源指定格式
- .env.example 补充来源语法注释和示例

* 重构弹幕偏移系统:独立 offset-util 模块,支持合并源按来源分别偏移

- 新建 offset-util.js,集中偏移逻辑(解析/匹配/应用)
- parseOffsetRules 启动时解析一次,缓存到 globals.danmuOffsetRules
- resolveOffset 支持多级路径匹配(集>季>剧)、来源特定/all通配/通用规则优先级
- applyOffset 兼容 p/t/progress/timepoint 多种时间字段格式
- 支持来源别名映射(tencent→qq, iqiyi→qiyi, bilibili→bilibili1)
- 合并源流程:对齐后、合并前按来源分别应用偏移
- 单源流程:convertToDanmakuJson 前应用偏移
- 删除 danmu-util.js 中旧的 parseOffset/getOffset/applyDanmuOffset

* 优化偏移配置界面:inline styles 提取到 CSS,来源标签选中状态改用 class 控制
2026-03-18 23:38:31 +08:00
huangxd- 13fe8519f1 修改小版本号 2026-03-18 23:37:56 +08:00
lilixu3 f04403962f 优化弹幕测试界面的视频时长获取 (#239)
* 优化弹幕测试页时长获取

变更内容:
- 优先从评论接口和源字段提取测试页视频时长
- 补充不同来源时长回退与测试页展示逻辑
- 更新相关文档与测试用例

* 移除测试页时长界面改动

变更内容:
- 删除接口调试页面中附带时长参数与展示逻辑
- 回退测试页说明文档中的时长处理描述
- 保留评论接口时长能力与相关测试用例

* 恢复接口调试页时长参数

变更内容:
- 恢复接口调试页面中的duration参数与时长展示逻辑
- 恢复UI说明文档中的时长处理描述
- 保持评论接口视频时长能力与测试页联动

* 调整测试页时长展示细节

变更内容:让 comment JSON 的 videoDuration 字段固定排在返回体开头
变更内容:接口调试页在 xml 格式下隐藏附带时长开关并在切换时清空该参数
变更内容:版本号更新为 1.17.1
2026-03-18 00:34:24 +08:00
lilixu3 cdbea1b77d 修复韩剧TV S5 搜索请求 (#238)
变更内容:
- 更新韩剧TV S5搜索请求画像与版本头配置
- 统一韩剧TV应用请求头中的User-Agent与版本号
- 去除无效登录头并保持公开仓库可提交的通用设备画像
2026-03-18 00:33:46 +08:00
huangxd- 410ff59d61 修改弹幕时间偏移配置说明 2026-03-18 00:32:56 +08:00
Elegy233 2dac103629 修复合并源时同一个源不能参与不同组合并的问题 (#230)
* merge-util.js:巩固过滤集相关函数,修复同一个源不能参与多组合并配置

* bahamut.js:将tmdb智能标题前的标题传给合并工具

解决Fate/strange Fake智能替换成中文别名后无法关联的问题

* bilibili.js:将接口中的org_title条目原名也传给合并工具对比

解决 命运-奇异赝品 黎明低语 无法与英文别名关联

* bahamut.js:修复时间轴取整导致的去重偏差

* merge-util.js:修复执行顺序bug

* merge-util.js:修复合集复用副源bug,调整结果排序为用户配置优先

* common-util.js:清理标题空格的同时清理修饰性符号

修复【我推的孩子】括号带与不带时被过滤掉了

* bahamut.js:去除多余空格
2026-03-15 12:58:01 +08:00
huangxd- c5b7221997 新增记住手动选择结果功能新增支持记住集episode/弹幕时间偏移配置/IP黑名单列表配置 (#231)
* 记住手动选择结果功能新增支持记住集episode,下次自动匹配时会对集进行偏移

* 更新README

* 新增IP黑名单列表配置,通过环境变量IP_BLACKLIST配置

* 增加上次匹配剧标题和本次弹幕获取据标题的匹配,防止两者不对应

* 新增弹幕时间偏移配置

* 补充forward插件相关配置

* 增加打印日志

* 修复findIndexById方法没有引用的问题

* 优化lastSelectMap,支持存储不同季

* 优化extractSeasonNumberFromAnimeTitle中尾部阿拉伯数字(如"某某 2" 或 "某某2",但不超过2位)

* 再次优化尾部阿拉伯数字问题
2026-03-15 12:57:32 +08:00
Elegy233 9c637a84d6 弹弹源tmdb原名搜索的结果不再经过标题过滤工具 (#228)
* dandan.js:tmdb原名搜索的结果不再经过标题过滤工具

* merge-util.js:微调评分数值
2026-03-12 23:37:03 +08:00
huangxd- 512b7f36ce 推送弹幕标签页和弹幕测试标签页中新增跳转到指定集数的功能 (#229)
* 推送弹幕标签页和弹幕测试标签页中新增跳转到指定集数的功能,解决比如像名侦探柯南这种集数很多的剧,要滑动很久才能定位到集的问题

* 修复两边都渲染后冲突的问题
2026-03-12 23:36:31 +08:00
Elegy233 0304dd8b8b 标题宽松匹配增加季信息过滤,智能返回用户需要的季应对过滤失准 (#224)
* common-util.js:增加提取季度过滤,应对相似度匹配的失准

并增加严格标题匹配时的例外“年番”、“合集”

* animeko.js:引用common-util工具,删除重合逻辑

* dandan.js:引用common-util工具进行结果过滤,并支持多季场景下的降级搜索

多季场景下的降级搜索:实现搜索“超自然武装当哒当 第二季”能够搜索到“胆大党 第二季”

* merge-util.js:修复偏移时间轴提取错误,优先从p字段提取

* Update merge-util.js
2026-03-11 23:41:15 +08:00
huangxd- 77879719cb 修复DANMU_OUTPUT_FORMAT默认设置为xml的场景下弹幕测试页获取弹幕提示json解析错误的问题 (#227) 2026-03-11 23:40:51 +08:00
lilixu3 8b2e708ebc 新增弹幕测试功能 (#223)
* 新增弹幕测试功能

接口调试页面新增「弹幕测试」标签页,包含:
- 自动匹配测试:输入文件名自动匹配并获取弹幕,模拟播放器自动加载流程
- 手动匹配测试:搜索动漫 → 选择番剧 → 选择剧集 → 获取弹幕
- 弹幕统计:弹幕数、时长、高能时刻、平均密度、匹配时长、类型分布
- 弹幕热力图:按时间段可视化弹幕密度分布
- 弹幕列表:支持全部/滚动/顶部/底部过滤,显示颜色和类型标签,懒加载每次100条
- 导出功能:支持导出JSON和XML格式弹幕文件
- 异常时间处理:使用P99分位数剔除异常时间点
- 视图导航优化:搜索结果/剧集详情/弹幕详情逐级切换,带返回按钮和加载动画

* 优化弹幕测试工具栏样式

- 返回按钮文字缩短,避免挤压导出按钮换行
- 导出按钮改蓝底白字,统一风格
- 导出按钮自适应布局
2026-03-10 22:58:05 +08:00
huangxd- 80953cea3c 修改版本号 2026-03-10 22:57:39 +08:00
Elegy233 a656308fc2 增加弹弹第三方弹幕源实时拉取功能,用于覆盖掉弹弹服务器内缓存的旧弹幕 (#220)
* dandan.js:增加related接口,实现拉取绑定的第三方数据源

同时传出related接口的偏移值和绑定链接给合并工具的跨源时间轴对齐使用

* dandan-api.js:挂载dandan源传出的相关参数,同时更新源标签的标记方式

* merge-util.js:接收来自dandan源准确的偏移值和链接信息,替换掉低精度计算

* danmu-util.js:基于准确的源标签做更加完美的相关处理

* envs.js:增加弹弹第三方数据源实时拉取开关,默认开启

* systemsettings.js:增加一个默认值为true的变量保持开启状态

* .env.example:增加弹弹第三方数据源实时拉取开关说明

* Add REAL_TIME_PULL_DANDAN option to README

* .env.example:统一弹弹第三方数据源实时拉取说明

* .env.example:将第三方数据源统称为第三方弹幕源

* envs.js:将第三方数据源统称为第三方弹幕源

* README.md:将第三方数据源统称为第三方弹幕源

* merge-util.js:去除已经没有使用的旧函数

* systemsettings.js:REAL_TIME_PULL_DANDAN不再保持true

* dandan.js:related接口根据开关动态请求

只在REAL_TIME_PULL_DANDAN实时拉取开启状态或者启用了MERGE_SOURCE_PAIRS合并功能才请求

* envs.js:实时拉取默认设置为关闭

* .env.example:实时拉取默认设置为关闭

* README.md:实时拉取默认设置为关闭
2026-03-04 22:40:15 +08:00
huangxd- 0616a03d86 优化hanjutv源代码 (#222) 2026-03-04 22:39:46 +08:00
huangxd- 124e72a436 hanjutv源增加极速版接口作为兜底 (#219)
* 优化弹幕点赞数显示,修复镂空爱心前数字样式异常;redis包修改成配置后动态引入

* hanjutv源增加tv端接口作为兜底
2026-03-03 23:40:32 +08:00
Elegy233 c01df2f483 动画源细节优化 (#216)
* animeko.js:提高搜索接口结果数量,并支持翻页

* bahamut.js:支持解析正确的类型
2026-03-02 23:50:07 +08:00
huangxd- 0c2d44408a 优化弹幕点赞数显示,修复镂空爱心前数字样式异常;redis包修改成配置后动态引入 (#217) 2026-03-02 23:49:49 +08:00
huangxd- 5aedb8a15d 修复fw插件构建问题 2026-03-01 15:59:29 +08:00
huangxd- b76ccc3de3 修改弹幕点赞显示样式 2026-03-01 14:45:08 +08:00
huangxd- 667c860e96 修改弹幕点赞显示格式 2026-03-01 14:41:32 +08:00
huangxd- b89da2b4f4 调整点赞图标🔥与弹幕文本的距离 2026-03-01 14:10:22 +08:00
huangxd- 8b7a86ce3f 修改点赞图标与弹幕文本的距离 2026-03-01 14:03:03 +08:00
Elegy233 ec52b54bd7 合并增加基于dandan的跨源时间轴对齐功能,使在dandan平台调整过的弹幕源延迟合并拉取时同步生效 (#210)
* merge-util.js:增加基于dandan的跨源时间轴对齐功能,解决在dandan平台调整过的弹幕延迟合并拉取时没有生效的问题

* dandan-api.js:增加跨源时间轴对齐步骤

* dandan-api.js:去除时间轴对齐迭代产生的非必要函数
2026-03-01 13:47:24 +08:00
Wo254992 02f677eba8 修复hanjutv分页游标异常导致循环卡住并优化弹幕累加性能 (#209)
* 修复韩剧TV分页游标不前进导致的循环卡住

变更内容:在 getEpisodeDanmu 分页循环中增加 nextAxis <= fromAxis 时的退出条件,防止上游异常游标导致请求无限循环。

* 优化韩剧TV弹幕累加降低内存抖动

变更内容:将 getEpisodeDanmu 中 allDanmus.concat(...) 改为 push(... ) 原地追加,减少分页循环中的数组复制开销。
2026-03-01 13:46:54 +08:00
huangxd- 10b2ca89ae 支持本地redis缓存配置 (#213)
* 弹幕点赞数改成镂空♡显示,数量使用下标数字,并增加环境变量LIKE_SWITCH开关该功能,默认开启

* 增加hanjutv日志打印

* 修改说明

* 支持本地redis缓存配置

* 增加render环境的判断

* Revert "增加render环境的判断"

This reverts commit 952257895a2705debf079485c8558969b46f986a.

* 修改注释

* 修复cloudflare不支持redis包安装的问题

* 修复cloudflare不支持redis包安装的问题
2026-03-01 13:46:28 +08:00