File size: 1,886 Bytes
65d3d39
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6ed2c3e
65d3d39
 
 
 
 
 
 
 
 
 
 
 
6ed2c3e
65d3d39
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6ed2c3e
65d3d39
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# 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())