From ca5bf3531d96c69fe582b11d148ba0549be48dfd Mon Sep 17 00:00:00 2001 From: yml2213 Date: Wed, 24 Jun 2026 14:44:09 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=A3=E7=90=86=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E7=9A=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + core/douyu/email_verifier.py | 12 +++++++++--- core/douyu/login.py | 2 +- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 498fe7f..e3112da 100644 --- a/.gitignore +++ b/.gitignore @@ -24,3 +24,4 @@ slice.jpg web/frontend/node_modules/ web/frontend/dist/ data/web.db +.DS_Store diff --git a/core/douyu/email_verifier.py b/core/douyu/email_verifier.py index c3d781f..11c9986 100644 --- a/core/douyu/email_verifier.py +++ b/core/douyu/email_verifier.py @@ -321,9 +321,15 @@ class EmailVerifier: # 检查时间 if after_timestamp and msg.get("date"): msg_dt = self._parse_rc_date(msg["date"]) - if msg_dt and msg_dt.timestamp() < after_timestamp - allow_old_seconds: - logger.debug(f"Roundcube: 邮件 UID={msg['uid']} 日期 {msg['date']} 早于发送时间,跳过") - continue + if msg_dt: + # Roundcube 日期只有分钟精度(如"今天 14:20"→14:20:00), + # 而 after_timestamp 是秒级精度(如14:20:49)。 + # 直接比较会把同一分钟内的邮件误判为"早于发送时间"跳过。 + # 解决:将 after_timestamp 也向下取整到分钟后再比较。 + after_minute_ts = after_timestamp - (after_timestamp % 60) + if msg_dt.timestamp() < after_minute_ts - allow_old_seconds: + logger.debug(f"Roundcube: 邮件 UID={msg['uid']} 日期 {msg['date']} 早于发送时间,跳过") + continue # 读取邮件正文提取验证码 body_html = self._rc_fetch_email_body(msg["uid"]) diff --git a/core/douyu/login.py b/core/douyu/login.py index 2b3430a..54950ec 100644 --- a/core/douyu/login.py +++ b/core/douyu/login.py @@ -514,7 +514,7 @@ class DouyuLogin: proxy_switches = 0 # ── 极验验证最大尝试次数(超出后回到 login 整体重试)── - _MAX_GEETEST_ATTEMPTS = 15 + _MAX_GEETEST_ATTEMPTS = 5 # 连续临时失败计数(同一代理下),超过阈值才换代理 _soft_fail_streak = 0