Commit Graph
356 Commits
Author SHA1 Message Date
huangxd- cda5ba5c6e chore(release): bump version to 1.19.11 2026-06-13 13:43:55 +08:00
Elegy233 d4caa14cf2 feat: 逐源管道解耦 searchAnime 两阶段流程 (#341)
将 searchAnime 中的两阶段阻塞模型(Promise.all(search) → executeSourceHandlers)
改为逐源管道模型:每个源形成独立的 search → executeSourceHandlers 流水线,
search 完成后通过 {[source]: searchResult} 调用 executeSourceHandlers 处理该源,
不等待其他源完成。

改动说明:
- 构建 sourceSearchMap 存储各源搜索 Promise(搜索并发度不变)
- 每个源的搜索 Promise 通过 .then() 链式调用 executeSourceHandlers
- 传入仅含当前源数据的 {[source]: searchResult},使 executeSourceHandlers 仅处理该源
- executeSourceHandlers 增加 activeSourceKeys 过滤,仅处理 resultData 中存在数据的源
- 各管道独立维护 isolatedAnimes 和 isolatedDetailStore
- 所有管道通过 Promise.allSettled 并发执行
- 管道完成后按 SOURCE_ORDER 顺序合并结果(animeId 去重、detailStore 键去重)
- resultData 在管道 .then() 回调中填充,供 S2+ 季度扩展逻辑读取
- executeSourceHandlers 函数未做任何修改,源路由逻辑仍由其集中维护

预期收益:
消除阶段壁垒,各源 handleAnimes 不再等待最慢源搜索完成,
可减少约 max(handleAnimes) 的等待时间,同时实现管道级错误隔离

网络层容错增强(http-util.js):
- 自适应重试退避:网络层物理阻断(ETIMEDOUT / ECONNRESET / AbortError)
  采用 100ms 短退避快速重试;服务端业务错误保持原有指数退避逻辑,
  在不影响服务端错误安全性的前提下加速 GFW 间歇性阻断场景的恢复
- 修复 linkSignal 事件监听器内存泄漏:
  finally 块中 removeEventListener 注销监听器,阻断跨请求引用累积

巴哈姆特源容错增强(bahamut.js):
- HTTP 请求重试次数提升至 3(共 4 次尝试),配合自适应退避提高反代可达率
- tmdbSearchPromise 错误处理与 originalSearchPromise 保持一致:
  网络失败返回 {success: false} 而非 throw,避免快速失败吞掉搜索结果
- handleAnimes 增加 epData 结构校验,防止 getEpisodes 返回空数组时 TypeError
- getEpisodes 日志仅输出 videoSn/animeSn/title/totalEpisode/episodes 关键字段,
  避免全量输出 contentHtml/relatedGnn 等冗余数据

日志裁剪(kan360.js):
- zongyi response 日志从全量 API 响应改为输出每页剧集条数
- search response 日志从全量 API 响应改为输出搜索结果数组
2026-06-07 11:37:04 +08:00
Elegy233 dc41b9147d fix: REMEMBER_LAST_SELECT 偏好记录在季节性缓存分区后失效,同时修复跨源标题别名拒绝写入 (#340)
改动涉及问题:
1. PR #303 引入的搜索缓存季度分区导致单季度搜索覆盖 lastSelectMap 的 animeIds,
   后续 setPreferByAnimeId 因找不到目标 animeId 而静默失败
2. 手动指定的优选番剧在平台偏好场景下被非优选源覆盖(手动偏好优先级低于平台偏好)
3. 评论 handler 的 titleMatches 仅检查主标题,不同源对同一番剧的标题存在差异
   (如 bilibili "正相反的你与我" vs dandan "相反的你和我"),导致跨源的偏好无法记录

修复:
cache-util.js
- storeAnimeIdsToMap: 合并旧 animeIds 而非覆盖,避免单季度搜索结果清空全量 ID
- findAnimeIdByCommentId: 返回 anime.aliases(各源已填充),用于标题兼容校验

dandan-api.js
- searchAnime: 季节性缓存 miss 时回退至泛化(无季度)缓存
- matchAniAndEp: 手动优选番剧增加 isPreferredAnime 标记,含三重保障:
  目标平台未命中时放宽平台限制、+9999 评分权重确保优先、命中即时跳出
- getComment: 偏好写入闸门增加别名匹配,防止因标题差异导致偏好静默丢弃
2026-06-07 11:36:46 +08:00
huangxd- 1bca4ea470 chore: bump version to 1.19.10 2026-06-07 11:37:18 +08:00
Wo254992 81a320177e fix: 修复特殊字符标题搜索匹配失败 (#337)
* fix: 修复特殊字符标题搜索匹配失败

改动详情:

- 使用 URL.searchParams 构造内部 /search/anime 搜索地址
- 避免标题中的 & 等特殊字符被当作查询参数分隔符截断
- 补充回归测试,验证 keyword、season、episode 参数保持正确

* refactor: 简化搜索地址构造调用
2026-06-06 12:18:25 +08:00
dyphireandhuangxd- aad97a0f88 fix(kan360): 360 kan 的 /v1/detail 接口在集数非常多时获取失败 (#336)
Co-authored-by: huangxd- <649924757@qq.com>
2026-06-06 12:18:08 +08:00
Elegy233 ee15f5871c feat: 前端新增覆盖全项目的日志筛选分类系统 (#335)
* feat: 前端新增覆盖全项目的日志筛选分类系统

基于项目架构建立三级日志标签体系(编排层/工具层/源层),
覆盖 50 个文件。

=== 前端日志分类引擎 (logview.js + components.css.js) ===
- 新增 getLogCategory 标签分类引擎,支持标签提取、归类与续行上下文继承
- ISO 时间戳与 HH:MM:SS 格式精确过滤,避免误杀数字开头标签(如 360kan)
- 续行 _inherit_ 机制:无标签行自动继承上一行分类
- normalizationMap 归一化映射:变体标签统一收束至标准分类
- 标签筛选按钮 UI 按 system → utils/cache/merge → 源 三层分组排序

=== 后端标签规范化 ===
- sources/ 20 个源文件:弹幕提取、搜索函数、JSON 响应等全部 log 调用补全源标签
- utils/ 12 个工具文件:以 [Utils] [Name] 格式统一,保留 [Cache][Merge] 独立标签
- apis/dandan-api.js 采用 [system] [SubName] 层级格式:
  子类别覆盖 Duration / executeSourceHandlers / searchAnime / LogVar-API /
  Episodes / matchAnime / Spillover / getBangumi / Offset / YearFilter /
  Match / Bangumi / SegmentComment
- apis/env-api.js 4 处 console.error 改用 log() 纳入日志缓冲区
- configs/handlers/ 8 个文件补全 [system] [Server] 标签
- worker.js 补全 [system] [Server] / [Utils] [Rate Limit] / [Utils] [IP Blacklist]
- forward/forward-widget.js 补全 [Forward],删除重复 console.log
- node-functions/index.js console.log → log() 统一纳入日志系统
- TMDB 标签拆分:sources/tmdb.js 保持 [TMDB],utils/tmdb-util.js 使用 [Utils] [TMDB]
- fetchMergedComments 合并拉取路径补全源级获取弹幕日志

=== 基础设施 ===
- http-util.js 新增 sourceLogContext (AsyncLocalStorage) 跨异步日志上下文追踪
- http-util.js 新增 toLogSourceName() 集中映射函数(360→360kan, imgo→mango)
- http-util.js 诊断续行移除重复标签前缀
- 额外季数检索改为并行 Promise.all
- 前端 JSON 续行切割修复:HH:MM:SS 时间戳识别 + 无标签行自动继承

=== 标签层级 ===
系统层:[system] [Server]             [AI]
工具层:[Utils] [Name]                 [Cache] [Merge]
源层:  [360kan][vod][bilibili][tencent][youku][iqiyi]
        [mango][migu][renren][hanjutv][bahamut][dandan]
        [sohu][leshi][xigua][maiduidui][aiyifan][animeko]
        [Douban][TMDB][custom][other]
插件层:[Forward]

* 回退node-functions/index.js
2026-06-06 12:16:03 +08:00
huangxd- 3ce9ecc1ec chore: bump version to 1.19.9 2026-06-06 12:16:00 +08:00
Elegy233 6752d867cf feat(animeko): 新增 Bangumi 镜像站支持并引入详情接口多源降级适配 (#333)
- animeko.js:
  1. 搜索节点扩容: 为 Bangumi V0 搜索接入高性能镜像站 (api.bangumi.one),并依据代理配置状态动态分配轮询优先级(代理状态:官方/代理 > 镜像;直连状态:镜像 > 官方)。
  2. 详情灾备链路: 以聚合度最高、性能最优的 Animeko V2 API 作为首选详情节点,重新接入镜像 V0 与官方 V0 节点作为底层的降级备份。
  3. 详情 V0 适配器: 构建降级适配器。在触发 V0 节点降级时,直接复用搜索链路已下发的基础元数据,仅并发请求剧集与关联端点,在内存中将数据无缝归一化为 V2 结构,确保上层业务逻辑零感知且网络开销最小化。
2026-05-31 20:11:02 +08:00
Elegy233 a94256c591 feat: executeSourceHandlers 并发化执行 handleAnimes (#331)
* feat: executeSourceHandlers 并发化执行 handleAnimes

将 executeSourceHandlers 从串行 await 改为并发 Promise.allSettled 执行:
- 每个源分配独立的 isolatedAnimes 和 isolatedDetailStore 容器
- 所有源的 handleAnimes 并发执行,互不干扰
- 完成后按 SOURCE_ORDER 顺序合并结果,animeId/detailStore 键去重时先到先得
- 单个源失败不影响其他源(Promise.allSettled 容错)

* Update dandan-api.js
2026-05-31 12:56:06 +08:00
Elegy233 ad303b1b8e feat(animeko): 详情接口迁移至 Animeko V2 API 并新增 animeko@ 代理反代支持 (#330)
- animeko.js:
  1. 详情与关联接口全面迁移至 Animeko V2 API (/v2/subjects),并新增 animeko API 隔离逻辑(API请求不走代理,符合预期)。
  2. 为 Bangumi API 搜索接口新增 animeko@ 代理/反代支持。
  3. 完整集成 4 个 Animeko 备用域名,根据部署时区(UTC+8/其他)动态反转分配节点的轮询优先级。
  4. 新增模块级短效缓存 (3分钟 / 100条限制),消除在“关系检测”与“剧集获取”跨方法调用时产生的重复接口请求。
  5. 修复 _extractRelations 方法中因原始接口 ID 数组与 Name 数组长度不对齐导致的潜在数据错位问题,改为纯 ID 校验提取。
  6. 为 API 降级轮询机制显式注入 3000ms 超时控制,加速不可用节点的故障跳过。

- globals.js:
  新增 animeko@ 代理/反代规则的解析与支持,配合 animeko.js 实现按需代理。

- http-util.js:
  使 httpGet 与 httpGetWithStreamCheck 支持接收 options.timeout 参数,提供单次请求维度的自定义超时配置能力。

- README.md & config/.env.example:
  添加 Animeko 代理及反代的配置说明与使用文档。
2026-05-31 12:54:27 +08:00
Elegy233 0cb28cea9a feat(bangumi-data): 集成新 Bangumi-Data 来源,应用后为 bahamut 支持节省搜索请求 (#329) 2026-05-31 12:53:41 +08:00
Elegy233 4c852260ce fix(util): 修复合并映射表可能污染常规源合并组;优化标题宽松匹配相似度算法,避免完全无关结果通过 (#325)
* fix(util): 修复合并映射表可能污染常规源合并组

* feat(util): 优化标题宽松匹配相似度算法,避免完全无关结果
2026-05-31 12:53:04 +08:00
huangxd- ca05231b51 SOURCE_ORDER 默认源排序修改为douban,360,renren,hanjutv 2026-05-31 12:51:36 +08:00
Wo254992andWo254992 9761c4dd20 fix: allow fongmi mapped title reassignment (#323)
Co-authored-by: Wo254992 <Wo254992@users.noreply.github.com>
2026-05-25 17:38:51 +08:00
piaoyizy d5c4de4f8b 修复fongmi接口不支持剧名标题映射表 (#321)
fongmi接口不支持剧名标题映射表
2026-05-25 10:09:52 +08:00
Elegy233 59c59405d2 feat(util): 完善 Bangumi Data 缓存生命周期 (#320)
* feat(util): 增加清理磁盘缓存文件函数

* feat(util): 动态关闭 Bangumi Data 时,同步清理物理磁盘缓存

* feat(api): 清理缓存时清理 Bangumi Data 内存与磁盘

* feat(ui): 清理缓存说明增加 Bangumi Data
2026-05-25 10:08:24 +08:00
Elegy233 1e9cff9f76 fix(util): 修复搜索叠词会产生大量无关结果的问题,修复 TMDB 日语原名检索特殊场景下匹配到无关结果的问题 (#319)
* fix(util): 给 TMDB 工具的日语原名检索新增结果类型校验,修复特殊场景下匹配到无关结果的问题 

* fix(util): 修复相似度计算使用'Set'字符去重导致的叠词场景过滤失效问题

* fix(util): 提高日语原名搜索的相似度阈值,并安全释放事件监听器
2026-05-25 10:07:20 +08:00
Elegy233 e6c292c463 feat(ui): 新增 /api/cache/animes API 接口获取最近的 animes 缓存,应用到CUSTOM_MERGE_RULES与DANMU_OFFSET配置面板中辅助填写 (#318)
* feat(api): 新增处理获取最近animes缓存列表请求函数

* feat(api): 新增 `/api/cache/animes API` 接口

* feat(model): 新增 `mergedChildren` 与 `isHiddenChild` 参数

* feat(utils): 记录合并层级

* feat(ui): 新增最近数据与`animes`缓存面板样式

* feat(ui): 新增最近数据与`animes`缓存面板功能

* feat(md): 新增GET `/api/cache/animes`说明

* fix(ui): 修复合并结果由于长英文字符串导致前端网格布被撑破的 UI 错位问题

远古问题

* fix(ui): 调整换行逻辑提升可读性

* feat(ui): 给MERGE_SOURCE_PAIRS也添加最新数据面板,供合并参考

Add button to fetch and display recent data in the UI.
2026-05-25 10:05:32 +08:00
Elegy233 184f60e558 fix(kan360): 修复360看源无法获取个别剧的最新一集 (#317) 2026-05-25 10:04:42 +08:00
huangxd- 379fa7f7ab 修改小版本号 2026-05-25 10:02:00 +08:00
woleigedouer ec0cbda5ec fix(iqiyi): 修复爱奇艺弹幕分片规则失效 (#311)
- 更新爱奇艺弹幕接口为 60 秒 Brotli 分片规则,支持 protobuf 弹幕解析,并将空分片 404 作为无弹幕处理。
2026-05-18 23:02:48 +08:00
Elegy233 d894ccdd3d perf(match): 为 match 接口支持跨季集数顺延匹配,提高匹配成功率;新增 CUSTOM_MERGE_RULES 环境变量,用于自定义源合并行为 (#310)
* perf(api): 将数据源处理逻辑提取为公共函数,加入'跨季集数顺延映射'功能提高 match 接口匹配成功率

* feat(utils): 等价重组合并工具,使用12层清晰分层并补全所有函数必要注释,降低维护难度

我是超级重构大师()这一次真的好起来了结构清晰多了()

* perf(envs): 新增合并映射表('CUSTOM_MERGE_RULES')变量与解析函数

* feat(utils): 使合并工具支持合并映射表

* feat(ui): 新增CUSTOM_MERGE_RULES 合并映射表 专用编辑界面

* feat(env): 新增合并映射表配置说明

* feat(md): 新增合并映射表配置说明
2026-05-18 23:02:08 +08:00
huangxd- d622a5be8d 修改小版本号 2026-05-18 23:01:51 +08:00
piaoyizy 4e5b7f69ad feat: 为fongmi接口增强网盘命名集数识别能力 (#307)
- 新增 16 种集数提取正则模式 (EP/E/Episode/Emby/括号/分隔符等)
- 新增日期格式识别 (YYYY-MM-DD, 紧凑日期)
- 提升网盘文件名集数识别准确率
2026-05-16 09:31:57 +08:00
Elegy233 ffe4c68293 perf(search): 重构源多季场景匹配逻辑,大幅降低无效请求提升匹配速度;为人人源新增多端接口与智能路由,改善区域连通性问题 (#303)
* perf(api): 增加季参数透传与缓存隔离机制

- 在 `matchAnime` 重定向时提取 season 参数并隐式传递给 `searchAnime`。
- 修改所有源站 `handleAnimes` 调用,追加 `querySeason` 参数下发。
- 重构搜索缓存的 Key 生成规则,引入 `_S{season}` 后缀,实现按季度的缓存空间隔离,解决换季搜索时的旧缓存穿透 Bug。

* feat(utils): 升级季度混合匹配算法

- 升级 `titleMatches` 函数签名,新增 `parsedSeason` 参数支持。
- 统一向外部源站暴露 `getExplicitSeasonNumber` 与 `extractSeasonNumberFromAnimeTitle` 解析函数。

* perf(sources): 实现详情请求前置拦截与短路回退

* perf(sources): 实现详情请求前置拦截与短路回退

* perf(sources): 实现详情请求前置拦截与短路回退

* perf(sources): 实现详情请求前置拦截与短路回退

* perf(sources): 实现详情请求前置拦截与短路回退

* perf(sources): 实现详情请求前置拦截与短路回退

* perf(sources): 实现详情请求前置拦截与短路回退

* perf(sources): 实现详情请求前置拦截与短路回退

* perf(sources): 实现详情请求前置拦截与短路回退

* perf(sources): 实现详情请求前置拦截与短路回退

* perf(sources): 实现详情请求前置拦截与短路回退

* perf(sources): 实现详情请求前置拦截与短路回退

* perf(sources): 实现详情请求前置拦截与短路回退

* perf(sources): 实现详情请求前置拦截与短路回退

* perf(sources): 实现详情请求前置拦截与短路回退

* perf(sources): 实现详情请求前置拦截与短路回退

* perf(sources): 透传querySeason

* perf(sources): 实现详情请求前置拦截与短路回退

* perf(sources): 实现详情请求前置拦截与短路回退

* perf(sources): 实现详情请求前置拦截与短路回退

* perf(api): 补全 `querySeason` 参数下发

* feat(test): 增加 Bangumi Data 本地检索与季度参数的拦截检索测试

* fix(sources): 修复韩剧TV定义了多余的参数导致缓存错误赋值无法参与match匹配

* perf(sources): 人人源新增 Win 端接口与智能路由,改善区域连通性问题

https://github.com/huangxd-/danmu_api/issues/295
wni 接口的详情接口疑似存在验证密钥,暂时没能力获取目前只添加了它的搜索和弹幕接口

* Fix TV_DANMU_HOST URL in renren.js

* feat(utils): 新增 `validStatusCodes` 参数配置,允许外部主动接管特定的非 2xx 状态码

配合修复人人无弹幕状态码是404导致重试

* perf(sources): 修复人人源在“剧集无弹幕”时返回 HTTP 404导致无效重试的问题

* perf(sources): Animeko弹幕获取阶段引入人人一样的智能路由机制

* perf(sources): 使用曲线救国的方式补全人人 win 详情接口,同时增加 mac 接口,并调整了函数整体结构提高可读性

复杂化致歉()但是现在拥有了四个接口,完善的智能接口回退,希望这是最后一次更改这个源(

* perf(sources): 挂载 WIN 接口的别名,并支持识别会员提示弹窗用于智能偏移时长

https://github.com/huangxd-/danmu_api/issues/305

* perf(sources): 调整日志输出

* feat(utils): 修复合并后源的别名列表丢失

* perf(sources): 完善接口降级逻辑,防止误触发

Bug修呀修

* perf(api): 清理合并导致的 search 接口多余 links

* 1.19.5
2026-05-16 09:31:11 +08:00
Elegy233 8e3d208c2f 大幅优化 Bangumi Data 检索性能与速度,避免中低端机器开启为负优化 (#301)
* bangumi-data-util.js:大幅优化数据查询性能

* tmdb-util.js:异步查询本地 Bangumi Data

* animeko.js:异步查询本地 Bangumi Data

* bahamut.js:异步查询本地 Bangumi Data

* bilibili.js:异步查询本地 Bangumi Data

* dandan.js:异步查询本地 Bangumi Data

* bangumi-data-util.js:兼容旧版数据缓存

* tmdb-util.js:调整日志输出

* renren.js:捕获空弹幕数据,直接返回空数组

* renren.js:还原修改,因为并不有效

Removed checks for 'Document not found' error in response handling.

* merge-util.js:再次修复Re0最新季因共识差导致animeko映射错误

* bangumi-data-util.js:再次优化,引入倒排索引避免未来数据越来越多检索变慢

* dandan.js:如果结果命中用户需要的季,则跳过非目标季相关请求

减轻容易报错的详情接口压力

* merge-util.js:只有 1 个资源时不进行合并计算

* bahamut.js:如果结果命中用户需要的季,则跳过非目标季相关请求

* Add extractSeasonNumberFromAnimeTitle to imports

* Add extractSeasonNumberFromAnimeTitle to imports

* Add extractSeasonNumberFromAnimeTitle to imports

* bilibili.js:更新 Bangumi Data 数据对齐匹配逻辑,修复中配版对齐错误

* bahamut.js:同步更新 Bangumi Data 数据对齐匹配逻辑

* bahamut.js:补全 Bangumi Data 数据对齐标识,修复对齐后TMDB标题替换错误启动

* tmdb-util.js:调整智能标题替换执行逻辑,无有效资源时不再进行无效计算
2026-05-10 08:16:11 +08:00
huangxd- a51fb8d408 首页增加完全免费声明 2026-05-10 08:14:10 +08:00
Wo254992 96377c9143 fix: 修复 b23.tv 短链重定向解析 (#300)
改为读取 b23.tv 第一跳 Location,避免继续请求最终页面时遇到风控失败;补充短链重定向回归测试。
2026-05-05 07:58:57 +08:00
Elegy233 87b7c468d1 调整合并工具极端情况下的集映射 (#299)
* merge-util.js:共识集计算加入一定判断,修复Re0最新季因共识差导致animeko映射错误

* merge-util.js:调整最终日志输出
2026-05-05 07:58:34 +08:00
huangxd- 8d84256f45 修改小版本号 2026-05-05 07:58:00 +08:00
piaoyizy 71075b554b feat: 适配 FongMi影视 原生弹幕接口 (#296)
* feat: add FongMi native danmaku adapter

* feat: improve FongMi title and episode matching
2026-05-02 10:50:53 +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
Wo254992 92fef384e6 分离 HF README 元数据:新增 README.hf.md,sync_hf.yml 推送前自动替换 (#292)
参考 hf-space-clean-readme 分支做法:
- README.md 保持干净文档,不放 HF YAML frontmatter
- README.hf.md 专门存放 HF metadata(title/emoji/sdk/port)
- GitHub Actions sync_hf.yml 在推送到 HF Space 前临时 cp 替换
2026-04-30 23:39:41 +08:00
huangxd- 0ab244b1c4 readme中增加 danmu_api 图文教程 链接 2026-04-30 23:08:09 +08:00
huangxd- 7581b929bb claw下线,删除相关内容 2026-04-30 22:58:39 +08:00
woleigedouer c4e6230bf8 fix(tencent): 支持别名匹配以提升搜索准确度 (#291)
- 新增 extractAliasesFromHintWords 方法从hintWords 提取别名
- 新增 titleOrAliasMatches 方法支持标题和别名匹配
- 在 getAnimeInfo 和 searchAnime 中添加 aliases 字段
- 优化搜索过滤逻辑,使用别名匹配替代单一标题匹配
2026-04-30 22:54:30 +08:00
Elegy233 b50af1f992 健壮 Bangumi Data 匹配与合并工具,修复相关问题 (#289)
* 修复开启 USE_BANGUMI_DATA 后《加油!中村同学!!》对齐 Bangumi-Data 数据后结果被抛弃

* 命中数据流程进行简繁转换,提升准确度

* Update bahamut.js

* bahamut.js:补全 retries: 1 重试参数,避免反代场景的一定风控

* dandan.js:补全 retries: 1 重试参数,避免接口不稳定

* merge-util.js:修复“终末起点”合并问题,并在判断季时深入到别名池

* animeko.js:补全别名传递

* dandan.js:补全别名传递

Added aliases to the data structure and improved title matching logic.

* common-util.js:引入繁简转化工具,用于标题匹配路由提升可靠性

修复开启 Bangumi Data 匹配后弹弹源始终不返回“终末起点 第二季”结果(因为 Bangumi Data 数据这一部使用的是繁体)

* Update common-util.js

* bangumi-data-util.js:精简裁切Bangumi Data 数据结构,大幅减少硬盘与内存占用
2026-04-30 22:53:17 +08:00
049e412748 Hugging配备ui管理 (#288)
* Create sync.yml

* Update README.md

* Add Hugging Face Spaces deployment support

* Update sync.yml

* Update README.md

* Update Dockerfile

* Update README.md

* Update README.md

* Update Dockerfile

* Rename sync.yml to sync_hf.yml

* Update README.md

---------

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: huangxd- <649924757@qq.com>
2026-04-30 22:51:36 +08:00
huangxd- b5da389605 修改小版本号 2026-04-30 22:50:40 +08:00
Elegy233 01fd9e15aa 集成 bangumi-data 项目,开启后提升动画源的检索与匹配速度并解锁隐藏/区域番剧 (#283)
* envs.js:新增 Bangumi Data 加速匹配开关 与 Bangumi Data 缓存有效期 配置

* 新增 Bangumi Data 管理工具,用于下载与管理Bangumi Data数据

感谢 https://github.com/bangumi-data/bangumi-data

* worker.js:参加Bangumi Data 辅助函数用于判断数据更新

* server.js:配合清理 Bangumi Data 关闭时占用的内存

* tmdb-util.js:Bangumi Data 开启时调用它大幅提升获取日语原名速度

实现获取动画日语原名零请求

* animeko.js:Bangumi Data 开启时调用它,节省一次搜索请求

已知问题:缺失imageUrl,问题不大

* bahamut.js:Bangumi Data 开启时调用它,补全别名与类型

Bangumi Data 给的是acg_sn,预期需要是video_sn,因此无法直接应用
https://github.com/bangumi-data/bangumi-data/issues/336

* bilibili.js:Bangumi Data 开启时调用它,补全缺失的隐藏结果与区域结果

实现港澳台番剧与隐藏番剧自由,例如《笨拙之极的上野》

* dandan.js:Bangumi Data 开启时调用它,节省一次搜索请求

弹弹其实当务之急是怎么节省详情接口的请求… 多结果风控错误概率大

* common-util.js:为标题匹配的相似度策略加入一定阻断

防止纯英文搜索时因相似度打乱字符匹配大量结果被放行

* .env.example:更新 Bangumi Data 相关变量

* README.md:更新 Bangumi Data 相关说明

* Enhance comments for USE_BANGUMI_DATA in .env.example

Updated comments to clarify the functionality of USE_BANGUMI_DATA.

* Enhance USE_BANGUMI_DATA description

Updated the description for USE_BANGUMI_DATA to include unlocking hidden/region-specific anime.

* README.md:补全目录

* bangumi-data-util.js:纯内存加载时使用原生 fetch ,并声明压缩头

* bangumi-data-util.js:增加云部署纯内存运行提示

* bangumi-data-util.js:更新配音版本正则

* merge-util.js:标准化正则

* tmdb-util.js:标准化正则

* animeko.js:标准化正则

* README.md:补充文件目录

* bangumi-data-util.js:修复CF部署下载请求被切断导致堵塞

Added download lock mechanism to prevent deadlocks in serverless environments and implemented a timeout for download operations.

* worker.js:透传ctx

* bangumi-data-util.js:调用 ctx.waitUntil 延长 Serverless 生命周期

* bilibili.js:补全md号解析链路

Add handling for media IDs starting with 'md' to fetch episodes.

* server.js:异步初始化 Bangumi Data 缓存,消除首个真实请求遭遇冷启动的等待延迟

* bangumi-data-util.js:双节点同时竞速下载数据,提升下载可用性与速度
2026-04-26 15:26:02 +08:00
huangxd- b2afb2dbdc 修复ai匹配结果isMatched未设置为true的问题 2026-04-26 15:24:55 +08:00
huangxd- 871db792da 优化自动匹配和记住集episode偏移功能 2026-04-19 13:17:27 +08:00
huangxd- 028835c2c4 douban源搜索接口增加公开api兜底 2026-04-18 11:58:44 +08:00
Elegy233 59fff265cd 修复 match 接口因为标题清理导致故障 (#282)
* dandan-api.js:调整标题清理相关调用顺序

* common-util.js:调整标题清理相关调用顺序

* Enhance comment in extractSeasonNumberFromAnimeTitle

Add comment to clarify the process of extracting season number from anime title.

* globals.js 1.18.7
2026-04-14 20:28:51 +08:00
Elegy233 087c136b9b 修复合并工具特殊情况下集映射错误,更新标题匹配使用的正则,修复白日提灯因携带零宽字符导致无结果 (#279)
* bahamut.js:如果搜索关键词是日语则不经过common-util

获取不到原名信息作为别名所以直接放行

* common-util.js:清理标题时清理()括号

* merge-util.js:修复《一拳超人 第三季》关联时集映射错误

因为巴哈首集是“24.5集”番外集,所以判断错误,现在非整数集也视为番外集,番外集会找番外集去匹配

* common-util.js:清理标题时清理·点

* common-util.js:清理标题更改为白名单模式,使用Unicode区间正则囊括非常完整的文字内容

* dandan.js:使详情接口错误重试一次

* common-util.js:添加零宽字符清理函数

* vod.js:调用零宽字符清理函数,解决“白日提灯%E2%80%8B"搜索无结果

Added a function to sanitize search keywords before making API requests.
2026-04-13 22:57:32 +08:00
huangxd- 38cafc1d34 弹幕偏移百分比模式如果弹幕duration为0,则取最后一条弹幕作为视频时长 (#281) 2026-04-13 22:57:03 +08:00
huangxd- 5ce27183f1 修改readme 2026-04-11 14:09:08 +08:00
huangxd- 91cff0da83 修改reademe 2026-04-11 14:03:55 +08:00
Elegy233andhuangxd- fe4a96f50b 因 related 接口废弃将合并工具的跨源时间轴对齐功能改回本地算法 (#275)
* merge-util.js:因 related 接口废弃将跨源时间轴对齐功能改回本地算法

天塌了(

* README.md:更新平台列表添加特别感谢栏

* merge-util.js:更新跨源时间轴对齐算法

* dandan-api.js:重写跨源时间轴对齐调用函数

* merge-util.js:精简跨源时间轴对齐算法

* merge-util.js:为弹弹豁免匹配率同时修复缺集导致的集映射错误

修复弹弹因为从零开始的异世界生活第四季因为集刮削错误缺2~4集导致的集映射错误

---------

Co-authored-by: huangxd- <649924757@qq.com>
2026-04-11 14:01:38 +08:00