feat(huya): 工作台补手机号/精英宝典列与一键查询
- 手机号列:外部 CK 的 `----手机号` 本来就落在 huya_accounts.game_phone,
列表一直没展示;现在单独成列,并纳入搜索
- 精英宝典列:显示「已开通/未开通/未查询」+ 开通时间 + 有效期
· 开通状态 = 积分中心 getRedeemNeedGoods 的 tag5(真机对照网页:1=已开通,
0=未开通,此时 tag7 会列出开通套餐),拿不准时为 NULL(显示「未查询」)
· 开通时间 = revenueWebUI.queryUserOrderList 里已支付的宝典订单 pay_time
(按 SPU 白名单 + 订单名含「精英宝典」识别,未支付订单不计,取最近一次)
· 有效期 = PlayMallUI.queryAllocation 页面配置的本赛季节点 tag10/tag11
(2026-10-15 抓包:精英宝典福利季丨Q4,2026-10-09 ~ 2026-12-31 23:59:59),
不写死索引,递归找带 tag10/tag11 的节点
- 新任务 query_all「一键查询」:勾选账号一次跑完角色绑定 + 宝典开通 + 积分,
按部分失败如实汇总(某个接口挂了不影响其它结论),并把宝典状态写回账号
- 迁移 20261015_0053:huya_accounts 新增 elite_opened / elite_open_time /
elite_expire_time(时间存 Unix 秒,与斗鱼 elite_expire_time 同约定)
- 开通商品按页面「赠送指定礼物得积分」那一排对齐成 6 款(去掉页面已不用的
旧版精英宝典 hy-5879340),列表接口只返回账号级快照并按 spu 去重
- 建 WSS 会话失败(积分中心端点静默不回包)时回退 HTTP cdnws,
不再让整批任务判失败
- 列表列宽改按比例分配,避免宽屏下被拉出奇怪的宽度;最近操作不再重复状态
- 新增 tests/test_huya_elite_query.py(10 条);同步迁移头版本断言
真机验证:#65 已开通(10-13 20:41:45,有效期 12-31)、#70 新开通
(10-15 16:37:37)判定与订单/网页一致
This commit is contained in:
@@ -108,10 +108,28 @@ class HuyaBatchRunnerCore:
|
||||
f"[{uid}] Cookie 缺少网页设备态({', '.join(missing)}),改用 HTTP cdnws 通道",
|
||||
)
|
||||
return self._http_client()
|
||||
session = self._open_wss_session(uid, cookie, "activity")
|
||||
session = self._open_wss_or_http(uid, cookie, "activity")
|
||||
if session is None:
|
||||
return self._http_client()
|
||||
self._push_log("info", f"[{uid}] 活动链路使用 WSS 会话")
|
||||
return session
|
||||
|
||||
def _open_wss_or_http(self, uid: int, cookie: str, kind: str):
|
||||
"""建 WSS 会话;服务端不理会握手(wsLaunch 超时)时返回 None 让调用方回退 HTTP。
|
||||
|
||||
2026-10-15 实测:设备态字段齐全的账号也可能被积分中心端点静默丢弃
|
||||
(wsLaunch 无响应),而同一账号走 HTTP cdnws 一切正常 —— 会话建不起来时
|
||||
直接回退,而不是把整批任务判失败。
|
||||
"""
|
||||
try:
|
||||
return self._open_wss_session(uid, cookie, kind)
|
||||
except Exception as exc: # noqa: BLE001 - 任何建连/初始化异常都回退 HTTP
|
||||
self._push_log(
|
||||
"warning",
|
||||
f"[{uid}] {kind} WSS 会话不可用({type(exc).__name__}: {exc}),改用 HTTP cdnws 通道",
|
||||
)
|
||||
return None
|
||||
|
||||
def _http_client(self):
|
||||
"""HTTP cdnws 通道客户端(无需网页设备态,方法签名与 WSS 会话保持一致)。"""
|
||||
from core.huya.http_client import HuyaHttpClient
|
||||
@@ -153,7 +171,9 @@ class HuyaBatchRunnerCore:
|
||||
f"[{uid}] Cookie 缺少网页设备态({', '.join(missing)}),改用 HTTP cdnws 通道",
|
||||
)
|
||||
return self._http_client()
|
||||
session = self._open_wss_session(uid, cookie, "shop")
|
||||
session = self._open_wss_or_http(uid, cookie, "shop")
|
||||
if session is None:
|
||||
return self._http_client()
|
||||
self._push_log("info", f"[{uid}] 商城链路使用 WSS 会话")
|
||||
return session
|
||||
|
||||
|
||||
Reference in New Issue
Block a user