* 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
46 lines
1.3 KiB
YAML
46 lines
1.3 KiB
YAML
name: Build and Push Docker Image to Docker Hub
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
pull_request:
|
|
branches:
|
|
- main
|
|
|
|
jobs:
|
|
build:
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
# 检出代码
|
|
- name: Checkout code
|
|
uses: actions/checkout@v3
|
|
|
|
# 从 worker.js 中读取版本号
|
|
- name: Read version from worker.js
|
|
id: version
|
|
run: |
|
|
VERSION=$(grep 'const VERSION' danmu_api/worker.js | sed -E 's/.*const VERSION = "(.*)".*/\1/')
|
|
echo "VERSION=$VERSION" >> $GITHUB_ENV
|
|
|
|
# 设置 Docker 镜像缓存(可选,加速构建)
|
|
- name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@v2
|
|
|
|
# 登录 Docker Hub
|
|
- name: Login to Docker Hub
|
|
uses: docker/login-action@v2
|
|
with:
|
|
username: ${{ secrets.DOCKER_USERNAME }}
|
|
password: ${{ secrets.DOCKER_PASSWORD }}
|
|
|
|
# 构建 Docker 镜像,并指定平台为 amd64 和 arm64,推送到 Docker Hub
|
|
# 使用单条命令同时指定两个标签,避免重复构建
|
|
- name: Build and Push Docker image with version and latest tag
|
|
run: |
|
|
docker buildx build --platform linux/amd64,linux/arm64 \
|
|
-t ${{ secrets.DOCKER_USERNAME }}/danmu-api:${{ env.VERSION }} \
|
|
-t ${{ secrets.DOCKER_USERNAME }}/danmu-api:latest \
|
|
--push .
|