简介

本站(maimai.imikufans.cn)对外提供华立(舞萌DX)服务器状态与全服数据查询接口,任何开发者均可免费调用。全部接口为 HTTP GET,返回 JSON,无需注册、无需申请 Key。

本站数据为聚合转发,仅供参考,不保证实时性与准确性,请勿用于商业决策或关键业务。

无需认证 JSON 跨域开放 建议 30 秒/次

基础信息

Base URL

https://maimai.imikufans.cn/api.php

所有接口均以该地址为前缀,通过 ?api= 参数区分具体功能。

请求方式

全部接口使用 GET,参数通过 URL Query String 传递。

响应格式

统一返回 Content-Type: application/json; charset=utf-8,UTF-8 编码,中文与日文均正常显示。

调用频率

本站不主动限流。建议单客户端每 30 秒调用一次。短时间高频请求可能被拒绝。

跨域

已开启 CORS 支持,浏览器前端可直接 fetch 调用,无需自建代理。

缓存建议

status 建议缓存 15~30 秒;top100、ratinglist、chart145 为静态数据,可缓存数小时甚至一天,减少无谓请求。history 每小时更新一次,可缓存 5 分钟。

① 服务器状态 实时

GET /api.php?api=status

获取华立(舞萌DX)服务器当前运行状态,包含多个探针服务的健康度、延迟以及最近上报统计。数据每 30 秒更新一次。

请求参数

参数类型必填说明
apistring是固定值 status

请求示例

curl "https://maimai.imikufans.cn/api.php?api=status"
const res = await fetch("https://maimai.imikufans.cn/api.php?api=status"); const data = await res.json(); console.log(data.verdict, data.services);
import requests r = requests.get("https://maimai.imikufans.cn/api.php", params={"api": "status"}) data = r.json() print(data["verdict"], data["services"])
<?php $json = file_get_contents("https://maimai.imikufans.cn/api.php?api=status"); $data = json_decode($json, true); echo $data["verdict"];

响应字段

字段类型说明
statusstring原始状态标识
verdictstring总判定:normal / degraded / recovering / outage / maintenance / nodata
verdict_textstring中文描述,可直接展示给用户
services[]array探针服务列表,每项含 key、name、state、latency、duration_text
services[].statestringok / down / degraded / recovering / maintenance / nodata
latency.current_msnumber当前平均延迟(毫秒)
latency.load_textstring负载描述:低 / 中 / 高
reports.anomaly_countnumber近期异常上报数
reports.normal_countnumber近期正常上报数
broadcast.msgstring公告文本,可能为空字符串

响应示例

{ "status": "normal", "verdict": "normal", "verdict_text": "一切正常", "services": [ { "key": "net", "name": "NET", "state": "ok", "latency": 42, "duration_text": "" }, { "key": "aime", "name": "会员", "state": "ok", "latency": 38, "duration_text": "" } ], "latency": { "current_ms": 42, "load_text": "低" }, "reports": { "anomaly_count": 3, "normal_count": 120 }, "broadcast": { "msg": "" } }

② Top100 排行 静态

GET /api.php?api=top100

获取全服游玩次数最多的 100 首乐曲,按游玩次数降序。静态数据,不定期更新。

请求参数

参数类型必填说明
apistring是固定值 top100

请求示例

curl "https://maimai.imikufans.cn/api.php?api=top100"
const res = await fetch("https://maimai.imikufans.cn/api.php?api=top100"); const { totalPlays, songs } = await res.json(); songs.slice(0, 10).forEach(s => console.log(s.name, s.plays));
import requests data = requests.get("https://maimai.imikufans.cn/api.php", params={"api": "top100"}).json() for s in data["songs"][:10]: print(s["name"], s["plays"])

响应字段

字段类型说明
totalPlaysnumber全服总游玩次数
songs[]array乐曲列表,按游玩次数降序
songs[].idnumber乐曲 ID
songs[].namestring乐曲名,UTF-8 编码
songs[].playsnumber游玩次数
songs[].coverstring封面相对路径,需自行拼接 https://mai.chongxi.us 前缀

响应示例

{ "totalPlays": 481002, "songs": [ { "id": 731, "name": "妄想感傷代償連盟", "plays": 318703, "cover": "/top100-covers/731.png" }, { "id": 11558, "name": "神っぽいな", "plays": 294880, "cover": "/top100-covers/11558.png" } ] }

③ Rating 分布 静态

GET /api.php?api=ratinglist

获取全服 Rating 百分一段位分布。返回所有已收录版本,current 为默认推荐版本。每 100 分为一段。

请求参数

参数类型必填说明
apistring是固定值 ratinglist

请求示例

curl "https://maimai.imikufans.cn/api.php?api=ratinglist"
const res = await fetch("https://maimai.imikufans.cn/api.php?api=ratinglist"); const { current, versions } = await res.json(); console.log(current.label, current.total);
import requests resp = requests.get("https://maimai.imikufans.cn/api.php", params={"api": "ratinglist"}).json() cur = resp["current"] print(cur["label"], cur["total"]) for d in cur["data"]: print(d["bucket"], d["count"])

响应字段

