# coding:utf-8 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())