Txiaochen
|
8e3bd6fcaa
|
重构:Get* 命名统一 + 用户数据落盘 + use_ticket / reincarnate
1) 命名统一(服务端 API 名带 Get 的,脚本名与函数名一律带 get/Get)
- 26 个 api 脚本改名:userdata.py -> get_user_data.py 等
- 7 个 game_*.py -> get_game_*.py
- 38 个函数改名:UserData -> GetUserData 等
- upsert_snapshot.py -> get_need_user_data.py,
fetch_upsert_snapshot -> GetNeedUserData
- user_getter_common.fetch_all_pages -> get_all_pages
2) GetNeedUserData 抓到的数据自动落盘
- <工程根>/data/<userId>.json,新数据总是覆盖老数据
- 新增 save_user_data / load_user_data / user_data_path /
list_saved_user_ids / DATA_DIR / PROJECT_ROOT
- data/ 已加入 .gitignore
3) use_ticket.py(新)
- 读取账号当前持有的功能票,用 UpsertUserAll 消耗掉
- 依据:GetUserChargeApi 与 UpsertUserAllApi 的 userChargeList 格式相同;
真机实证 userChargeList.stock -1 + useTicketId + playCredit
- playCredit = 投币数 + 票的 creditNum(VOExtensions.cs:838-845)
4) reincarnate.py(新)
- 账号数据迁移(转生):A 的数据克隆到 B
- 每包最多 4 首(真机一局上限),包间用续关登录换新 loginId
续关依据:ContinueProcess.cs:403 -> PacketUserLogin(isContinue: true)
- playlog 从曲目记录反推合成(没有对应的 Get 接口)
自检 238 项全绿。
|
2026-10-06 23:32:09 +08:00 |
|
Txiaochen
|
c297818d8a
|
修复:请求头对齐真机(去掉 Accept / Connection),买票成功
真机(Unity Mono 的 HttpWebRequest)只发这几个头:
number / Content-Type / User-Agent / charset / Mai-Encoding /
Content-Encoding / (+ Cookie)
没有 Accept,也没有 Connection —— 而 requests 默认会补上。
实测证据(2026-10-06 真机抓包 + 账号对照):
- 同一账号机台能买、脚本 returnCode=0;账号 B(未被黑)同样如此
=> 差异在客户端,不在账号/服务端
- 删掉这两个头后一次通过:returnCode=1,stock 0 -> 1,落库确认
另:Accept-Encoding 必须「存在且为空」——
空值 -> 200 + application/json;不发 / gzip / identity -> 0 字节。
反推 Mono 发的也是空值(框架层加,Headers.AllKeys 看不到)。
|
2026-10-06 23:32:09 +08:00 |
|
Txiaochen
|
494b40db44
|
修改为playCount不变
UpsertUserAll 默认不再把 userData.playCount / currentPlayCount 加 1。
- 新增 config.PLAY_USER_PLAY_COUNT_GAIN = 0(config.py.example 同步)
- PlayData 新增 user_play_count_gain 字段,默认取该常量
- 落库回查改判据:增量 0 时看 lastPlayDate 是否更新,而不是 playCount 是否变大
- 想复刻真机 +1 就把常量或 user_play_count_gain 设成 1
- selftest 相应更新,并新增显式 gain=1 的回归(238 项全绿)
|
2026-10-06 19:22:13 +08:00 |
|
Txiaochen
|
05c3f222fa
|
chore: 不再提交 config.py,改为 config.py.example 模板
- config.py 加入 .gitignore(含机台/店铺私有标识,不入库)
- 新增 config.py.example:机台与店铺标识 6 项留空待填
- README:新增「先填 config.py」步骤,列出必填项
- 脱敏:清除仓库里的 userId / clientId / placeId / regionId / rating
- selftest:改为显式传值,不再依赖 config.py(换配置也能全绿)
|
2026-10-06 15:33:28 +08:00 |
|
Txiaochen
|
52cbae6b67
|
feat(upsert): 新增 --extra-data,可手工覆盖/补写 upsertUserAll 节点
- 支持 JSON 字符串与 JSON 文件路径,可重复指定(后者覆盖前者)
- 节点名与 JSON 都在**扫码之前**校验,写错直接退出,不浪费二维码
- README:补 --extra-data 用法;标题居中;简化 source 说明
|
2026-10-06 15:09:33 +08:00 |
|
Txiaochen
|
fc475d3167
|
更新 README.md
|
2026-10-06 02:56:02 -04:00 |
|
Txiaochen
|
16353c0b72
|
docs(readme): 补充分支说明(mai / docs),明确 docs 在独立分支
|
2026-10-06 14:45:21 +08:00 |
|
Txiaochen
|
1636a79141
|
feat: WaHappy v0 —— 舞萌DX 纯网络游戏助手(占位版)
当前仅 upsert.py 可用:扫码登录 -> 上传一局成绩 -> 落库回查 -> 登出。
- api/ 下 40+ 个接口模块已实现,236 项零网络自检全绿
- 上传成绩链路已真机跑通,报文与真机抓包逐字节一致
- 开发文档见 docs 分支;source/ 与 logs/ 不入库
|
2026-10-06 14:42:06 +08:00 |
|