ALLMarvelous/musicdiver-mypage-api
GitHub: ALLMarvelous/musicdiver-mypage-api
非官方的 MUSIC DIVER MyPage API 封装服务器,为社区开发者提供高性能缓存、数据标准化、历史追踪与资源镜像等增强能力。
Stars: 0 | Forks: 0
# MUSIC DIVER MyPage API
这是一个非官方的 RESTful API 服务器,它封装了 TAITO 私有的官方 [MUSIC DIVER MyPage](https://mypage.musicdiver.jp) API。
本 API 专门为 [**DIVE.MOE**](https://dive.moe) 提供支持,这是一个非官方的 MUSIC DIVER Web 伴侣和统计追踪器。
## API 文档
- **本 API**:交互式测试场与代理端点位于 https://api.dive.moe/docs
- **上游官方 API 文档**:请参阅 [API.md](API.md) 获取所有逆向工程的 `mypage.musicdiver.jp` 端点的详细技术解析。
## 为什么使用本 API?
如果你正在为 MUSIC DIVER 开发工具,查询本服务器(或使用 `api.dive.moe`)相比于直接调用 `mypage.musicdiver.jp` 具有诸多实践和技术上的优势:
### 高性能缓存与速度
官方 MyPage API 可能会很慢,且对高请求量非常敏感。本服务器将玩家配置文件、歌曲列表、谱面信息和活动数据缓存在 MongoDB 中,同时使用 Redis ZSET 进行快速、亚毫秒级的排行榜和排名计算。
### Rating 与排名历史追踪
官方 MyPage API 仅显示玩家在任意给定时刻的当前状态。本服务器会定期自动记录玩家的 rate 和排名快照,从而能够追踪进度、生成 Rating 图表并查看历史统计数据。
### 速率限制与服务器保护
直接向 TAITO 的私有 API 发起请求很容易触发速率限制或导致 IP 封禁。本服务器通过 Bottleneck 使用内置的请求队列机制,确保上游请求安全、可靠且保持在合理范围内。
### 干净的数据标准化
官方 MyPage API 的原始响应可能不一致,或包含损坏的条目(例如无法游玩的假谱面)。本服务器将所有数据标准化为干净、强类型的 JSON 响应,并剔除不良条目。
### 资源镜像
封面图和曲绘图像会被自动获取、缓存,并镜像到兼容 S3 的对象存储(例如 Cloudflare R2)中,通过 CDN 提供快速的资源分发(`jackets/{musicId}.png`)。
### 自动后台同步
后台任务会定期运行,以拉取更新的歌曲列表、谱面难度元数据、活动排行榜和顶尖玩家配置文件,无需手动触发。
## 技术栈
- **运行时:** Bun
- **框架:** ElysiaJS
- **数据库:** MongoDB(通过 Mongoose)和 Redis(通过 Bun)
- **资源存储:** 兼容 S3 的对象存储(Cloudflare R2 / AWS S3)
- **API 文档:** Scalar UI
- **实用工具:** Bottleneck(速率限制)、node-cron(调度器)、Oxlint & Oxfmt(代码检查与格式化)
## 快速开始
### 前置条件
- Bun(v1.0 或更高版本)
- 正在运行的 MongoDB 实例
- 正在运行的 Redis 实例
### 安装与本地设置
1. **克隆代码库:**
git clone https://github.com/ALLMarvelous/musicdiver-mypage-api.git
cd musicdiver-mypage-api
2. **安装依赖:**
bun install
3. **配置环境变量:**
将 `.env.example` 复制为 `.env.local`:
cp .env.example .env.local
使用你的数据库 URI 和存储凭据更新 `.env.local`:
NODE_ENV=development
PORT=3000
MONGO_URI=mongodb://127.0.0.1:27017/diver
REDIS_HOST=localhost
REDIS_PORT=6379
# S3 / Cloudflare R2
S3_ENDPOINT=https://.r2.cloudflarestorage.com
S3_ACCESS_KEY_ID=your_access_key_id
S3_SECRET_ACCESS_KEY=your_secret_access_key
S3_BUCKET=dive
4. **启动开发服务器:**
bun dev
5. **构建并运行生产环境:**
bun run build
bun start
## 相关项目
- **DIVE.MOE:** https://dive.moe
- **API 文档:** https://api.dive.moe/docs
## 免责声明
这是一个非官方的粉丝制作项目,与 TAITO Corporation 或 MUSIC DIVER 没有任何隶属、认可或关联关系。所有商标、游戏资产和标志均属于其各自的所有者。
标签:API服务, MongoDB, Redis, RESTful API, 提示词优化, 搜索引擎查询, 数据缓存, 数据规范化, 游戏数据, 漏洞探索, 自动化攻击