@mai-kit/database
@mai-kit/database 提供舞萌 DX 游戏数据与素材访问。
MaimaiDatabase 定义与数据源无关的接口,内置的 LXNS 和 Diving-Fish 适配负责连接具体 API 与 CDN。玩家成绩由 @mai-kit/prober 查询。
用法
ts
// db 为任意 MaimaiDatabase 实现
const { songs } = await db.getSongList({ notes: true });
const jacket = await db.getAsset("jacket", songId);
// 可注入 Draw:new Draw({ database: db })内置适配
ts
import { LxnsMaimaiDatabase, DivingFishMaimaiDatabase } from "@mai-kit/database";
const lxns = new LxnsMaimaiDatabase();
const df = new DivingFishMaimaiDatabase();启用缓存
ts
import {
FileSystemCacheStore,
LxnsMaimaiDatabase,
MemoryCacheStore,
} from "@mai-kit/database";
// 内存(Node / Web)
const memoryDb = new LxnsMaimaiDatabase({
cache: {
store: new MemoryCacheStore({ maxEntries: 512 }),
ttlMs: 5 * 60_000,
},
});
// 磁盘(仅 Node)
const diskDb = new LxnsMaimaiDatabase({
cache: {
store: new FileSystemCacheStore({ directory: "/var/cache/mai-kit", maxEntries: 2_000 }),
ttlMs: 24 * 60 * 60_000,
},
});错误
- MaimaiDatabaseError:HTTP / 业务 / 缓存等通用失败
- MaimaiDatabaseNotImplementedError:适配无法实现某接口方法(如水鱼无别名 API)
- 适配子类:
LxnsDatabaseError/DivingFishDatabaseError
接口与模型
| 名称 | 描述 |
|---|---|
| Alias | 曲目别名 |
| BuddyNotes | 宴会场 BUDDY 谱面物量 |
| ChartTag | DXRating 社区谱面标签 |
| ChartTagGroup | DXRating 社区谱面标签分组 |
| ChartTagQuery | 查询某张谱面的标签;字段与 prober Score 可结构化兼容。 |
| CollectionGenre | 收藏品分类 |
| CollectionListQuery | 收藏品列表查询参数 |
| Genre | 流派 |
| MaimaiDatabase | 游戏静态数据与素材访问接口(与具体数据服务无关)。 |
| Notes | 谱面物量 |
| Song | 曲目。 |
| SongCollection | 曲目关联的收藏品 |
| SongDifficulties | 一首曲目的全部难度 |
| SongDifficulty | 谱面难度(标准 / DX) |
| SongDifficultyUtage | 宴会场谱面难度 |
| SongList | 曲目列表查询结果 |
| SongListQuery | 曲目列表查询参数 |
| Version | 版本 |
| VersionQuery | 按版本过滤的查询参数 |
| AssetType | 素材类型 |
| LocalizedText | DXRating 社区谱面标签的多语言文本 |
LXNS 适配
| 名称 | 描述 |
|---|---|
| LxnsDatabaseError | LXNS 静态数据 / 素材适配专用错误(继承 MaimaiDatabaseError)。 |
| LxnsMaimaiDatabase | MaimaiDatabase 的 LXNS 适配:公开 JSON API + 素材 CDN。 |
| LxnsMaimaiDatabaseOptions | LxnsMaimaiDatabase 构造选项 |
| isLxnsDatabaseError | 类型守卫:是否为 LxnsDatabaseError。 |
Diving-Fish 适配
| 名称 | 描述 |
|---|---|
| DivingFishDatabaseError | Diving-Fish(水鱼)静态数据 / 素材适配专用错误(继承 MaimaiDatabaseError)。 |
| DivingFishMaimaiDatabase | MaimaiDatabase 的 Diving-Fish(水鱼)适配。 |
| DivingFishChartStat | 水鱼单张谱面的社区成绩统计。 |
| DivingFishChartStats | 水鱼 /chart_stats 的结构化结果。 |
| DivingFishDifficultyStats | 水鱼按难度汇总的全站成绩统计。 |
| DivingFishMaimaiDatabaseOptions | DivingFishMaimaiDatabase 构造选项 |
| DIVING_FISH_DEFAULT_BASE_URL | Diving-Fish 曲目 API 默认根地址 |
| DIVING_FISH_DEFAULT_COVER_BASE_URL | 封面 CDN 默认根(https://www.diving-fish.com/covers/{id}.png) |
| isDivingFishDatabaseError | 类型守卫:是否为 DivingFishDatabaseError。 |
缓存
| 名称 | 描述 |
|---|---|
| DatabaseCache | 适配器共用的缓存读写与并发请求合并器。 |
| FileSystemCacheStore | Node.js 专用的磁盘缓存存储(实现 DatabaseCacheStore)。 |
| MemoryCacheStore | 双端可用的内存 LRU 缓存存储。 |
| DatabaseCacheEntry | 缓存存储的二进制条目。 |
| DatabaseCacheOptions | database 适配器的通用缓存配置。 |
| DatabaseCacheStore | database 通用缓存存储接口,Node / Web 均可自行实现。 |
| FileSystemCacheStoreOptions | FileSystemCacheStore 的配置(Node.js only)。 |
| MemoryCacheStoreOptions | MemoryCacheStore 的容量配置。 |
错误
| 名称 | 描述 |
|---|---|
| MaimaiDatabaseError | 静态数据 / 素材访问的通用错误(HTTP 或业务失败)。 |
| MaimaiDatabaseNotImplementedError | 当前数据源无法实现 MaimaiDatabase 某一方法时抛出的包级错误。 |
| MaimaiDatabaseErrorInit | MaimaiDatabaseError 构造参数 |
| MaimaiDatabaseNotImplementedErrorInit | MaimaiDatabaseNotImplementedError 构造参数 |
| isMaimaiDatabaseError | 类型守卫:是否为 MaimaiDatabaseError(含各适配子类)。 |
| isMaimaiDatabaseNotImplementedError | 类型守卫:是否为 MaimaiDatabaseNotImplementedError。 |
