Commit Graph
335 Commits
Author SHA1 Message Date
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
dyphire 77ecdcf233 跟随弹弹上游 API 变动废弃 related 相关接口功能 (#274) 2026-04-11 13:56:01 +08:00
huangxd- 3495835e7c 新增弹幕时间偏移功能以及环境变量DOUBAN_COOKIE (#276)
* 弹幕偏移支持百分比模式

* 修复偏移配置保存之后不显示源选择的问题

* 增加豆瓣cookie环境变量
2026-04-11 13:55:39 +08:00
Elegy233 59533acfc9 使 match 接口匹配时检查源传入的别名,并优化别名替换相关逻辑 (#271)
* dandan-api.js:使 match 接口匹配时检查别名

* dandan.js:彻底删除内部api别名替换逻辑,因为别名已经传给需要的工具

* tmdb-util.js:全面优化tmdb智能标题替换逻辑

优先选择与用户传入的关键词相同的别名(https://github.com/huangxd-/danmu_api/pull/270 的拓展)

* envs.js:更新集过滤正则与aliases ai提示

* .env.example:更新集过滤正则

* Update README.md
2026-04-03 22:00:20 +08:00
huangxd- eace9cfbd8 Merge branch 'main' of github.com:huangxd-/danmu_api 2026-04-03 21:59:38 +08:00
huangxd- dce8dbbd18 修改小版本 2026-04-03 21:59:26 +08:00
dyphire e7bdc3a831 360 源添加episodesv2分集获取接口 (#272) 2026-04-03 21:59:04 +08:00
Elegy233 b6926712f5 为弹弹源添加别名替换相关逻辑,使不同译名的结果能够参与match匹配 (#270)
* tmdb-util.js:将关键词清理函数提取为公共函数

* dandan.js:调用tmdb智能别名替换,并增加内部别名智能替换功能

使不同译名的结果能够参与match匹配
2026-04-02 22:50:27 +08:00
dyphire d89ba7a1c2 提高 match 接口的匹配精度 (#269) 2026-04-02 22:50:18 +08:00
dyphire 3e02301b9f 修复 360 源的剧集获取 (#268) 2026-04-02 22:50:06 +08:00
dyphire 9fe76afc85 正确兼容弹弹的 url 弹幕获取接口 (#267) 2026-04-02 22:49:41 +08:00
huangxd- afa0eb1c1f 修改小版本号 2026-04-02 22:48:15 +08:00
huangxd- c049d1c312 修复aiyifan-util.js中部分语法在ios fw中不适配的问题 2026-03-31 23:49:34 +08:00
Wo254992 c2eeeb164b 重构爱壹帆签名工具并优化并发复用 (#266) 2026-03-31 22:25:07 +08:00
huangxd- 9bc48f2360 修改小版本号 2026-03-31 22:23:44 +08:00
huangxd- c8fc8f1f65 修复aiyifan源fw报错的问题 2026-03-30 22:58:31 +08:00
huangxd- de148bccb4 更新环境变量的说明 2026-03-30 22:29:47 +08:00
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