Files
maipulse/README.md
T
shouko 8421898626 maipulse: 脱敏存档
- Python 后端 + 单页前端 + Android(Chaquopy) 壳
- 曲库 1343 首 / 称号 2800 个
- 机台身份与店铺信息已抹除,字段留空
- 打包脚本含 16KB 页对齐与自动脱敏
2026-10-28 22:27:46 +08:00

73 lines
2.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# maipulse
舞萌 DX 国服(SDGB)的本地发包台。Flask + 单页前端,安卓壳用 Chaquopy 把 Python 打进 APK。
**这个仓库是脱敏存档**:所有机台身份(标题服务器地址、AES 密钥与 IV、混淆盐)和店铺信息都已经抹掉,
字段留空,运行时从配置文件读。想用的话自己填——见下面的「配置」。
## 目录
```
maipulse/ Python 后端 + 前端单页
app.py Flask 入口,所有 HTTP 接口
core/ 业务模块(session / b50 / unlock / items / settle ...)
html/index.html 整个界面(CSS/JS 全内联)
data/master/ 曲库与道具索引(公开数据)
tools/ 打包、更新合并、脱敏脚本
astral/ SDGB 协议实现(脱敏副本,config.py 需要自己生成)
android/ Android 壳工程(Gradle + MainActivity)
```
## 配置
`astral/config.py` 和 `astral/api/MaimaiNet.py` 里的关键字段全部为空:
| 字段 | 说明 |
| --- | --- |
| `CLIENT_ID` | 11 位机台 ID |
| `PLACE_ID` / `REGION_ID` | 店铺 / 区域 ID |
| `PLACE_NAME` | 店铺名,只用于界面显示 |
| `BASE_URL` | 标题服务器地址 |
| `AES_KEY` / `AES_IV` | 32 / 16 字节 |
| `OBFUSCATE_PARAM` | 8 位混淆盐 |
填完在设置页点「导入配置」加载 JSON,或者直接改这两个文件后重启。
## 跑起来
```bash
python app.py # http://127.0.0.1:8787
```
依赖:`flask`、`requests`、`pycryptodome`。
## 打包 APK
```powershell
powershell -NoProfile -ExecutionPolicy Bypass -File maipulse\tools\build_apk.ps1
```
脚本会:清空旧产物 → 同步资源 → 脱敏 → 编译 → `zipalign -P 16`(16KB 页对齐,Android 15+ 要求)→
重签 → 放到桌面。
需要自己准备一个 debug keystore 放在 `android/` 下,并在 `android/app/build.gradle` 里改路径。
**keystore 不进仓库**,它带着私钥。
## 数据更新
官方更新包(`SDGB_A0xx_*`)到手后:
```bash
python maipulse/tools/apply_update.py "路径/包目录" --dry # 先看差异
python maipulse/tools/apply_update.py "路径/包目录" # 真正写入
```
只做增量合并,写盘前自动备份到 `data/_backup/`。
## 脱敏说明
`maipulse/tools/blank_secrets.py` 是打包时自动跑的那一步:从主仓读出真实值,
在副本里全部替换成占位符,然后自己复核一遍,有残留就 return 2 让打包失败。
这个仓库里跑过同样的流程,30 处替换,复核无残留。