2026-10-29 06:32:17 -04:00
2026-10-28 22:27:46 +08:00
2026-10-28 22:34:14 +08:00
2026-10-29 11:52:51 +08:00
2026-10-28 22:59:39 +08:00
2026-10-29 06:32:17 -04:00

maipulse

舞萌 DX 国服(SDGB)的本地发包台。Flask + 单页前端,安卓壳用 Chaquopy 把 Python 打进 APK。

基于 Astral(https://git.fragrance.moe/Txiaochen/Astral ) 进行编写

所有机台身份(标题服务器地址、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,或者直接改这两个文件后重启。

仓库根目录有一份空白模板 maipulse-config.json(maipulse/ 下也放了一份),所有字段都是空的, 照着填就行。文件要存成 UTF-8 无 BOM,否则 JSON 解析会失败。

跑起来

先把配置模板复制一份,否则 import 会缺 config:

cd astral && cp config.py.example config.py
python app.py            # http://127.0.0.1:8787

依赖:flask、requests、pycryptodome。

打包 APK

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_*)到手后:

python maipulse/tools/apply_update.py "路径/包目录" --dry   # 先看差异
python maipulse/tools/apply_update.py "路径/包目录"         # 真正写入

只做增量合并,写盘前自动备份到 data/_backup/。

脱敏说明

maipulse/tools/blank_secrets.py 是打包时自动跑的那一步:从主仓读出真实值, 在副本里全部替换成占位符,然后自己复核一遍,有残留就 return 2 让打包失败。

这个仓库里跑过同样的流程,30 处替换,复核无残留。

S
Description
maipulse - 山东锅巴雷霆柯吉
Readme
3.9 MiB
0 Stars 1 Watchers 0 Forks
v1.0.2
Latest
2026-10-30 09:36:38 -04:00
Languages
Python 84%
HTML 12.4%
Java 2.6%
PowerShell 1%