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, 提示词优化, 搜索引擎查询, 数据缓存, 数据规范化, 游戏数据, 漏洞探索, 自动化攻击