README 为了防冗余做了精简,被移出的详细内容写成文档放这里:
- 功能票使用说明.md 买票/用票的完整原理、报文依据、playCredit 公式、实测记录
- 账号转生说明.md reincarnate 完整流程、分批规则(避开 2 首)、
续关登录依据、登出 type=1 依据、playlog 合成、迁移范围
- 常见坑与注意事项.md 二维码 / 账号状态 / 功能票 / 副作用 / 日志 / 网络 /
不入库清单 + .gitignore 行尾注释的坑
- netdelivery说明.md DLI 协议、amdaemon.exe 字符串出处、用法与实测结论
3.6 KiB
3.6 KiB
常见坑与注意事项
本文是
README.md里被精简掉的 「常见坑与注意事项」章节的详细版。
一、二维码
| 项 | 说明 |
|---|---|
| 有效期 | 10 分钟,过期后 aimedb 返回 errorID=2 |
| 计量方式 | ★ 不是按次数计量的,只是有时效;重新生成即可 |
| 来源 | 机台的「扫码登录」界面 |
| 每个脚本各要一次 | reincarnate.py 需要目标号的二维码;源号可以用 --src-json 免掉 |
二、账号状态
- 一定要登出。 账号卡在
isLogin=True时,下次登录会returnCode=100。 本工程所有主脚本都在finally里兜底登出,异常也不会漏。 - 想确认状态可以看
GetUserPreviewApi的isLogin字段。 - 登出类型:真机用 type=1(Logout),见 账号转生说明.md 第五节。
三、功能票
- 账号已经持有功能票时,
buy_ticket.py会拒绝购买(重复购买有封号风险)。 - 想再买一张,先用
use_ticket.py把手里那张用掉,或直接在机台上打一局选用它。 - 不同店铺上架的票不一样,买之前先
--list。 - 详见 功能票使用说明.md。
四、副作用
| 命令 | 后果 |
|---|---|
不带 --send |
只构造报文,不发包(安全,随便跑) |
带 --send |
真实写入服务器,不可撤销 |
涉及真实写入的脚本:upsert.py / buy_ticket.py / use_ticket.py / reincarnate.py。
五、日志
logs/latest.log 只含**当次**运行(下次覆盖)
logs/YYYY-MM-DD.log 当日全部日志(追加)
改 config.py 的 LOG_LEVEL:
| 值 | 效果 |
|---|---|
"info" |
只展示 api 脚本的运行情况和结果 |
"debug" |
额外展示向 api 发送的数据与 api 返回的数据 |
主脚本也可以加
--debug临时开启,不用改config.py。 DEBUG 日志很大(一局能到十几 MB),config.LOG_VALUE_MAX可以限制单值长度。
六、网络
- 服务器偶发超时 / 连接重置,重试即可(买票那次就是这么过的)。
- 所有请求默认
timeout10 秒,登录与结算用 60 秒。 GetGameChargeApi偶尔会读超时,重跑一次通常就好。
七、不要提交的东西
config.py 你的机台身份,.gitignore 已忽略
data/ 用户数据快照
download/ .app / .opt 更新包
source/ 反编译源码(版权)
logs/ 运行日志
⚠️ .gitignore 的行尾注释不是注释
写:
data/ # 每账号一份用户数据快照
是错的 —— # 只在行首才是注释,整行会被当成一个含空格和 # 的 pattern,
匹配不到任何东西。结果就是规则失效。
正确写法:
# 每账号一份用户数据快照
data/
这条坑踩过一次:
data/12570152.json(604 KB 用户数据)被误提交进 git。 修复方式是git rm --cached+commit --amend+reflog expire+gc --prune=now。
八、其它
- 换歌 / 换成绩只改
config.py的PLAY_*,不用动任何代码。 config.py不入库,仓库里只有config.py.example模板; 第一次用要先copy config.py.example config.py并填好「机台与店铺标识」。api/里每个脚本 = 一个接口,函数名与文件名都带Get(如果 API 名里有 Get)。- 想离线复现某次请求,用
--debug抓报文 +selftest.py里的对拍用例。