Txiaochen
|
b1d7e33c7b
|
chart_achievement: --level 改为谱面难度(0=BASIC 1=ADVANCED 2=EXPERT 3=MASTER 4=RE:MASTER),反向示例补上难度
|
2026-10-07 23:37:39 +08:00 |
|
Txiaochen
|
3a0f3435f7
|
v1进行时:新增谱面达成率小工具;extra.json 不再入库
|
2026-10-07 23:27:30 +08:00 |
|
Txiaochen
|
938341828c
|
chore: extra*.json 加入 .gitignore(含账号数据,不入库)
|
2026-10-07 23:27:30 +08:00 |
|
Txiaochen
|
c537e00865
|
docs(README): 补充 isNew* 位串 0/1/2 的含义
依据 VOExtensions.cs:309-364 的 BuildListData():
0 = 存量更新(旧数据里已有同主键条目)-> UPDATE
1 = 新增(旧数据里没有) -> INSERT
2 = 无变化(只有 userFavoriteList 用)
并写明:对已存在的条目填 1 会导致 HTTP 500(服务端 INSERT 重复记录)。
|
2026-10-07 23:27:30 +08:00 |
|
Txiaochen
|
bc145fe853
|
特别鸣谢改为超链接
|
2026-10-07 00:29:24 -04:00 |
|
Txiaochen
|
0c995d3b78
|
更新 README.md
|
2026-10-07 00:28:04 -04:00 |
|
Txiaochen
|
ebccb9cc9a
|
跟进了现在的token使用数量
|
2026-10-07 00:19:02 -04:00 |
|
Txiaochen
|
cdbdfb63fa
|
v0版本完成:精简 README、修正转生流程、每包禁止 2 首
1) reincarnate.py 流程修正(按使用方口径)
登录 -> 等待 -> 上传 -> 登出(type=1) -> 续关登录 -> 等待 -> 上传 -> 登出 -> ...
- 每包之间**先登出再续关**(原来只在最后登出一次)
- 登出改用 type=1(LogoutType.Logout)
真机抓包实证 UserLogoutApi 就是 type=1(带 delayLog);
续关场景用 4(TestIn)会出问题 —— 那是「测试登入/顶号」的语义
- 新增 --wait N(默认 5.0 秒,每次上传前的等待)
2) 新增分批器 split_batches:★ 每包恰好 2 首会被服务端拒绝
- 1 / 3 / 4 首都正常,只有 2 首不行
- 分批时主动避开:10 首 [4,4,2] -> [4,3,3];6 首 [4,2] -> [3,3];
5 首 per=3 [3,2] -> [3,1,1]
- --per-packet 只接受 1/3/4
- 自检加了 1..299 首 × per∈{1,3,4} 的全量扫描
3) README 精简(24 KB -> 11 KB)
- 删掉「关于购买功能票(已解决)」(根因分析移到 docs)
- 删掉「常见坑与注意事项」(移到 docs)
- 功能票只列 2/3/5 倍票;只简述用票原理
- 转生只简述「干了什么」
- netdelivery 只讲用法,不讲运行原理
- 新增「文档索引」章节
4) 自检 238 -> 249 项全绿
|
2026-10-07 11:23:30 +08:00 |
|
Txiaochen
|
4959487a71
|
docs(README): 补全主脚本用法,新增 netdelivery 章节
- 新增「主脚本一览」总表(副作用 / 是否需要二维码)
- upsert.py:独立成章,--extra-data 归位
- buy_ticket.py:补参数表 + 三道安全检查说明
- use_ticket.py:补参数表 + 真机消耗票券的报文依据
- reincarnate.py:补参数表 + 流程/分批/续关/playlog 合成原理
- netdelivery.py:新增章节(ALL.Net DLI,查/下 .app 与 .opt)
- 新增「常见坑与注意事项」(二维码 / 账号状态 / 功能票 / 副作用 /
日志 / 网络 / 不入库清单)
- 「将来」改为「已完成 / 将来」,列出 v0 全部交付
- 项目框架补上 netdelivery.py 与 download/
|
2026-10-07 01:22:38 +08:00 |
|
Txiaochen
|
5971ba4e60
|
调整:Grade 恒为 0(源码实证是段位 Dan,不是曲目评级)
|
2026-10-07 00:26:19 +08:00 |
|
Txiaochen
|
652cf95faa
|
重构:常量下沉到 api 模块 + 删无用脚本 + rating/grade 改为运行时推导
1) 删除 5 个无用的取数脚本(连同 __init__ 的导出):
get_game_event / get_game_ng_music_id / get_game_ranking /
get_game_tournament_info / get_game_weekly_data
2) config.py 常量下沉(config 只留「机台/店铺标识」和闸门/日志):
- BASE_URL / AES_KEY / AES_IV / OBFUSCATE_PARAM -> api/maimai_net.py
- AIMEDB_* / QR_* -> api/chime.py
- TICKET_CREDIT_NUM / TICKET_NAMES / PAID_TICKET_IDS /
TICKET_VALID_HOUR_OFFSET / TICKET_VALID_DAYS -> api/upsert_user_chargelog.py
- PLAY_SPECIAL_NUM -> api/upsert_user_all.py
- PLAY_CHARACTERS -> selftest.py(作为测试数据)
下沉后的常量仍从 api 包统一导出,调用点无需改 import 路径。
3) PlayData 字段改造:
- characters 默认空列表(真值由 derive_play_characters 从快照推)
- local_play_count 恒为 2
- after_grade_rank 恒为 1
4) rating / grade 改为运行时从服务器快照取:
- 新增 derive_play_rating():
before/afterRating <- userData.playerRating
before/afterDeluxRating <- userData.musicRating
(真机实证 userRatingList[0].rating 是 0,不是这个值)
- 新增 derive_play_grade() + find_music_detail():
在 userMusicDetailList 里搜同 (musicId, level) 取 scoreRank
DERIVE_GRADE_FROM_MUSIC_DETAIL=False 可切回严格复刻真机(一律 0)
⚠ 源码实证这三个字段其实是段位 Dan(VOExtensions.cs:1419-1421)
自检 238 项全绿。
|
2026-10-07 00:17:08 +08:00 |
|
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 |
|