字段类型说明
currentobject默认版本数据
current.keystring内部版本标识(u / d / f)
current.labelstring版本显示名,如 DX2026
current.totalnumber该版本玩家总数
current.data[].bucketnumberRating 分档起点(如 1000 表示 1000~1100)
current.data[].countnumber该分档玩家数量
versions[]array所有版本数组

响应示例

{ "current": { "key": "dx2026", "label": "DX2026", "total": 134341, "data": [ { "bucket": 1000, "count": 2792 }, { "bucket": 1100, "count": 2453 } ] }, "versions": [ /* 所有版本 */ ] }

④ 越级排行 静态

GET /api.php?api=chart145

获取定数 14.5~15.0 高难谱面的全服游玩排行,含游玩人数与平均/中位/众数达成率。按游玩人数降序。

请求参数

参数类型必填说明
apistring是固定值 chart145

请求示例

curl "https://maimai.imikufans.cn/api.php?api=chart145"
const res = await fetch("https://maimai.imikufans.cn/api.php?api=chart145"); const { totalPlayers, songs } = await res.json(); songs.slice(0, 10).forEach(s => console.log(s.rank, s.name, s.rate, s.players));
import requests data = requests.get("https://maimai.imikufans.cn/api.php", params={"api": "chart145"}).json() for s in data["songs"][:10]: print(s["rank"], s["name"], s["rate"], s["players"])

响应字段

字段类型说明
totalPlayersnumber合计游玩人次
songs[].ranknumber排名
songs[].namestring乐曲名
songs[].musicIdnumber乐曲 ID
songs[].levelnumber难度代号:3 = EXPERT、4 = MASTER、0 = 藏/狂
songs[].ratenumber谱面定数,如 15.0
songs[].playersnumber游玩人数
songs[].avgnumber平均达成率(%)
songs[].mednumber中位数达成率(%)
songs[].modenumber众数达成率(%)
songs[].coverstring封面相对路径

响应示例

{ "totalPlayers": 1368629, "songs": [ { "rank": 1, "players": 40121, "musicId": 834, "name": "PANDORA PARADOXXX", "level": 4, "rate": 15, "avg": 74.9, "med": 80.9, "mode": 100.9, "cover": "/chart145-covers/834.png" } ] }

⑤ 服务可用性 历史

GET /api.php?api=history&hours=12

获取过去 N 小时内各服务的可用率与延迟趋势。数据由本站每分钟采集 /api/bot 后按小时聚合成,每小时一个采样点。

请求参数

参数类型必填说明
apistring是固定值 history
hoursnumber否查询小时数,1~48,默认 12

请求示例

curl "https://maimai.imikufans.cn/api.php?api=history&hours=12"
const res = await fetch("https://maimai.imikufans.cn/api.php?api=history&hours=12"); const { services } = await res.json(); services.forEach(s => { console.log(s.name, s.uptime + "%"); s.hourly.forEach((v, i) => console.log(` -${12 - i}h: ${v}%`)); });
import requests data = requests.get("https://maimai.imikufans.cn/api.php", params={"api": "history", "hours": 12}).json() for s in data["services"]: print(s["name"], f'{s["uptime"]}%') for i, v in enumerate(s["hourly"]): print(f" -{12-i}h: {v}%")

响应字段

字段类型说明
hoursnumber查询的小时数
startnumber起始时间戳(Unix 秒)
nownumber当前时间戳
services[]array服务数组
services[].keystring服务标识,如 net、aime
services[].namestring服务显示名
services[].uptimenumber整体可用率(%),无数据时为 null
services[].hourly[]array逐小时可用率数组,长度为 hours,无数据的小时为 null
services[].latency[]array逐小时平均延迟数组(ms),无数据的小时为 null

响应示例

{ "hours": 12, "start": 1759320000, "now": 1759363200, "services": [ { "key": "net", "name": "NET", "uptime": 100, "hourly": [100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100], "latency": [42, 45, 51, 38, 41, 43, 46, 39, 42, 44, 47, 45] }, { "key": "wechat", "name": "公众号(NET)", "uptime": 37.5, "hourly": [100, 0, 0, 0, 100, 0, 0, 100, 0, 0, 0, 0], "latency": [103, null, null, null, 98, null, null, 105, null, null, null, null] } ] }

说明

历史数据由本站自建采集器每分钟记录一次,保留 48 小时。新部署的站点需要运行满 1 小时才会出现第一个数据点。

无数据的小时返回 null,请在渲染时区分"无数据"和"可用率 0%"。

错误码

所有响应使用标准 HTTP 状态码。出现非 200 时,响应体为 JSON,含 error 字段。

状态码含义说明
200成功正常返回数据
400参数错误缺少 api 参数或值不在白名单内
502上游异常数据源暂时不可用,请稍后重试

错误响应示例

{ "error": "Invalid API" }

使用条款

1. 数据来源标注:使用本站接口时,请在显著位置标注数据来源。

2. 禁止滥用:请勿进行高频轮询、批量抓取或对本站造成负载压力。建议单客户端 30 秒一次。

3. 免责声明:本站为非官方平台,数据仅供参考,与华立科技及世嘉官方无任何关联。因使用本站数据造成的任何后果,本站不承担责任。

4. 变更:本站接口可能在不预先通知的情况下调整或下线,请在生产环境中做好容错处理。

反馈联系

接口异常、功能建议或合作事宜,欢迎通过以下方式联系:

站点:https://maimai.imikufans.cn