Evilmass commited on
Commit
e694d87
·
1 Parent(s): c2012a7

close tsdm popup

Browse files
Files changed (3) hide show
  1. _playwright/tsdm.py +21 -18
  2. images/gmail.png +0 -0
  3. utils.py +3 -1
_playwright/tsdm.py CHANGED
@@ -24,10 +24,18 @@ from __init__ import (
24
  )
25
 
26
 
 
 
 
 
 
 
 
27
  # 判断登录状态
28
  async def is_login(page):
29
  await page.goto(tsdm_url)
30
- if await page.get_by_role("link", name="设置").is_enabled():
 
31
  tsdm_logger.info("登录成功")
32
  return True
33
  else:
@@ -44,13 +52,9 @@ async def sign(page):
44
  if not await is_login(page):
45
  return "tsdm_not_login"
46
 
47
- # 签到
48
  await page.goto(tsdm_sign_url)
49
- # 加载太快跳转回首页说明也已经完成打工任务
50
- if (
51
- page.get_by_text("今天已签到")
52
- or await page.get_by_role("link", name="设置").is_enabled()
53
- ):
54
  sign_res = "今天已签到"
55
  tsdm_logger.info(sign_res)
56
  msg.append(sign_res)
@@ -69,31 +73,30 @@ async def sign(page):
69
  return "\n".join(msg)
70
 
71
 
 
72
  async def cliwork(page):
73
  msg = []
74
 
75
  if not await is_login(page):
76
  return "tsdm_not_login"
77
 
78
- # 打工
79
- # await page.pause()
80
-
81
  await page.goto(tsdm_url) # 切换回电脑版
82
-
83
  await page.goto(tsdm_cliwork_url)
84
 
85
- if await page.get_by_text("您需要等待").is_visible(timeout=2000):
86
- has_work = "今天已打工"
87
- tsdm_logger.info(has_work)
88
- msg.append(has_work)
89
- else:
90
  for pid in tsdm_plugin_id:
91
  await page.locator(f"#np_advid{pid}").get_by_role("link").click()
92
- await page.bring_to_front() # 激活第一个标签页
 
93
  await page.locator("#workstart").click() # 领取奖励
94
  work_res = "打工成功"
95
  tsdm_logger.info(work_res)
96
  msg.append(work_res)
 
 
 
 
97
 
98
  return "\n".join(msg)
99
 
@@ -107,7 +110,7 @@ async def tsdm_sign():
107
  sign_task = asyncio.create_task(sign(sign_page))
108
  await asyncio.gather(sign_task)
109
  await sign_page.close()
110
- # 打工
111
  cliwork_page = await context.new_page()
112
  cliwork_task = asyncio.create_task(cliwork(cliwork_page))
113
  await asyncio.gather(cliwork_task)
 
24
  )
25
 
26
 
27
+ # on 监听弹窗事件
28
+ async def close_popup(popup):
29
+ # await popup.wait_for_load_state()
30
+ print(await popup.title())
31
+ await popup.close()
32
+
33
+
34
  # 判断登录状态
35
  async def is_login(page):
36
  await page.goto(tsdm_url)
37
+ await page.wait_for_load_state()
38
+ if await page.get_by_role("link", name="签到领奖!").is_visible():
39
  tsdm_logger.info("登录成功")
40
  return True
41
  else:
 
52
  if not await is_login(page):
53
  return "tsdm_not_login"
54
 
 
55
  await page.goto(tsdm_sign_url)
56
+
57
+ if await page.get_by_text("今天已签到").is_visible():
 
 
 
58
  sign_res = "今天已签到"
59
  tsdm_logger.info(sign_res)
60
  msg.append(sign_res)
 
73
  return "\n".join(msg)
74
 
75
 
76
+ # 打工
77
  async def cliwork(page):
78
  msg = []
79
 
80
  if not await is_login(page):
81
  return "tsdm_not_login"
82
 
 
 
 
83
  await page.goto(tsdm_url) # 切换回电脑版
84
+ await page.wait_for_load_state()
85
  await page.goto(tsdm_cliwork_url)
86
 
87
+ if await page.locator("#workstart").is_enabled():
 
 
 
 
88
  for pid in tsdm_plugin_id:
89
  await page.locator(f"#np_advid{pid}").get_by_role("link").click()
90
+ page.on("popup", close_popup) # handle popup 不能 await
91
+ # await page.bring_to_front() # 回到第一个标签页
92
  await page.locator("#workstart").click() # 领取奖励
93
  work_res = "打工成功"
94
  tsdm_logger.info(work_res)
95
  msg.append(work_res)
96
+ else:
97
+ has_work = "今天已打工"
98
+ tsdm_logger.info(has_work)
99
+ msg.append(has_work)
100
 
101
  return "\n".join(msg)
102
 
 
110
  sign_task = asyncio.create_task(sign(sign_page))
111
  await asyncio.gather(sign_task)
112
  await sign_page.close()
113
+ # # 打工
114
  cliwork_page = await context.new_page()
115
  cliwork_task = asyncio.create_task(cliwork(cliwork_page))
116
  await asyncio.gather(cliwork_task)
images/gmail.png ADDED
utils.py CHANGED
@@ -98,7 +98,9 @@ def get_pi_ip(host: str) -> str:
98
 
99
 
100
  # gotify 推送
101
- def push_msg(title: str = "无标题", message: str = "无内容", img_url: str = gotify_img) -> dict:
 
 
102
  gotify_ip = get_pi_ip(gotify_host)
103
  url = f"http://{gotify_ip}:{gotify_port}/message?token={gotify_token}"
104
  data = {
 
98
 
99
 
100
  # gotify 推送
101
+ def push_msg(
102
+ title: str = "无标题", message: str = "无内容", img_url: str = gotify_img
103
+ ) -> dict:
104
  gotify_ip = get_pi_ip(gotify_host)
105
  url = f"http://{gotify_ip}:{gotify_port}/message?token={gotify_token}"
106
  data = {