|
|
|
import sys |
|
import asyncio |
|
|
|
from os.path import abspath, dirname, join |
|
from playwright.async_api import async_playwright |
|
|
|
sys.path.append(join(dirname(abspath(__file__)), "../")) |
|
|
|
from utils import push_msg |
|
from __init__ import ( |
|
browser_headless, |
|
browser_proxy, |
|
v2ex_url, |
|
v2ex_sign_url, |
|
v2ex_cookie_file, |
|
v2ex_title, |
|
v2ex_logger, |
|
v2ex_img, |
|
) |
|
|
|
|
|
|
|
async def is_login(page): |
|
await page.goto(v2ex_url) |
|
if await page.get_by_text("记事本").is_visible(): |
|
v2ex_logger.info("登录成功") |
|
return True |
|
else: |
|
stderr = "Cookie 过期" |
|
v2ex_logger.error(stderr) |
|
push_msg(v2ex_title, stderr, v2ex_img) |
|
return False |
|
|
|
|
|
|
|
async def sign(page): |
|
msg = [] |
|
|
|
if not await is_login(page): |
|
return "v2ex_not_login" |
|
|
|
await page.goto(v2ex_sign_url) |
|
if await page.get_by_text("每日登录奖励已领取").is_visible(): |
|
sign_res = "今日铜币已领取" |
|
v2ex_logger.info(sign_res) |
|
msg.append(sign_res) |
|
else: |
|
await page.get_by_text("领取 X 铜币").click() |
|
sign_res = "领取铜币成功" |
|
v2ex_logger.info(sign_res) |
|
msg.append(sign_res) |
|
|
|
return "\n".join(msg) |
|
|
|
|
|
async def v2ex_sign(): |
|
async with async_playwright() as playwright: |
|
browser = await playwright.chromium.launch(headless=browser_headless) |
|
context = await browser.new_context(storage_state=v2ex_cookie_file) |
|
sign_page = await context.new_page() |
|
sign_task = asyncio.create_task(sign(sign_page)) |
|
await asyncio.gather(sign_task) |
|
await sign_page.close() |
|
|
|
await browser.close() |
|
|
|
sign_result = sign_task.result() |
|
push_msg(v2ex_title, "\n".join([sign_result]), v2ex_img) |
|
|
|
|
|
if __name__ == "__main__": |
|
asyncio.run(v2ex_sign()) |
|
|