huangxd-
3fe044bcb7
添加乐视源 ( #155 )
2026-01-17 00:03:37 +08:00
Elegy233
937532dfa9
增加Animeko源,增加源合并功能 ( #152 )
...
* 新增源合并处理工具
非常多的优化,使不同源的合并进入高可用状态(主要还是动画这块,译名不同和集不一样太多了,动画怎会如此折腾)
* 新增Animeko源
感谢188的鼎力相助感谢Animeko,开源伟大!
* 新增MERGE_SOURCE_PAIRS环境变量并增加相关解析,新增允许animeko源
* 兼容新的源合并相关请求,修复b23.tv相关处理缺少httpGet引用
* 更新文档
* 更新env
* 将源合并从匹配配置挪到源配置
* 更新版本号为1.12.0
* 更新获取弹幕函数,使其更加符合整体规范
* 增加Animeko测试例
2026-01-14 18:24:40 +08:00
huangxd-
94a94bddf0
修改README,增加cookie-butler工具
2026-01-11 23:21:56 +08:00
huangxd-
53e81421a3
删除config.yaml配置支持,后续只支持.env配置文件
2026-01-11 23:10:01 +08:00
huangxd-
edb794bfb9
配置优先级调整为:系统环境变量 > .env 文件 > config.yaml 文件 ( #140 )
...
* 优化系统配置没权限提醒
* 配置优先级调整为:系统环境变量 > .env 文件 > config.yaml 文件
2026-01-08 23:06:25 +08:00
Elegy233
435e22210a
为bilibili支持解析服务器实现港澳台搜索*2,为云部署支持反向代理 ( #139 )
...
* 去除反向代理相关判断,即将迁移至globals.js文件
* 增加反向代理相关判断,为云部署支持反向代理配置
* 增加流式传输方法,增加外部中断控制器
b站app接口无结果会返回高达3.69mb的推荐数据,这是人啊*2
外部中断控制器实现了原始搜索成功真打断tmdb搜索
* 支持外部随时传入的真中断,同时实现并发请求合并
* 去除非必要的点位检查,同时使用新的代理URL构建
* 实现web与app接口的港澳台番剧搜索与获取
目前只能通过万能反代或特定反代开启。实际实现很简单,但因为全网没有一个喂饭教程所以踩了超级超级多的坑,但也是多亏了踩坑现在对于港澳台的兼容非常非常健壮😵 *2
* 更新说明
* 更新说明
* 更新文档
2026-01-08 23:02:16 +08:00
huangxd-
e4b763a2c8
Revert "为bilibili支持解析服务器 实现港澳台搜索 (App/Web双模) ( #129 )" ( #131 )
...
This reverts commit 762634754e .
2026-01-05 06:59:43 +08:00
huangxd-
a7392ee394
增加sohu源 ( #130 )
...
* 补充README
* 增加搜狐视频源
* 替换URLSearchParams
* 增加搜狐弹幕分片并发请求
* 修复docker场景不存在.env时自动创建的问题
* 修改版本号
* 修改docker-image构建flow条件
* 修改镜像构建触发条件
* 修复sohu源buildQueryString缺失的问题
2026-01-04 21:32:04 +08:00
Elegy233
762634754e
为bilibili支持解析服务器实现港澳台搜索 (App/Web双模) ( #129 )
...
* 增加Bilibili专用反代判断和流式传输支持
* 增加流式传输方法,解决港澳台庞大数据读取缓慢堵塞
b站app接口无结果会返回高达3.69mb的数据,这是人啊
* 实现web与app接口的港澳台番剧搜索与获取
实际实现很简单,但因为全网没有一个喂饭教程所以踩了超级超级多的坑,但也是多亏了踩坑现在对于港澳台的兼容非常非常健壮😵
* 更新PROXY_URL说明
* 更新平台列表与注意事项
* Fix duplicate bilibili proxy URL instructions
Removed duplicate instructions for enabling bilibili proxy URL in the README.
* 更新cookie
* 更新注意事项
* 添加返回接口报错信息,添加App接口失败回落至Web接口
* 更新BILIBILI_COOKIE说明
* 修复流式输式中断被当成请求失败回落至web接口
* 修复缩进
* 去掉bilibili-overseas
* Update .env.example
* Update config.yaml.example
* Update .env.example
* Update config.yaml.example
2026-01-04 21:29:10 +08:00
huangxd-
f6eb744473
修改docker打包流水线非main分支在镜像版本号后加-test ( #125 )
2025-12-29 23:17:02 +08:00
huangxd-
f199f69d8b
支持自定义弹幕源 ( #121 )
...
* 解决api配置反代后的ui路径问题
* ui修改body和header背景色
* 修复segmentcomment接口调试时format选择xml不生效的问题
* Revert "修复segmentcomment接口调试时format选择xml不生效的问题"
This reverts commit 997a101cb0537d95ebdb62e9f1267af7e94475a9.
* 修复分片弹幕请求xml还是返回json的问题
* 支持自定义弹幕源
* 修复在反代场景下api端点显示
* 修复导航栏标签切换问题
* 修复iqiyi源的弹幕emoji不显示的问题
* 完善readme中的项目结构
* 修改小版本号
2025-12-28 11:02:50 +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
huangxd-
f1bb15ef20
修复一些小问题 v.1.9.2 ( #108 )
...
* 切换日志查看模块时立即刷新一次日志
* .env和config.yaml挪到config目录下,后续docker要加载配置文件,请挂载./config:/app/config目录,并在config目录中创建.env或config.yaml文件
* 修复b站和爱奇艺平台的优选不生效问题
* 更新小版本号
2025-12-09 23:38:05 +08:00
huangxd-
56d95439c7
fix: 修复一些问题 ( #107 )
2025-12-09 00:02:32 +08:00
huangxd-
995d5f10e0
feature: 新增UI支持 ( #105 )
...
* 增加环境变量处理类
* 完善node-handler.js
* 完善node-handler.js
* 完善vercel-handler.js
* 增加netlify-handler
* 修改netlify-handler.js
* 完善netlify-handler.js
* 增加cloudflare-handler.js
* 完善cloudflare-handler.js
* 完善cloudflare-handler.js
* 新增edgeone-handler.js
* edgeone和vercel增加部署函数
* 增加部署平台环境变量配置指南
* 优化小点
* 增加UI界面,非真实数据,main.js待后续拆分
* 增加当前版本和最新版本通过后端接口获取
* 修复云端部署的问题
* 前端使用分离文件模块
* 前端使用分离文件模块
* 在html和script上使用globals全局变量信息
* 使用 Language Injection 注释,支持语法高亮、补全、格式化、跳转
* 清理ui无用文件
* 优化缓存清理和重新部署确认弹窗UI
* 修改调试api
* 使用正式调试api返回数据
* 完善接口调试实际接口数据
* 日志查看调用真实数据
* 修改成系统配置
* 合并冲突
* 配置预览使用真实数据
* 提取log接口函数到system-api
* ui上增加API端点展示
* 系统配置里的环境变量使用真实数据
* 删除添加配置按钮,优化变量值输入框
* 系统设置环境变量从原始环境变量获取
* 增删改环境变量对接真实数据
* 修复ui请求报401的问题
* 优化deployPlatform
* 数字类型的环境变量增加最小值和最大值限制
* 重新部署对接真实接口
* 修复云服务部署
* 日志中隐藏敏感字符
* 清理缓存打通真实数据接口
* 将main.js中的css提取到css文件中
* 增加ADMIN_TOKEN环境变量
* 完善admin_token访问权限控制
* 增加NODE_TLS_REJECT_UNAUTHORIZED,用于控制在建立 HTTPS 连接时是否验证服务器的 SSL/TLS 证书
* 所有alert都替换成自定义样式弹窗
* 增加部署平台的检查,如果没有配置部署相关的环境变量,也提示需要配置
* 没有token的情况下访问不了日志查看和接口调试
* 增加推送弹幕模块
* 修复推送弹幕
* 推送弹幕界面当点击一个anime获取到剧集列表后直接跳转到剧集列表处
* 弹幕推送ui适配手机样式
* 推送弹幕中的按钮修改为点击后加载转圈
* 推送校验地址挪到推送按钮
* 所有确认弹窗都改成适配ui样式
* 优化API端点显示
* 修复如果是默认token则用admin_token访问不了的问题
* 抽出css到css文件
* 修改handler-factory.js,将各个import的语句挪到switch相对应的case里,延迟引入
* 测试下
* 再测试下
* 尝试解决cloudflare和edgeone部署失败
* 再次尝试解决cloudflare和edgeone部署失败
* 再次尝试解决cloudflare和edgeone部署失败+1
* 再次尝试解决cloudflare和edgeone部署失败+2
* 再次尝试解决cloudflare和edgeone部署失败+3
* 再次尝试解决cloudflare和edgeone部署失败+4
* 修复弹幕推送跨域问题
* 修改标题等小细节
* 修复一些小细节
* 添加ui界面的readme
* 将handlers下的README挪到UI目录下的README
* 修改readme
* readme增加目录指引
* 刷新目录结构
* main.js中的init里的非函数抽出函数
* 拆分main.js,单独拆出preview.js
* 抽出日志查看模块
* 提取出接口调试部分
* 提取出弹幕推送模块
* 抽出系统配置模块js
* 更新项目结构
* 配置预览优化显示
* 系统配置变量值背景色修改
* 修改右上角的五个按钮布局
* 修复token非默认值的情况下api端点直接显示了token的问题
* 修复在非默认值TOKEN的情况下访问url api端点显示了token的问题
* 修改README
* 增加日志打印deployPlatform
* 调试vercel参数
* 修复vercel平台部署被判断为cloudfalre的问题
* 修复/api/config获取在没有权限的情况下不应该返回私密信息的问题
* 修复api/config接口的权限问题
* 修复日志查看、接口调试和推送弹幕模块默认token场景下没有token也能访问
* 优化currentToken获取
* main.js中部分代码挪到其他js
* 测试vercel部署方式判断
* 修复部署平台参数的问题
* 修复部署平台的几个参数问题
* 修复没有环境变量的情况下设置失败的问题
* 挪动修改环境变量代码
* 修改环境变量描述
* 修改变量的值和描述的字体颜色
* 修改cloudflare才是需要DEPLOY_PLATFROM_ACCOUNT的平台
* 添加环境变量修改后说明
* 修改重新部署时长
* 修改版本号
2025-12-07 16:42:16 +08:00
xiaoQQya
55da0c489e
支持弹幕颜色转换为随机彩色 ( #103 )
...
* feat: 支持随机彩色弹幕
* v1.8.1
2025-11-29 21:24:16 +08:00
huangxd-
e1fb096a81
完善PLATFORM_ORDER环境变量说明
2025-11-26 07:34:15 +08:00
huangxd-
81ea65441a
新增弹弹play源,使用的是开源第三方接口,感谢开源项目 https://github.com/Mr-Quin/danmaku-anywhere
2025-11-25 23:48:38 +08:00
huangxd-
7df3047260
修改小版本号及相应README
2025-11-22 07:55:07 +08:00
huangxd-
4e9e25e0eb
1. 修复vod设置fastest模式下match自动匹配可能搜索结果不存在上次手动选择的animeId的问题
...
2. match自动匹配适配标题格式`爱情公寓.ipartment.2009.S03E05.H.265.25fps.mkv`
2025-11-18 21:59:38 +08:00
huangxd-
4dbe4aff34
本地和Docker部署支持实时保存缓存到文件
2025-11-15 09:15:29 +08:00
huangxd-
b65d27ad9f
弹幕分片下载请求已加入重试机制,重试次数为1次
2025-11-10 22:32:12 +08:00
huangxd-
9f7b6334fd
添加环境变量TITLE_TO_CHINESE,表示是否在match自动匹配时将外语标题转换成中文标题,适用于网盘没有刮削的资源
2025-11-09 20:54:55 +08:00
huangxd-
80869079ce
支持DANMU_LIMIT环境变量,用于等间隔采样限制弹幕总数,且修改TOKEN默认的情况下api中可以不用填写token
2025-11-09 14:04:42 +08:00
huangxd-
9d72069918
douban源和tmdb源修复某些剧名不一致导致过滤的问题以及其他小修小补 ( #88 )
...
* 优化根据imdbid获取豆瓣信息
* douban源过滤一些不是电影/电视剧的类型
* douban源和tmdb源修复某些剧名不一致导致过滤的问题
2025-11-08 08:54:35 +08:00
huangxd-
61dc1b05d3
feat: 增加TMDB源 ( #86 )
...
* 优化:如果查询关键字为空,则直接返回[]
增加imdb-util,用于请求imdb相关接口
* 增加douban-util,用于请求豆瓣相关API接口
* 增加douban-util,用于请求豆瓣相关API接口
* 增加TMDB源
* 完善TMDB源
* 源内年份相同的anime按标题字数少的靠前排序
* 修复万能反代问题
2025-11-07 00:00:15 +08:00
Elegy233
e5e8443f98
代理优化,增加几个繁简转换字 ( #85 )
...
* 增加係蹟隻闢闆妳
* 严谨现有Netlify反代教程说明
* 给tmdb加代理
* 规范URL构建
* 拆分反代模式
* 拆分反代模式
* 拆分反代模式
* 拆分反代模式
* 不拆分合并
* 不拆分合并
* 不拆分合并
* Update README.md
* Update .env.example
* 将裡这个繁体字调整到裏前面,解决彈珠汽水瓶裡的千歲同學这部番没有结果
进行简转繁搜索的时候“里”先索引到了“裏”,导致转换后是“彈珠汽水瓶裏的千歲同學”,然后无结果
* 1.6.8
* 修复缺少逗号
* 统一特定反代的叫法
* 优化代码逻辑
2025-11-04 19:32:22 +08:00
huangxd-
c482f58c38
豆瓣源anime增加电影/电视剧细分类型,补充繁简转换字体
2025-11-01 20:25:00 +08:00
woleigedouer
c04a11ffc1
小修小改 ( #82 )
...
* Fix:为所有源处理器添加全面的错误处理
* feat: 添加 YAML 配置文件支持
新增功能:
- 添加 js-yaml 依赖用于解析 YAML 配置文件
- 实现 YAML 配置加载和转换功能
* loadYamlConfig() - 加载和解析 config.yaml 文件
* applyYamlConfig() - 将 YAML 配置转换为环境变量(支持递归嵌套对象)
- 扩展文件监听机制,同时支持 .env 和 config.yaml 热更新
* feat: 实现空格无关的标题匹配,解决搜索结果不一致问题
* Update globals.js
2025-10-31 17:11:16 +08:00
huangxd-
4e07d2daa4
feat: 新增豆瓣源支持 ( #81 )
...
* 单独提取出REMEMBER_LAST_SELECT环境变量:是否记住手动选择结果,用于match自动匹配时优选上次的选择,默认为`true`,表示记住
* 再增加部分数据模型校验
* 新增豆瓣源支持
2025-10-31 00:12:38 +08:00
huangxd-
1406bd8148
修复cloudflare上环境变量不生效的问题 ( #78 )
...
* 修复cloudflare上环境变量不生效的问题
* 将源的初始化提到文件开头,避免重复创建多个对象
* 修改小版本号
2025-10-27 22:42:26 +08:00
Elegy233
90de8a29c5
巴哈姆特专项优化 ( #74 )
...
* 增加反代模式判断
* 增强SOURCE_ORDER和PROXY_URL环境变量
1.SOURCE_ORDER中用户可以为bahamut添加后缀@tc实现不繁转简;
2.PROXY_URL新增反代模式判断
* TMDB搜索增加类型判断
并在搜索流程中增加检查点实现可被中断
* 增加反代模式,第二次搜索并行执行并可被打断
并统一搜索构建
* Update README.md
* Update .env.example
* Update README.md
* Update .env.example
* 规范化,繁转简控制改为单独的环境变量DANMU_SIMPLIFIED
* 规范化,繁转简控制改为单独的环境变量DANMU_SIMPLIFIED
* 增加PROXY_URL控制变量
* 增加反代模式判断
* 规范化调整
* 更新DANMU_SIMPLIFIED
* Update .env.example
* 去除不必要的
* 实际并不需要修改这个文件
* Update globals.js
* Update globals.js
* Update globals.js
2025-10-27 22:34:17 +08:00
huangxd-
df1e1d47a3
自动匹配支持从如“惊天魔盗团2.2016.2160p.UHD.BluRay.REMUX.HEVC.HDR.TrueHD7.1-DreamHD”获取电影名“惊天魔盗团2”来进行弹幕匹配;修复韩剧tv弹幕中顶端弹幕不识别的问题
2025-10-26 22:25:09 +08:00
woleigedouer
5d942dc4c4
refactor: 将弹幕URL获取接口从POST改为GET并接入缓存和限流 (v1.6.1) ( #73 )
...
* refactor: 将弹幕URL获取接口从POST改为GET并接入缓存和限流 (v1.6.1)
## 主要变更
### 1. 接口重构:移除POST接口,改为GET方式
- **移除**: `POST /api/v2/comment/by-url` 接口
- **新增**: `GET /api/v2/comment?url=${videoUrl}&format=json` 接口
- **优势**:
- 更符合RESTful规范(GET用于查询数据)
- 兼容第三方弹幕服务器的使用习惯(如 api.danmu.icu)
- 播放器可直接在地址栏拼接URL,无需构造POST请求体
- 更易于测试和调试
### 2. 缓存和限流机制接入 ⭐
- **缓存优先策略**:
- 通过url参数获取弹幕时,先检查缓存
- 缓存命中时直接返回,不计入限流次数
- 提高响应速度,减少不必要的网络请求
- **限流保护**:
- 缓存未命中时才执行限流检查
- 与通过commentId获取弹幕的限流逻辑保持一致
- 默认:1分钟内同一IP最多请求3次(可通过 RATE_LIMIT_MAX_REQUESTS 配置)
- 超过限制返回 HTTP 429 错误
- **统一限流返回格式**:
- 旧格式: `{ status: 429, body: "..." }`
- 新格式: `{ errorCode: 429, success: false, errorMessage: "Too many requests, please try again later" }`
- 保持与其他API错误响应格式一致
### 3. 代码修改详情
**danmu_api/worker.js** (+96/-57 行)
- 合并路由逻辑:`GET /api/v2/comment` 同时支持 commentId 和 url 参数
- 为url参数方式添加完整的"缓存检查 → 限流检查 → 获取弹幕"流程
- 统一限流返回格式,保持API响应一致性
- 简化限流逻辑,移除冗余的历史记录清理代码
- 添加参数验证:必须提供 commentId 或 url 参数之一
**danmu_api/apis/dandan-api.js** (+23/-13 行)
- 函数签名变更:`getCommentByUrl(req, queryFormat)` → `getCommentByUrl(videoUrl, queryFormat)`
- 移除POST请求体解析逻辑(`req.json()`)
- 改为直接接收URL字符串参数
- 更新错误提示信息
- 保留内部缓存检查逻辑(作为双重保障)
**README.md** (+6/-3 行)
- 更新API接口文档说明
- 更新测试示例和使用示例
- 移除POST请求相关说明
**danmu_api/configs/globals.js** (+2/-1 行)
- 版本号:1.6.0 → 1.6.1
### 4. 配置优化(附带修改)
**.env.example** (+13/-4 行)
- 完善 `EPISODE_TITLE_FILTER` 环境变量注释说明
- 添加默认过滤规则的完整示例
- 启用 `MAX_LAST_SELECT_MAP=100` 配置
**danmu_api/configs/envs.js** (+10/-6 行)
- 修改 `EPISODE_TITLE_FILTER` 逻辑:从"增量添加"改为"完全覆盖"
- 简化剧集过滤规则,移除过于复杂的正则表达式
**danmu_api/sources/base.js** (+8/-1 行)
- 添加动漫去重逻辑:检查 animeId 是否已存在,避免重复添加
* fix: 修复 SOURCE_ORDER=bahamut 时出现重复的问题
问题原因:
- 当用户配置 SOURCE_ORDER=bahamut 时,在 Cloudflare/Vercel/Netlify 平台上
- resolveSourceOrder 函数会自动追加 ',bahamut'
- 导致最终变成 'bahamut,bahamut',出现重复结果
修复方案:
- 删除自动追加 bahamut 的隐式逻辑
- 用户需要在 SOURCE_ORDER 中显式配置 bahamut 源
- 配置即所得,避免魔法行为
修改文件:
- danmu_api/configs/envs.js: 删除自动追加逻辑
- .env.example: 更新配置说明
- README.md: 更新文档说明
2025-10-26 22:24:26 +08:00
woleigedouer
1e80b60632
feat: 多平台搜索源升级与严格匹配模式支持 ( #72 )
...
* 修复 环境变量模板
* 修复芒果TV弹幕获取失败问题并实现双API兜底机制
问题背景:
1. 芒果TV新API (getctlbarrage) 返回数据缺少 cdn_list 和 cdn_version 字段
2. convertToDanmakuJson() 在接收空数组时抛出异常,导致兜底逻辑无法执行
3. 用户无法获取芒果TV弹幕
修复内容:
1. danmu_api/utils/danmu-util.js
- 修改 convertToDanmakuJson() 函数
- 空数组输入时返回空数组而不是抛出异常
- 允许兜底逻辑正常执行
2. danmu_api/sources/mango.js
- 实现双API兜底机制
- 优先使用新API (getctlbarrage) 支持彩色弹幕
- 新API失败时自动切换到旧API (rdbarrage)
- 旧API作为兜底保证弹幕获取成功率
* feat: 将 youku 升级为独立搜索源
## 主要变更
### 1. 核心功能集成
- 在 envs.js 中将 youku 添加到 ALLOWED_SOURCES
- 在 dandan-api.js 中集成 youku 源的搜索和处理逻辑
- youku 现在既是独立搜索源,也是弹幕获取器(与 tencent 源一致)
### 2. Bug 修复
- 修复 http-util.js 中的超时配置问题
- 添加了 parseInt 的基数参数和默认值
- 解决了 vodRequestTimeout 为字符串导致的 NaN 超时问题
### 3. 配置文件更新
- 更新 .env.example:在 SOURCE_ORDER 说明中添加 youku
- 更新 README.md:
- 在环境变量说明中添加 youku 源
- 在采集源列表中添加 youku 条目
## 使用方式
在 .env 中配置 SOURCE_ORDER 即可启用 youku 源:
* feat: 为 iQiyi 源添加独立搜索匹配功能
主要变更:
1. danmu_api/sources/iqiyi.js
- 新增 search() 方法:使用爱奇艺桌面版 API 搜索内容
- 新增 getEpisodes() 方法:使用 v3 base_info API 获取分集列表
- 新增 handleAnimes() 方法:格式化搜索结果为 DanDanPlay 格式并缓存
- 新增工具方法:
* _filterIqiyiSearchItem() - 过滤搜索结果
* _videoIdToEntityId() - video_id 到 entity_id 转换
* _xorOperation() - 异或运算
* _createSign() - API 签名生成
- 添加静态常量:XOR_KEY、SECRET_KEY、KEY_NAME
2. danmu_api/configs/envs.js
- 将 'iqiyi' 添加到 ALLOWED_SOURCES 数组
3. danmu_api/apis/dandan-api.js
- 导入 IqiyiSource 类
- 创建 iqiyiSource 实例
- 在搜索流程中集成 iqiyi 源
- 在结果处理循环中添加 iqiyi 处理逻辑
4. .env.example
- 更新 SOURCE_ORDER 说明,添加 iqiyi 选项
5. README.md
- 在 SOURCE_ORDER 环境变量说明中添加 iqiyi
- 在采集源列表中添加 iqiyi 源(平台:qiyi)
* feat: 将 mango (imgo) 升级为独立搜索源
## 主要变更
### 1. 核心功能集成
- 在 envs.js 中将 imgo 添加到 ALLOWED_SOURCES
- 在 dandan-api.js 中集成 imgo 源的搜索和处理逻辑
- mango 现在既是独立搜索源,也是弹幕获取器
### 2. 高级特性实现
- 分页获取分集列表(按月份分页)
- 专属黑名单过滤(过滤预告、花絮、特辑等非正片内容)
- 综艺节目智能处理("第N期"格式识别和排序)
- 电影类型专门处理(智能正片识别)
### 3. 代码优化
- 添加 _getMovieEpisode() 方法处理电影类型
- 添加 _processVarietyEpisodes() 方法处理综艺节目
- 完善的日志输出和错误处理
## 使用方式
在 .env 中配置 SOURCE_ORDER 即可启用 imgo 源:
SOURCE_ORDER=360,vod,imgo,renren,hanjutv
* feat: 将 bilibili 升级为独立搜索源
## 主要变更
### 1. 核心功能集成
- 在 envs.js 中将 bilibili 添加到 ALLOWED_SOURCES
- 在 dandan-api.js 中集成 bilibili 源的搜索和处理逻辑
- bilibili 现在既是独立搜索源,也是弹幕获取器(与 youku 源一致)
### 2. bilibili.js 功能实现
- 添加 WBI 签名机制(_getWbiMixinKey, _getWbiSignedParams)
- 实现搜索功能(search, _searchByType)
- 支持 media_bangumi 和 media_ft 两种类型搜索
- 自动去重和结果合并
- 实现分集获取(getEpisodes, _getPgcEpisodes, _getUgcEpisodes)
- 支持番剧(ss格式)和普通视频(bv格式)
- 实现结果处理(handleAnimes)
- 格式化为统一的 anime 对象
- 添加到缓存并按年份排序
### 3. 配置文件更新
- 更新 .env.example:在 SOURCE_ORDER 说明中添加 bilibili
- 更新 README.md:
- 在环境变量说明中添加 bilibili 源
- 在采集源列表中添加 bilibili 条目
## 使用方式
在 .env 中配置 SOURCE_ORDER 即可启用 bilibili 源:
```bash
SOURCE_ORDER=360,vod,bilibili,renren,hanjutv
* feat: 添加严格标题匹配模式环境变量 STRICT_TITLE_MATCH
新增 STRICT_TITLE_MATCH 环境变量,支持严格标题匹配模式,解决模糊搜索返回过多无关结果的问题。
## 功能说明
- 默认值:false(宽松模糊匹配)
- 启用后:只匹配标题开头或完全匹配的结果
- 示例:搜索"遮天"时
- false: 匹配"遮天"、"古惑仔3之只手遮天"(所有包含"遮天"的标题)
- true: 只匹配"遮天"、"遮天 第一季"、"遮天(2024)"等
## 修改内容
1. 环境变量配置
- 新增 STRICT_TITLE_MATCH 配置项到 .env 和 .env.example
- 在 envs.js 中添加配置读取逻辑
2. 工具函数(common-util.js)
- 新增 strictTitleMatch() 严格匹配函数
- 新增 titleMatches() 根据配置选择匹配模式
3. Source文件修改(10个)
- bilibili.js, tencent.js, iqiyi.js, youku.js, mango.js
- renren.js, hanjutv.js, vod.js, kan360.js
- 统一使用 titleMatches() 替代 .includes() 模糊匹配
- bahamut.js: 扩展 bahamutTitleMatches() 支持严格模式(保留繁简转换)
4. 文档更新
- README.md 添加 STRICT_TITLE_MATCH 环境变量说明
## 技术细节
- 严格匹配支持的分隔符:空格、括号、冒号、破折号、季集标识等
- Bahamut源特殊处理:严格模式下仍支持繁简体转换
- 所有修改向后兼容,默认保持原有模糊匹配行为
## 相关 Issue
解决用户反馈的模糊搜索匹配过多无关内容的问题(如搜索"遮天"匹配到"古惑仔3之只手遮天")
* 调整默认超时时间 更新版本号
2025-10-26 17:42:44 +08:00
huangxd-
039d9a2d90
修改README
2025-10-26 13:22:36 +08:00
huangxd-
f480621adf
拆分worker.js ( #71 )
...
* 拆分出envs.js和globals.js
* 拆分出多个工具类,完善了全局变量和环境变量文件
* 修复环境变量热加载,并增加自动转发所有属性访问到 Globals.getConfig(),减少代码量
* 继续拆分各种工具类
* 拆分各类源
* 拆分360和vod源
* 拆分弹弹play兼容接口
* 适配测试用例
2025-10-26 13:03:42 +08:00
huangxd-
fa7bc04085
修复bahamut在本地启动和docker场景下代理问题
2025-10-21 22:20:14 +08:00
woleigedouer
3748e46247
feat: 实现Bilibili标准XML格式弹幕输出 ( #69 )
...
- 新增XML格式支持,完全遵循Bilibili标准8字段格式
- 增强convertToDanmakuJson()支持多种p属性格式(4/8/9字段)
- 重构convertDanmuToXml()使用<i>根元素和标准8字段p属性
- 新增generateDanmuId()生成11位数字弹幕ID
- 新增buildBilibiliDanmuP()构建标准8字段p属性(时间,类型,字体,颜色,时间戳,弹幕池,用户Hash,弹幕ID)
- 使用固定值(时间戳1751533608,用户Hash和弹幕池为0)符合实际格式标准
- 更新README.md添加详细的XML格式说明和使用示例
技术细节:
- XML根元素从<root>改为<i>
- p属性从4字段扩展为8字段标准格式
- 时间保留1位小数,颜色为RGB十进制值
- 向后兼容多种输入格式,增强解析逻辑
- 完全符合第1集.xml的实际格式标准
2025-10-21 22:16:29 +08:00
huangxd-
86aa844666
更新README
2025-10-20 23:06:55 +08:00
huangxd-
6461d04052
更新README
2025-10-20 21:50:38 +08:00
Elegy233
bb2d53021f
增加TMDB_API_KEY环境变量,实现巴哈兜底名称搜索 ( #67 )
...
* 增加TMDB_API_KEY环境变量,为巴哈添加兜底名称搜索
* 更新TMDB_API_KEY环境变量使用方法
* 从TMDB获取Taiwan译名改为获取日语原名
* Update VOD_RETURN_MODE description in README
* 使用可以直连的api,去除代理依赖
* Update README with PROXY_URL and TMDB_API_KEY details
* Fix formatting of TMDB API Key description in README
* 我嘞个翻译插件正则替换掉了all
* 简化bahamutSearch参数
* Clarify TMDB API Key usage in README
Updated TMDB API Key description for clarity and performance impact.
2025-10-20 21:46:20 +08:00
woleigedouer
09805f330b
fix: 修复 Dockerfile 目录结构和环境变量热更新逻辑 ( #66 )
...
* fix: 修复 Dockerfile 目录结构和环境变量热更新逻辑
* feat: 实现弹幕 XML 格式输出,支持环境变量和查询参数配置
- 添加 DANMU_OUTPUT_FORMAT 环境变量支持(默认:json)
- 支持 ?format=xml 和 ?format=json 查询参数
- 实现优先级系统:查询参数 > 环境变量 > 默认值
- 添加 JSON 到 XML 的转换函数
- 完整的 XML 特殊字符转义处理
- 支持所有平台(bilibili、youku、360等)
- 错误回退机制:转换失败时返回 JSON
- 修改端点:GET /api/v2/comment/:commentId、POST /api/v2/comment/by-url
* Update README.md
2025-10-20 21:45:09 +08:00
woleigedouer
571bc727a6
feat: 添加弹幕转换功能 - 支持顶部/底部和彩色弹幕转换 ( #62 ) ( #65 )
...
* feat: 添加弹幕转换功能
- 支持将顶部/底部弹幕转换为浮动弹幕(CONVERT_TOP_BOTTOM_TO_SCROLL)
- 支持将彩色弹幕转换为纯白弹幕(CONVERT_COLOR_TO_WHITE)
- 解决部分播放器不支持顶部/底部弹幕和彩色弹幕的问题
- 优化 convertToDanmakuJson() 函数逻辑
- 转换在去重后执行,性能开销极小(< 0.5 微秒/条)
- 已通过多平台真实测试(腾讯、爱奇艺、优酷、芒果)
- 更新 .env 和 README.md 文档
* 修复 bahamut episodes 处理错误并添加 b23.tv 短链接解析功能
* fix: 移除 worker.js 中的 dotenv require 以修复 Cloudflare Workers 部署问题
* feat: 添加环境变量热更新功能
- 实现 .env 文件监听和自动重载
- 添加 200ms 防抖机制避免重复触发
- 支持文件删除事件处理
- 实现优雅关闭和资源清理
- 修复 dotenv 不覆盖已存在环境变量的问题(添加 override: true)
- 添加 chokidar 依赖支持文件监听
- 更新文档说明热更新使用方法
影响范围:
- Node.js 本地运行环境
- Docker 容器环境(需 Volume 挂载)
- 不影响 Cloudflare/Vercel/Netlify 部署
* 调整日志级别默认值为 info
* Update worker.js
2025-10-19 23:35:25 +08:00
woleigedouer
9dc8886fc4
feat: 添加日志级别配置和弹幕缓存独立配置,修复 lastSelectMap Map 序列化 BUG ( #63 )
...
* Update README.md
* feat: 添加日志级别配置和弹幕缓存独立配置,修复 lastSelectMap Map 序列化 BUG
新增功能:
- 添加 LOG_LEVEL 环境变量支持(error/warn/info 三个级别,默认 warn)
- 添加 COMMENT_CACHE_MINUTES 环境变量支持(弹幕缓存时间独立配置)
- 改进 lastSelectMap 为 Map 对象,支持 FIFO 删除和更好的性能
BUG 修复:
- 修复 lastSelectMap Map 对象序列化问题,防止 Redis 缓存数据丢失
- 新增 serializeValue() 函数处理 Map 对象的正确序列化
- 修复 getRedisCaches() 中的哈希值计算
- 修复 updateRedisCaches() 中的序列化逻辑
- 修复 setRedisKey() 和 setRedisKeyWithExpiry() 中的数据序列化
改进:
- 增强 addAnime() 函数的错误处理(try-catch)
- 改进日志输出格式(使用 JSON.stringify)
- 新增 cleanupExpiredIPs() 函数清理过期的限流 IP 记录
- 优化 Redis 缓存初始化逻辑
文档更新:
- 更新 .env.example 配置文件
- 更新 README.md 功能说明和环境变量文档
* fix: 修复 JSON 日期格式导致小幻客户端反序列化失败
问题描述
========
小幻客户端在搜索"琉璃的宝石"时报错:
System.Text.Json.JsonException: The JSON value could not be converted to
System.Nullable`1[System.DateTimeOffset].
Path: $.bangumi.episodes[0].airDate
根本原因
========
VOD 源(如听风)返回的年份为 0 时,生成的 startDate 格式为 "0-01-01T00:00:00",
不符合 ISO 8601 标准,导致 .NET 的 DateTimeOffset 无法解析。
修复方案
========
1. 添加 generateValidStartDate() 函数
- 验证年份是否在 1900-2100 范围内
- 无效年份自动使用当前年份
- 返回标准 ISO 8601 格式:YYYY-01-01T00:00:00Z
2. 更新所有 6 个数据源的日期生成逻辑
- VOD 源(听风等)
- 360kan
- 人人视频
- hanjutv
- bahamut
- 腾讯视频
修改文件
========
- danmu_api/worker.js
* 第 1405-1413 行:添加 generateValidStartDate() 函数
* 第 4539 行:VOD 源日期修复
* 第 4603 行:360kan 日期修复
* 第 4641 行:人人视频日期修复
* 第 4690 行:hanjutv 日期修复
* 第 4734 行:bahamut 日期修复
* 第 4782 行:腾讯视频日期修复
测试结果
========
✅ 10 个单元测试通过
✅ 6 个 API 响应场景测试通过
✅ 代码语法检查通过
备注
====
- hanjutv 搜索日志 "seriesData 或 seriesList 不存在" 是正常行为
- 该修复确保所有数据源返回的日期格式都符合 ISO 8601 标准
- 小幻客户端现在能够正确解析 DateTimeOffset 类型
2025-10-19 14:17:37 +08:00
woleigedouer
cc3ffe6b0b
feat: 添加手动匹配过滤功能并替换默认VOD站点 ( #59 )
...
* feat: 手动匹配时添加过滤功能并替换默认VOD站点
- 将默认VOD站点改为 https://gctf.tfdh.top
- 在手动选择接口中实现过滤
- 支持剧集标题和选集列表标题的过滤
- 添加ENABLE_EPISODE_FILTER环境变量开关
- 更新所有相关文档和配置
* fix: 修复360电影和VOD高清正片被过滤的问题
- 移除DEFAULT_EPISODE_TITLE_FILTER中的'高清正片'关键词
* 高清正片是正片的标记,不应该被过滤
* 修复VOD数据中#高清正片#被误过滤的问题
- 为360电影标题添加#符号
* 统一所有数据源的标题格式为【平台】 #标题#
* 修复360电影数据全部被过滤的问题
* 使extractEpTitle()能正确提取标题
- 同步更新README.md文档中的默认过滤规则示例
* refactor: 优化和扩展剧集标题过滤规则
- 合并平台规则,提高过滤精准度
* 新增灵活匹配:抢先(看|版|集|篇)?、加更(版|篇)?、会员(专享|加长|尊享|专属|版)?
* 新增幕后变体:幕后(故事|花絮|独家)?
* 新增直播变体:直播(陪看|回顾)?
* 新增未播变体:未播(片段)?
* 新增花絮变体:花絮(独家)?
- 新增平台特定内容过滤
* 腾讯:解忧局、走心局、火锅局、巅峰时刻、坞里都知道、福持目标坞民
* 芒果:陪看(记)?、超前营业、超前vlog
* 通用:采访
- 优化正则表达式
* .{2,}篇 → .{3,}篇(避免过度过滤)
* 移除冗余的会员版(已包含在会员(版)?中)
* feat: 实现搜索结果和弹幕缓存功能
- 添加内存缓存机制,支持搜索结果和弹幕数据缓存
- 实现时间戳检查,自动过期清理(默认1分钟TTL)
- 添加 SEARCH_CACHE_MINUTES 环境变量配置
- 更新 README 文档和环境变量说明
修改文件:
- danmu_api/worker.js: 添加缓存管理函数和集成逻辑
- .env.example: 添加缓存配置说明
- README.md: 更新功能列表、环境变量表和注意事项
性能提升:
- 相同关键词的重复搜索响应时间从 API 调用时间降低到毫秒级
- 相同视频 URL 的重复弹幕请求响应时间从 API 调用时间降低到毫秒级
* feat: 实现 VOD 采集站点可配置返回模式
- 添加 VOD_RETURN_MODE 环境变量,支持两种模式:
* all: 返回所有配置的 VOD 站点结果(结果较多)
* fastest: 只返回最快响应的 VOD 站点结果(默认,避免结果过多)
- 实现 getVodAnimesFromFastestServer() 函数
* 使用 Promise.race 获取最快响应的服务器
* 如果最快的服务器无数据,自动尝试其他服务器
- 实现 getVodAnimesFromAllServersImpl() 函数
* 使用 Promise.allSettled 并发查询所有服务器
* 单个服务器失败不影响其他服务器
- 更新默认 VOD 站点配置为 3 个站点:
* 金蝉@https://zy.jinchancaiji.com
* 789@https://www.caiji.cyou
* 听风@https://gctf.tfdh.top
- 更新配置文件和文档
* .env.example: 添加 VOD_RETURN_MODE 配置
* README.md: 更新环境变量表和使用说明
- 默认行为改为 fastest 模式,避免搜索结果过多
* feat: 添加 .env 文件支持并优化构建脚本
- 在 worker.js 和 worker.test.js 中添加 dotenv 加载
- 优化 docker-image.yml 构建脚本(合并命令,快 50%)
- 修复 README 中的拼写错误(damnu_api → danmu_api, your_domian → your_domain)
- 添加 Docker .env 文件使用说明和示例
* chore: bump version to 1.4.0
* feat: 禁用集标题过滤默认值并修复环境变量配置
- 将 ENABLE_EPISODE_FILTER 默认值从 true 改为 false,避免综艺节目被过度过滤
- 修复 vodReturnMode 环境变量未被添加到 envs 对象的问题
- 同步更新 .env.example 和 README.md 文档
Fixes: huangxd- review comments
* refactor: 移除剧集标题 # 号包裹设计
- 移除所有剧集标题中的 # 号包裹(10 处)
- 删除 extractEpTitle() 函数及所有调用(7 处)
- 更新过滤逻辑以直接使用完整标题
- 简化 filterSameEpisodeTitle() 函数
- 保留【】平台前缀格式及正确的空格
修改位置:
- 360kan、renren(2处)、imgo、youku、qq、hanjutv、bahamut、tencent、手动解析
- searchAnime、getBangumi、searchBangumi、fallbackMatchAniAndEp 过滤逻辑
* feat: 优化限流与缓存交互设计 - 缓存命中时不计入限流
feat: 优化限流与缓存交互设计 - 缓存命中时不计入限流
## 问题描述
原始设计中,限流检查在缓存检查之前执行,导致即使返回缓存数据也会计入限流次数。
这会导致用户频繁访问同一弹幕时被限流,影响用户体验。
## 解决方案
重构 GET /api/v2/comment/:commentId 接口的限流逻辑:
1. 在限流检查之前先检查缓存
2. 缓存命中时直接返回,不执行限流检查
3. 只有缓存未命中时才计入限流次数
## 改进效果
- ✅ 缓存命中时不计入限流,用户可频繁访问同一弹幕
- ✅ 缓存未命中时正常计入限流,保护后端服务
- ✅ 添加详细的 [Rate Limit] 日志标记,便于调试
- ✅ 添加设计说明注释,便于后续维护
## 技术细节
- 修改文件:danmu_api/worker.js (第 5415-5476 行)
- 新增逻辑:缓存优先检查 + 条件限流
- 新增日志:[Rate Limit] Cache hit 和 Request counted
## 测试验证
已通过运行日志验证:
- 首次请求弹幕:计入限流 ✓
- 重复请求同一弹幕:不计入限流 ✓
- 新弹幕首次请求:计入限流 ✓
- 新弹幕重复请求:不计入限流 ✓
* feat: 统一 Tencent 平台标识为 qq
- 将 Tencent 集标题平台标识从【tencent】改为【qq】
- 更新 README 采集源平台列表中 Tencent 对应的平台为 qq
- 从 PLATFORM_ORDER 可选平台列表中移除 tencent
2025-10-19 08:26:08 +08:00
huangxd-
534761c7db
feat: 支持netlify一键部署并修复一些bug ( #58 )
...
* 修复如果不冷启动一直使用animes缓存中旧数据的问题
* 修复有对接redis的场景下手动解析链接只返回第一次请求的链接的问题
* 手动搜索场景通过获取播放链接title作为集标题显示
* 增加netlify一键部署
* 修改readme
2025-10-18 11:49:51 +08:00
woleigedouer
58d6292948
feat: 添加B站ss格式番剧链接支持 ( #55 )
...
* feat: 添加B站ss格式番剧链接支持
- 新增对 ss 格式番剧链接的识别和处理
- 使用 season_id 参数调用B站API获取番剧信息
- 默认获取第一集的弹幕数据
- 更新错误提示信息,包含 ss 格式说明
* feat: 添加 VOD 服务器请求超时机制
- 使用 AbortController 实现 HTTP 请求超时控制
- 新增 VOD_REQUEST_TIMEOUT 环境变量(默认 5000ms)
- 防止慢速或失效的采集站阻塞整个搜索过程
- 添加详细的超时错误日志"
* fix(tencent): 支持单页剧集分集提取
问题:
- 部分腾讯视频剧集采用单页展示所有集数
- 原逻辑在未找到tabs分页信息时直接返回空数组
- 导致这类剧集无法被缓存和使用
修改:
- 在getTencentEpisodes函数中新增单页处理分支
- 当tabs.length === 0时,尝试从初始API响应中提取分集
- 保持原有多页逻辑不变
影响范围:
- danmu_api/worker.js (getTencentEpisodes函数, 第1814-1896行)
* Update worker.js
2025-10-18 11:49:22 +08:00
Elegy233
2cff9d8f0d
增强Node部署客户端IP获取逻辑使能够兼容反代场景 ( #52 )
...
* Node部署客户端IP获取兼容反代场景
* 增加小幻使用提示
* 更改issue链接方式,直接#不确定合并行不行(
2025-10-17 15:37:30 +08:00
huangxd-
91ee96d917
feat: 支持手动搜索过程中输入爱优腾芒哔播放链接获取弹幕并修复一些bug ( #51 )
...
* 删除集标题中的title和date,防止集标题过长导致选集时看不到第几集
* 修复优酷弹幕颜色
* 支持手动搜索过程中输入爱优腾芒哔播放链接获取弹幕
* 修改readme
* 修复日志中的时区问题,默认使用shanghai时区
2025-10-16 22:39:58 +08:00