* 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
161 lines
5.7 KiB
Bash
161 lines
5.7 KiB
Bash
# 弹幕 API 环境变量配置示例
|
||
# 复制此文件为 .env 并根据需要修改配置
|
||
#
|
||
# 热更新说明:
|
||
# - Docker 环境:修改宿主机的 .env 文件后,容器会自动检测并重新加载配置(无需重启容器)
|
||
# - Node.js 本地环境:修改 .env 文件后,应用会自动检测并重新加载配置(无需重启应用)
|
||
# - Cloudflare/Vercel/Netlify:需要在平台的环境变量设置中修改,然后重新部署
|
||
|
||
# ==================== 基础配置 ====================
|
||
|
||
# API 访问令牌(用于鉴权)
|
||
# 默认值:87654321
|
||
TOKEN=87654321
|
||
|
||
# 其他服务器地址(第三方弹幕服务器)
|
||
# 默认值:https://api.danmu.icu
|
||
OTHER_SERVER=https://api.danmu.icu
|
||
|
||
# ==================== VOD 配置 ====================
|
||
|
||
# VOD 服务器配置(支持多服务器)
|
||
# 格式:名称@URL,名称@URL,...
|
||
# 示例:VOD_SERVERS=金蝉@https://zy.jinchancaiji.com,789@https://www.caiji.cyou,听风@https://gctf.tfdh.top
|
||
# 如果不指定名称,会自动生成 vod-1, vod-2 等名称
|
||
# 默认值:金蝉@https://zy.jinchancaiji.com,789@https://www.caiji.cyou,听风@https://gctf.tfdh.top
|
||
VOD_SERVERS=金蝉@https://zy.jinchancaiji.com,789@https://www.caiji.cyou,听风@https://gctf.tfdh.top
|
||
|
||
# VOD 服务器返回模式
|
||
# 可选值:all(返回所有站点结果)、fastest(只返回最快的站点结果)
|
||
# 默认值:fastest
|
||
# 说明:
|
||
# - all: 搜索时会并发查询所有配置的 VOD 站点,返回所有结果(结果较多)
|
||
# - fastest: 搜索时只返回首先响应成功的 VOD 站点结果(结果较少,避免重复)
|
||
VOD_RETURN_MODE=fastest
|
||
|
||
# VOD 服务器请求超时时间(毫秒)
|
||
# 默认值:5000(5秒)
|
||
# 建议值:3000-10000
|
||
# 说明:防止慢速或失效的采集站阻塞整个搜索过程(单个请求超时)
|
||
VOD_REQUEST_TIMEOUT=5000
|
||
|
||
# ==================== Bilibili 配置 ====================
|
||
|
||
# Bilibili Cookie(用于访问需要登录的内容)
|
||
# 默认值:空(不使用 Cookie)
|
||
# BILIBILI_COOKIE=
|
||
|
||
# ==================== 优酷配置 ====================
|
||
|
||
# 优酷并发数(最大:16)
|
||
# 默认值:8
|
||
YOUKU_CONCURRENCY=8
|
||
|
||
# ==================== 源排序配置 ====================
|
||
|
||
# 数据源查询顺序(可选值:360, vod, tencent, renren, hanjutv, bahamut)
|
||
# 默认值:360,vod,renren,hanjutv(不包含 tencent)
|
||
# 如需使用腾讯源,请手动添加:SOURCE_ORDER=360,vod,tencent,renren,hanjutv
|
||
# 注意:bahamut 仅在 Cloudflare 和 Vercel 平台自动启用
|
||
SOURCE_ORDER=360,vod,renren,hanjutv
|
||
|
||
# ==================== 平台排序配置 ====================
|
||
|
||
# 平台优先级排序(用于自动匹配)
|
||
# 默认值:空(自动匹配)
|
||
# 可选值:youku,bilibili,iqiyi,qq,mgtv
|
||
# PLATFORM_ORDER=
|
||
|
||
# ==================== 剧集标题过滤 ====================
|
||
|
||
# 剧集标题过滤正则表达式(用于过滤花絮、预告等非正片内容)
|
||
# 默认值:包含大量关键词的复杂正则表达式
|
||
# 如需自定义,请参考代码中的 DEFAULT_EPISODE_TITLE_FILTER
|
||
# EPISODE_TITLE_FILTER=
|
||
|
||
# ==================== 屏蔽词配置 ====================
|
||
|
||
# 屏蔽词列表(用于过滤弹幕内容)
|
||
# 默认值:空
|
||
# BLOCKED_WORDS=
|
||
|
||
# ==================== 弹幕去重配置 ====================
|
||
|
||
# 分钟内合并去重(最大值:30,0 表示不去重)
|
||
# 默认值:1
|
||
GROUP_MINUTE=1
|
||
|
||
# ==================== 弹幕转换配置 ====================
|
||
|
||
# 是否将顶部和底部弹幕转换为浮动弹幕
|
||
# 默认值:false(不转换)
|
||
# 说明:启用后,顶部弹幕(ct=5)和底部弹幕(ct=4)会被转换为浮动弹幕(ct=1)
|
||
# 可选值:true, false
|
||
CONVERT_TOP_BOTTOM_TO_SCROLL=false
|
||
|
||
# 是否将彩色弹幕转换为纯白弹幕
|
||
# 默认值:false(不转换)
|
||
# 说明:启用后,所有非白色的弹幕颜色会被转换为纯白色(16777215)
|
||
# 可选值:true, false
|
||
CONVERT_COLOR_TO_WHITE=false
|
||
|
||
# ==================== 限流配置 ====================
|
||
|
||
# API 限流:1分钟内同一IP最大请求次数
|
||
# 默认值:3(1分钟内最多3次请求)
|
||
# 设置为 0 表示不限流
|
||
RATE_LIMIT_MAX_REQUESTS=3
|
||
|
||
# ==================== 集标题过滤开关 ====================
|
||
|
||
# 是否在手动选择接口中启用集标题过滤
|
||
# 默认值:false(禁用)
|
||
# 说明:GET /api/v2/bangumi/{id} 和 GET /api/v2/search/anime 接口会过滤掉预告、花絮等特殊集
|
||
# 如需启用过滤,设置为 true
|
||
# 可选值:true, false
|
||
ENABLE_EPISODE_FILTER=false
|
||
|
||
# ==================== 代理配置 ====================
|
||
|
||
# 代理地址(用于访问受限资源)
|
||
# 默认值:空(不使用代理)
|
||
# 格式:http://proxy-server:port 或 https://proxy-server:port
|
||
# PROXY_URL=
|
||
|
||
# ==================== 日志配置 ====================
|
||
|
||
# 日志级别(可选值:error, warn, info)
|
||
# 默认值:warn
|
||
# 说明:
|
||
# - error: 仅显示错误日志
|
||
# - warn: 显示错误和警告日志
|
||
# - info: 显示所有日志(包括详细的调试信息)
|
||
# 建议:生产环境使用 warn,开发/调试时使用 info(默认)
|
||
LOG_LEVEL=info
|
||
|
||
# ==================== 缓存配置 ====================
|
||
|
||
# 搜索结果缓存时间(分钟)
|
||
# 默认值:1
|
||
# 说明:避免短期内重复的不必要 API 请求,同时保证获取最新的结果列表
|
||
# 可根据需要调整:Vercel/Cloudflare 建议 1-5 分钟,Docker 可设置 5-30 分钟
|
||
# 设置为 0 表示不缓存
|
||
SEARCH_CACHE_MINUTES=1
|
||
|
||
# 弹幕缓存时间(分钟)
|
||
# 默认值:1
|
||
# 说明:弹幕数据的缓存时间,独立于搜索结果缓存
|
||
# 可根据需要调整
|
||
COMMENT_CACHE_MINUTES=1
|
||
|
||
# ==================== Redis 配置(Upstash)====================
|
||
|
||
# Upstash Redis REST URL(用于缓存)
|
||
# 默认值:空(不使用 Redis)
|
||
# UPSTASH_REDIS_REST_URL=
|
||
|
||
# Upstash Redis REST Token
|
||
# 默认值:空
|
||
# UPSTASH_REDIS_REST_TOKEN=
|
||
|