提交签到请求
(self, formhash: str)
| 63 | return m.group(1), "OK" |
| 64 | |
| 65 | def submit_checkin(self, formhash: str) -> CheckinResult: |
| 66 | """提交签到请求""" |
| 67 | moods = ["kx", "ym", "tp", "ng", "wl"] |
| 68 | payload = { |
| 69 | "formhash": formhash, |
| 70 | "qdxq": random.choice(moods), |
| 71 | "qdmode": "1", |
| 72 | "todaysay": random.choice([ |
| 73 | "打卡签到,愿一切顺利!", |
| 74 | "新的一天,继续加油~", |
| 75 | "保持热爱,奔赴山海。", |
| 76 | "今日签到,万事胜意。", |
| 77 | "坚持自律,慢慢变强。", |
| 78 | ]), |
| 79 | "fastreply": "0", |
| 80 | } |
| 81 | |
| 82 | resp = self.session.post(SIGN_API, data=payload, timeout=self.timeout) |
| 83 | raw = resp.text or "" |
| 84 | |
| 85 | # 青龙面板特殊处理:返回403或500 |
| 86 | if resp.status_code != 200: |
| 87 | return CheckinResult(False, f"http_{resp.status_code}", f"HTTP {resp.status_code}") |
| 88 | |
| 89 | # 检查签到结果 |
| 90 | if "签到成功" in raw or ("恭喜" in raw and "签到" in raw): |
| 91 | return CheckinResult(True, "success", self._extract_message(raw) or "签到成功") |
| 92 | if "已经签到" in raw or "已签到" in raw or "请勿重复签到" in raw: |
| 93 | return CheckinResult(True, "already", self._extract_message(raw) or "今日已签到") |
| 94 | if ("formhash" in raw and "错误" in raw) or "请求无效" in raw: |
| 95 | return CheckinResult(False, "bad_formhash", self._extract_message(raw) or "formhash无效/过期") |
| 96 | |
| 97 | return CheckinResult(False, "unknown", self._extract_message(raw) or raw[:200]) |
| 98 | |
| 99 | @staticmethod |
| 100 | def _extract_message(text: str) -> str: |
no test coverage detected