diff --git a/Dockerfile b/Dockerfile index 16f0df8..578bb69 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,6 +13,9 @@ RUN npm install # 复制所有源代码 COPY danmu_api/ . +# 设置环境变量 TOKEN 默认值 +ENV TOKEN=87654321 + # 暴露端口 EXPOSE 9321 diff --git a/danmu_api/README.md b/danmu_api/README.md index 7fac983..5d9c934 100644 --- a/danmu_api/README.md +++ b/danmu_api/README.md @@ -1,6 +1,6 @@ -# 简单 Node.js API 服务器 +# 简单 弹幕 API 服务器 -一个基于 Node.js 和 Express 的简单 API 服务器,支持弹弹play的动漫搜索、详情查询和弹幕评论功能,以及日志记录。 +一个基于 js 的弹幕 API 服务器,兼容弹弹play的搜索、详情查询和弹幕获取功能,以及日志记录。 ## 功能 - **API 接口**: @@ -9,13 +9,12 @@ - `GET /api/v2/comment/:commentId?withRelated=true&chConvert=1`:获取指定弹幕评论,支持返回相关评论和字符转换。 - `GET /api/logs`:获取最近的日志(最多 500 行,格式为 `[时间戳] 级别: 消息`)。 - **日志记录**:捕获 `console.log`(info 级别)和 `console.error`(error 级别),JSON 内容格式化输出。 -- **部署支持**:支持本地运行、Docker 容器化和 Vercel 部署。 +- **部署支持**:支持本地运行、Docker 容器化、Vercel 一键部署、Cloudflare 一键部署和 Docker 一键启动。 ## 前置条件 - Node.js(v18 或更高版本) - npm - Docker(可选,用于容器化部署) -- Vercel CLI(用于手动 Vercel 部署) ## 本地运行 1. **克隆仓库**: @@ -50,8 +49,24 @@ 2. **运行容器**: ```bash - docker run -p 9321:9321 danmu-api-server + docker run -d -p 9321:9321 --name danmu-api -e TOKEN=your_token_here danmu-api-server ``` + - 使用`-e TOKEN=your_token_here`设置`TOKEN`环境变量,覆盖Dockerfile中的默认值。 + +3. **测试 API**: + 使用 `http://{ip}:9321` 访问上述 API 接口。 + +## Docker 一键启动 +1. **拉取镜像**: + ```bash + docker pull logvar/danmu-api:0.0.1 + ``` + +2. **运行容器**: + ```bash + docker run -d -p 9321:9321 --name danmu-api -e TOKEN=your_token_here logvar/danmu-api:0.0.1 + ``` + - 使用`-e TOKEN=your_token_here`设置`TOKEN`环境变量。 3. **测试 API**: 使用 `http://{ip}:9321` 访问上述 API 接口。 @@ -63,53 +78,50 @@ [![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https://github.com/huangxd-/danmu_api&project-name=danmu_api&repository-name=danmu_api) -**注意**:请将按钮链接中的 `https://github.com/your-username/simple-api-server` 替换为你的实际 Git 仓库地址(例如 `https://github.com/your-username/your-repo`)。编辑 `danmu_api/README.md` 并更新链接后,推送到仓库,点击按钮即可自动克隆和部署。 +**注意**:请将按钮链接中的 `https://github.com/huangxd-/danmu_api` 替换为你的实际 Git 仓库地址。编辑 `README.md` 并更新链接后,推送到仓库,点击按钮即可自动克隆和部署。 +- **设置环境变量**:部署后,在 Vercel 仪表板中: + 1. 转到你的项目设置。 + 2. 在“Environment Variables”部分添加 `TOKEN` 变量,输入你的 API 令牌值。 + 3. 保存更改并重新部署。 -### 手动部署 -1. **安装 Vercel CLI**: - ```bash - npm install -g vercel - ``` +## 部署到 Cloudflare -2. **登录 Vercel**: - ```bash - vercel login - ``` +### 一键部署 +点击以下按钮即可将项目快速部署到 Cloudflare: -3. **部署项目**: - 在项目根目录运行: - ```bash - vercel - ``` - - 按提示操作: - - 确认部署(输入 `y`)。 - - 选择你的 Vercel 账户或团队(scope)。 - - 项目根目录选择 `./`(包含 `danmu_api` 子目录)。 - - 保留默认设置,除非需要特定更改。 - - Vercel 会自动检测 `danmu_api/server.js` 和 `danmu_api/vercel.json` 并完成部署。 +[![Deploy to Cloudflare Workers](https://deploy.workers.cloudflare.com/button)](https://deploy.workers.cloudflare.com/?url=https://github.com/huangxd-/danmu_api) -4. **验证部署**: - 部署完成后,Vercel 会提供一个 URL(例如 `https://your-project.vercel.app`)。使用此 URL 测试 API: - - `GET https://your-project.vercel.app/api/v2/search/anime?keyword=Anime%20A` - - `GET https://your-project.vercel.app/api/v2/bangumi/1` - - `GET https://your-project.vercel.app/api/v2/comment/1?withRelated=true&chConvert=1` - - `GET https://your-project.vercel.app/api/logs` +**注意**:请将按钮链接中的 `https://github.com/huangxd-/danmu_api` 替换为你的实际 Git 仓库地址。编辑 `README.md` 并更新链接后,推送到仓库,点击按钮即可自动克隆和部署。 +- **设置环境变量**:部署后,在 Cloudflare 仪表板中: + 1. 转到你的 Workers 项目。 + 2. 转到“Settings” > “Variables”。 + 3. 添加 `TOKEN` 环境变量,输入你的 API 令牌值。 + 4. 保存并部署。 ## 项目结构 ``` +danmu_api/ +├── .github/ +│ └── workflows/ +│ └── docker-image.yml ├── danmu_api/ -│ ├── server.js # 主 API 服务器代码 │ ├── README.md # 项目文档 -├── package.json # 项目依赖和脚本 -├── Dockerfile # Docker 配置 -├── vercel.json # Vercel 部署配置 +│ ├── server.js # 本地node启动脚本 +│ ├── version # 定义版本号 +│ ├── worker.js # 主 API 服务器代码 +│ ├── worker.test.js # 测试文件 +├── .gitignore +├── Dockerfile +├── package.json +├── vercel.json ``` ## 注意事项 - 日志存储在内存中,服务器重启后会清空。 - `/api/logs` 中的 JSON 日志会格式化显示,带缩进以提高可读性。 -- 确保 `package.json` 中包含 `express` 依赖。 +- 确保 `package.json` 中包含 `node-fetch` 依赖。 - 一键部署需要将项目推送到公开的 Git 仓库(如 GitHub),并更新按钮中的仓库地址。 +- 运行 Docker 容器时,需通过 `-e TOKEN=your_token_here` 传递 `TOKEN` 环境变量。 ## 许可证 MIT \ No newline at end of file diff --git a/wrangler.toml b/wrangler.toml new file mode 100644 index 0000000..24d88fe --- /dev/null +++ b/wrangler.toml @@ -0,0 +1,24 @@ +name = "danmu-api2" # Worker 名称,可自定义 +main = "danmu_api/worker.js" # 入口文件路径(Workers 会导出 fetch 处理程序) +compatibility_date = "2025-09-13" # 使用当前日期或更高,确保兼容最新 API + +# Node.js 兼容性标志(必需,用于 Express 和 process.env) +[compatibility_flags] +nodejs_compat = true +enable_nodejs_http_server_modules = true # 支持 node:http server API,用于 Express + +# 构建步骤:安装依赖并构建(如果有 TypeScript 或其他构建需求) +[build] +command = "npm install" # 简单安装依赖;如果有构建脚本,可改为 "npm run build" + +# 环境变量(文本类型,直接在代码中使用 process.env.TOKEN) +[vars] +NODE_ENV = "production" # 可选,默认值 + +# 触发器(可选,如果有定时任务) +[[triggers]] +crons = [] # 示例:["0 0 * * *"] 用于每日触发 + +# 环境(可选,用于不同环境如 dev/prod) +[env.production] +# 生产环境特定配置 \ No newline at end of file