Skip to content

WechatProvider

舞萌服务号的舞萌 DX 玩家专页,通过 HTML 解析获取信息。

实现:IScoreProvider, IPlayerIdentifierProvider, IPlayerProvider

源站:https://maimai.wahlap.com/maimai-mobile/

如何提供 PlayerIdentifier

通过 maimai.wechat() 方法,你可以通过微信服务号来获取玩家的 PlayerIdentifier。

调用此方法时,如果不带任何参数,将获取到一个 URL,让玩家在启动代理的情况下访问URL。

这里的代理指的是中间人代理(如 mitmproxy),它会拦截微信服务号 tgk-wcaime.wahlap.com 的 OAuth2 认证请求。

在拦截的请求中,你可以获取到响应中的参数(r、t、code、state),这些参数是微信 OAuth2 认证的必要信息。

再次调用 maimai.wechat() 方法时,你可以传入这些参数(r、t、code、state)来获取 PlayerIdentifier。

INFO

参考 proxy_updater(示例项目)部分,这是一个通过代理和微信 OAuth 认证更新查分器的示例。

关于 Rival(对手)

通过 NET 的隐藏接口,你可以修改到玩家的对手信息。

python
wechat = WechatProvider()
identifier = await maimai.wechat(r="r", t="t", code="code", state="state")
friends = await wechat.get_friends(identifier, maimai) # 需要主动传入 MaimaiClient 实例
await wechat.set_rival_on(identifier, friends[0], maimai) # 设置第一个好友为对手

鉴于接口原因,我们无法查询玩家已有的对手信息,只能开启和关闭对手。

已知问题

  • WechatProvider 可能出现轻微内存泄露问题。

MIT License