From db956e248779a00045394087580b38203fd3bf01 Mon Sep 17 00:00:00 2001
From: yuyx <237899745@qq.com>
Date: Fri, 12 Dec 2025 10:36:47 +0800
Subject: [PATCH] =?UTF-8?q?=E8=87=AA=E5=8A=A8=E8=8E=B7=E5=8F=96=E7=9C=9F?=
=?UTF-8?q?=E5=AE=9E=E5=A7=93=E5=90=8D=E4=BD=9C=E4=B8=BA=E8=B4=A6=E5=8F=B7?=
=?UTF-8?q?=E5=A4=87=E6=B3=A8=EF=BC=88=E9=9D=99=E9=BB=98=E5=AE=8C=E6=88=90?=
=?UTF-8?q?=EF=BC=89?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
api_browser.py | 31 +++++++++++++++++++++++++++++++
app.py | 13 ++++++++++++-
2 files changed, 43 insertions(+), 1 deletion(-)
diff --git a/api_browser.py b/api_browser.py
index fb89df6..61551ec 100755
--- a/api_browser.py
+++ b/api_browser.py
@@ -132,6 +132,37 @@ class APIBrowser:
fields[name] = field.get('value', '')
return fields
+ def get_real_name(self) -> Optional[str]:
+ """
+ 获取用户真实姓名
+ 从 center.aspx 页面解析姓名信息
+ 返回: 姓名字符串,失败返回 None
+ """
+ if not self.logged_in:
+ return None
+
+ try:
+ url = f"{BASE_URL}/admin/center.aspx"
+ resp = self._request_with_retry('get', url)
+ soup = BeautifulSoup(resp.text, 'html.parser')
+
+ # 查找包含"姓名:"的元素
+ # 页面格式:
姓名:喻勇祥(19174616018) 人力资源编码: ...
+ nlist = soup.find('div', {'class': 'nlist-5'})
+ if nlist:
+ first_li = nlist.find('li')
+ if first_li:
+ text = first_li.get_text()
+ # 解析姓名:格式为 "姓名:XXX(手机号)"
+ match = re.search(r'姓名[::]\s*([^\((]+)', text)
+ if match:
+ real_name = match.group(1).strip()
+ if real_name:
+ return real_name
+ return None
+ except Exception as e:
+ return None
+
def login(self, username: str, password: str) -> bool:
"""登录"""
self.log(f"[API] 登录: {username}")
diff --git a/app.py b/app.py
index d873586..8d6e16f 100755
--- a/app.py
+++ b/app.py
@@ -2109,7 +2109,18 @@ def run_task(user_id, account_id, browse_type, enable_screenshot=True, source="m
# 保存cookies供截图使用
api_browser.save_cookies_for_playwright(account.username)
database.reset_account_login_status(account_id)
-
+
+ # 如果账号没有备注,自动获取真实姓名作为备注
+ if not account.remark:
+ try:
+ real_name = api_browser.get_real_name()
+ if real_name:
+ account.remark = real_name
+ database.update_account_remark(account_id, real_name)
+ socketio.emit('account_update', account.to_dict(), room=f'user_{user_id}')
+ except Exception:
+ pass # 静默失败,不影响任务执行
+
if account_id in task_status:
task_status[account_id]["detail_status"] = "正在浏览"
log_to_client(f"开始浏览 '{browse_type}' 内容...", user_id, account_id)