Evilmass
commited on
Commit
·
5b6bac4
1
Parent(s):
6ca77be
fix bilibili is_login
Browse files- _playwright/[no_use]aliyundrive.py +0 -79
- _playwright/bilibili.py +65 -55
- _requests/[no_use]restart_vits_server.py +0 -62
- _requests/aliyundrive.py +24 -7
- api.py +9 -8
- utils.py +1 -34
_playwright/[no_use]aliyundrive.py
DELETED
@@ -1,79 +0,0 @@
|
|
1 |
-
# coding:utf-8
|
2 |
-
import sys
|
3 |
-
import asyncio
|
4 |
-
|
5 |
-
from os.path import abspath, dirname, join
|
6 |
-
from playwright.async_api import async_playwright
|
7 |
-
|
8 |
-
sys.path.append(join(dirname(abspath(__file__)), "../"))
|
9 |
-
|
10 |
-
from utils import push_msg
|
11 |
-
from __init__ import (
|
12 |
-
browser_headless,
|
13 |
-
browser_proxy,
|
14 |
-
aliyundrive_url,
|
15 |
-
aliyundrive_cookie_file,
|
16 |
-
aliyundrive_title,
|
17 |
-
aliyundrive_logger,
|
18 |
-
)
|
19 |
-
|
20 |
-
|
21 |
-
# 判断登录状态
|
22 |
-
async def is_login(page):
|
23 |
-
await page.goto(aliyundrive_url)
|
24 |
-
# page.locator("li").filter(has_text="回收站").get_by_role("img").click()
|
25 |
-
if page.get_by_text("回收站").is_visible(): # 加 await 就会在页面加载完成前跳过
|
26 |
-
aliyundrive_logger.info("登录成功")
|
27 |
-
return True
|
28 |
-
else:
|
29 |
-
stderr = "Cookie 过期"
|
30 |
-
aliyundrive_logger.error(stderr)
|
31 |
-
push_msg(aliyundrive_title, stderr)
|
32 |
-
return False
|
33 |
-
|
34 |
-
|
35 |
-
# 签到
|
36 |
-
async def sign(page):
|
37 |
-
msg = []
|
38 |
-
|
39 |
-
if not await is_login(page):
|
40 |
-
return "aliyundrive_not_login"
|
41 |
-
|
42 |
-
# await page.pause()
|
43 |
-
|
44 |
-
if page.get_by_text("待领取").is_visible():
|
45 |
-
sign_res = "今日已签到"
|
46 |
-
aliyundrive_logger.info(sign_res)
|
47 |
-
msg.append(sign_res)
|
48 |
-
# 领取奖励
|
49 |
-
await page.get_by_text("待领取").click()
|
50 |
-
reward_res = "今日领取奖励成功"
|
51 |
-
aliyundrive_logger.info(reward_res)
|
52 |
-
elif page.get_by_text("待签到").is_visible():
|
53 |
-
await page.get_by_text("待签到").click()
|
54 |
-
sign_res = "签到成功"
|
55 |
-
aliyundrive_logger.info(sign_res)
|
56 |
-
msg.append(sign_res)
|
57 |
-
else:
|
58 |
-
reward_res = "今日奖励已领取"
|
59 |
-
aliyundrive_logger.info(reward_res)
|
60 |
-
return "\n".join(msg)
|
61 |
-
|
62 |
-
|
63 |
-
async def main():
|
64 |
-
async with async_playwright() as playwright:
|
65 |
-
browser = await playwright.chromium.launch(headless=browser_headless)
|
66 |
-
context = await browser.new_context(storage_state=aliyundrive_cookie_file)
|
67 |
-
page = await context.new_page()
|
68 |
-
task = asyncio.create_task(sign(page))
|
69 |
-
await asyncio.gather(task)
|
70 |
-
# 退出
|
71 |
-
await page.close()
|
72 |
-
await browser.close()
|
73 |
-
# 推送
|
74 |
-
result = task.result()
|
75 |
-
push_msg(aliyundrive_title, "\n".join([result]))
|
76 |
-
|
77 |
-
|
78 |
-
if __name__ == "__main__":
|
79 |
-
asyncio.run(main())
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
_playwright/bilibili.py
CHANGED
@@ -7,7 +7,7 @@ from os.path import abspath, dirname, join
|
|
7 |
from playwright.async_api import async_playwright
|
8 |
|
9 |
sys.path.append(join(dirname(abspath(__file__)), "../"))
|
10 |
-
from utils import push_msg
|
11 |
from __init__ import (
|
12 |
browser_headless,
|
13 |
browser_proxy,
|
@@ -19,102 +19,112 @@ from __init__ import (
|
|
19 |
bilibili_logger,
|
20 |
bilibili_img,
|
21 |
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
22 |
|
23 |
|
24 |
# 判断登录状态
|
25 |
-
async def is_login(page):
|
26 |
await page.goto(bilibili_url)
|
27 |
-
if await page.get_by_text("
|
28 |
-
bilibili_logger.info("
|
29 |
return True
|
30 |
else:
|
31 |
-
|
32 |
-
bilibili_logger.error(
|
33 |
-
push_msg(bilibili_title, stderr, bilibili_img)
|
34 |
return False
|
35 |
|
36 |
|
37 |
# 签到
|
38 |
-
async def sign(page):
|
39 |
-
|
40 |
|
41 |
if not await is_login(page):
|
42 |
-
return "
|
43 |
|
44 |
await page.goto(bilibili_sign_url)
|
45 |
-
if await page.get_by_text("
|
46 |
-
sign_res = f"
|
47 |
bilibili_logger.info(sign_res)
|
48 |
-
|
49 |
-
|
50 |
-
sign_res = f"签到时间:{datetime.now().strftime('%Y-%m-%d %H:%M:%S')}\n签到状态:签到成功"
|
51 |
bilibili_logger.info(sign_res)
|
52 |
-
msg.append(sign_res)
|
53 |
else:
|
54 |
-
sign_res = f"
|
55 |
bilibili_logger.error(sign_res)
|
56 |
-
|
57 |
-
|
58 |
|
59 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
60 |
|
61 |
|
62 |
# 直播间打卡
|
63 |
-
async def live(page):
|
64 |
-
|
|
|
|
|
|
|
65 |
|
66 |
bilibili_live_rooms = await get_bilibili_live_rooms_from_pi()
|
67 |
for room_id in list(bilibili_live_rooms.keys()):
|
68 |
await page.goto(f"{bilibili_live_url}/{str(room_id)}")
|
69 |
-
#
|
70 |
-
input_box = page.
|
71 |
-
"xpath=/html/body/div[3]/main/div[1]/section[1]/div[3]/div[12]/div/div[2]/div[2]/textarea",
|
72 |
-
)
|
73 |
# 输入内容
|
74 |
await input_box.fill("1")
|
75 |
# 发送按钮
|
76 |
-
send_button = page.
|
77 |
-
|
78 |
-
)
|
79 |
-
if await send_button.is_visible():
|
80 |
-
# 点击发送按钮
|
81 |
await send_button.click()
|
82 |
-
|
83 |
-
bilibili_logger.info(
|
84 |
else:
|
85 |
-
|
86 |
-
bilibili_logger.error(
|
87 |
-
|
88 |
|
89 |
-
return
|
90 |
|
91 |
|
92 |
-
async def
|
93 |
async with async_playwright() as playwright:
|
94 |
browser = await playwright.firefox.launch(headless=browser_headless)
|
95 |
context = await browser.new_context(storage_state=bilibili_cookie_file)
|
96 |
-
# 签到
|
97 |
-
sign_page = await context.new_page()
|
98 |
-
sign_task = asyncio.create_task(sign(sign_page))
|
99 |
-
await asyncio.gather(sign_task)
|
100 |
-
await sign_page.close()
|
101 |
# 直播间打卡
|
102 |
-
|
103 |
-
|
104 |
-
await asyncio.gather(
|
105 |
-
await
|
106 |
# 退出
|
107 |
await browser.close()
|
108 |
# 推送
|
109 |
-
|
110 |
-
|
111 |
-
# ""分割两个服务的消息
|
112 |
-
push_msg(
|
113 |
-
title=bilibili_title,
|
114 |
-
message="\n".join([sign_result, "", live_result]),
|
115 |
-
img_url=bilibili_img,
|
116 |
-
)
|
117 |
|
118 |
|
119 |
if __name__ == "__main__":
|
120 |
asyncio.run(bilibili_sign())
|
|
|
|
7 |
from playwright.async_api import async_playwright
|
8 |
|
9 |
sys.path.append(join(dirname(abspath(__file__)), "../"))
|
10 |
+
from utils import push_msg
|
11 |
from __init__ import (
|
12 |
browser_headless,
|
13 |
browser_proxy,
|
|
|
19 |
bilibili_logger,
|
20 |
bilibili_img,
|
21 |
)
|
22 |
+
from option_mysql import get_aiomysql_instance
|
23 |
+
|
24 |
+
|
25 |
+
async def get_bilibili_live_rooms_from_pi() -> dict:
|
26 |
+
sql = f"SELECT room_id, username FROM live_rooms"
|
27 |
+
pool = await get_aiomysql_instance()
|
28 |
+
sql_data = await pool.query(sql)
|
29 |
+
bilibili_live_rooms = {}
|
30 |
+
for sd in sql_data:
|
31 |
+
bilibili_live_rooms[sd["room_id"]] = sd["username"]
|
32 |
+
return bilibili_live_rooms
|
33 |
|
34 |
|
35 |
# 判断登录状态
|
36 |
+
async def is_login(page) -> bool:
|
37 |
await page.goto(bilibili_url)
|
38 |
+
if await page.get_by_text("每日奖励", exact=True).is_enabled():
|
39 |
+
login_res = bilibili_logger.info("Cookie 有效")
|
40 |
return True
|
41 |
else:
|
42 |
+
login_res = "Cookie 失效"
|
43 |
+
bilibili_logger.error(login_res)
|
|
|
44 |
return False
|
45 |
|
46 |
|
47 |
# 签到
|
48 |
+
async def sign(page) -> list:
|
49 |
+
message = [f"签到时间:{datetime.now().strftime('%Y-%m-%d %H:%M:%S')}"]
|
50 |
|
51 |
if not await is_login(page):
|
52 |
+
return "Cookie 失效"
|
53 |
|
54 |
await page.goto(bilibili_sign_url)
|
55 |
+
if await page.get_by_text("今日已签到").is_enabled():
|
56 |
+
sign_res = f"签到状态:今日已签到"
|
57 |
bilibili_logger.info(sign_res)
|
58 |
+
elif await page.get_by_text('"code":0').is_enabled():
|
59 |
+
sign_res = f"签到状态:签到成功"
|
|
|
60 |
bilibili_logger.info(sign_res)
|
|
|
61 |
else:
|
62 |
+
sign_res = f"签到状态:签到失败"
|
63 |
bilibili_logger.error(sign_res)
|
64 |
+
message.append(sign_res)
|
65 |
+
return message
|
66 |
|
67 |
+
|
68 |
+
async def bilibili_sign():
|
69 |
+
async with async_playwright() as playwright:
|
70 |
+
browser = await playwright.firefox.launch(headless=browser_headless)
|
71 |
+
context = await browser.new_context(storage_state=bilibili_cookie_file)
|
72 |
+
# 签到
|
73 |
+
page = await context.new_page()
|
74 |
+
task = asyncio.create_task(sign(page))
|
75 |
+
await asyncio.gather(task)
|
76 |
+
await page.close()
|
77 |
+
# 退出
|
78 |
+
await browser.close()
|
79 |
+
# 推送
|
80 |
+
message = "\n".join(task.result())
|
81 |
+
push_msg(title=bilibili_title, message=message, img_url=bilibili_img)
|
82 |
|
83 |
|
84 |
# 直播间打卡
|
85 |
+
async def live(page) -> list:
|
86 |
+
message = [f"打卡时间:{datetime.now().strftime('%Y-%m-%d %H:%M:%S')}"]
|
87 |
+
|
88 |
+
if not await is_login(page):
|
89 |
+
return "Cookie 失效"
|
90 |
|
91 |
bilibili_live_rooms = await get_bilibili_live_rooms_from_pi()
|
92 |
for room_id in list(bilibili_live_rooms.keys()):
|
93 |
await page.goto(f"{bilibili_live_url}/{str(room_id)}")
|
94 |
+
# 输入框
|
95 |
+
input_box = page.get_by_role("textbox", name="发个弹幕呗~")
|
|
|
|
|
96 |
# 输入内容
|
97 |
await input_box.fill("1")
|
98 |
# 发送按钮
|
99 |
+
send_button = page.get_by_role("button", name="发送")
|
100 |
+
if await send_button.is_enabled():
|
|
|
|
|
|
|
101 |
await send_button.click()
|
102 |
+
room_res = f"直播间:【{bilibili_live_rooms[room_id]}】打卡成功"
|
103 |
+
bilibili_logger.info(room_res)
|
104 |
else:
|
105 |
+
room_res = f"直播间:【{bilibili_live_rooms[room_id]}】打卡失败】"
|
106 |
+
bilibili_logger.error(room_res)
|
107 |
+
message.append(room_res)
|
108 |
|
109 |
+
return message
|
110 |
|
111 |
|
112 |
+
async def bilibili_live():
|
113 |
async with async_playwright() as playwright:
|
114 |
browser = await playwright.firefox.launch(headless=browser_headless)
|
115 |
context = await browser.new_context(storage_state=bilibili_cookie_file)
|
|
|
|
|
|
|
|
|
|
|
116 |
# 直播间打卡
|
117 |
+
page = await context.new_page()
|
118 |
+
task = asyncio.create_task(live(page))
|
119 |
+
await asyncio.gather(task)
|
120 |
+
await page.close()
|
121 |
# 退出
|
122 |
await browser.close()
|
123 |
# 推送
|
124 |
+
message = "\n".join(task.result())
|
125 |
+
push_msg(title=bilibili_title, message=message, img_url=bilibili_img)
|
|
|
|
|
|
|
|
|
|
|
|
|
126 |
|
127 |
|
128 |
if __name__ == "__main__":
|
129 |
asyncio.run(bilibili_sign())
|
130 |
+
asyncio.run(bilibili_live())
|
_requests/[no_use]restart_vits_server.py
DELETED
@@ -1,62 +0,0 @@
|
|
1 |
-
# coding:utf-8
|
2 |
-
|
3 |
-
import os
|
4 |
-
import re
|
5 |
-
import requests
|
6 |
-
|
7 |
-
from os.path import abspath, dirname, join
|
8 |
-
|
9 |
-
# conf
|
10 |
-
title = "Huggingface"
|
11 |
-
session = requests.Session()
|
12 |
-
|
13 |
-
# from utils import push_msg
|
14 |
-
|
15 |
-
|
16 |
-
def restart_vits_server():
|
17 |
-
headers = {
|
18 |
-
"authority": "huggingface.co",
|
19 |
-
"origin": "https://huggingface.co",
|
20 |
-
"referer": "https://huggingface.co/login",
|
21 |
-
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36",
|
22 |
-
}
|
23 |
-
data = {
|
24 |
-
"username": os.environ.get("hf_username"),
|
25 |
-
"password": os.environ.get("hf_password"),
|
26 |
-
}
|
27 |
-
session.post("https://huggingface.co/login", headers=headers, data=data)
|
28 |
-
rsp = session.get(
|
29 |
-
"https://huggingface.co/spaces/evi0mo/vits-fastapi-server/settings"
|
30 |
-
)
|
31 |
-
csrf = re.findall(r"name=\"csrf\" value=\"(.*?)\">", rsp.text)[0]
|
32 |
-
|
33 |
-
res = "init"
|
34 |
-
restart_headers = {
|
35 |
-
"authority": "huggingface.co",
|
36 |
-
"origin": "https://huggingface.co",
|
37 |
-
"referer": "https://huggingface.co/spaces/evi0mo/vits-fastapi-server/settings",
|
38 |
-
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36",
|
39 |
-
}
|
40 |
-
|
41 |
-
restart_data = {"csrf": csrf}
|
42 |
-
session.post(
|
43 |
-
"https://huggingface.co/spaces/evi0mo/vits-fastapi-server/restart?factory=false",
|
44 |
-
headers=restart_headers,
|
45 |
-
data=restart_data,
|
46 |
-
)
|
47 |
-
# check
|
48 |
-
check = session.get(
|
49 |
-
"https://huggingface.co/api/spaces/evi0mo/vits-fastapi-server/runtime"
|
50 |
-
)
|
51 |
-
if check.json()["stage"] == "RUNNING_BUILDING":
|
52 |
-
res = "success"
|
53 |
-
vits_logger.info(res)
|
54 |
-
else:
|
55 |
-
res = "failed"
|
56 |
-
vits_logger.error(res)
|
57 |
-
|
58 |
-
# push_msg(title, res)
|
59 |
-
|
60 |
-
|
61 |
-
if __name__ == "__main__":
|
62 |
-
restart_vits_server()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
_requests/aliyundrive.py
CHANGED
@@ -8,11 +8,7 @@ from os.path import abspath, dirname, join
|
|
8 |
|
9 |
# conf
|
10 |
sys.path.append(join(dirname(abspath(__file__)), "../"))
|
11 |
-
from utils import
|
12 |
-
push_msg,
|
13 |
-
get_aliyundrive_refresh_token,
|
14 |
-
update_aliyundrive_access_token,
|
15 |
-
)
|
16 |
from __init__ import (
|
17 |
aliyundrive_nickname_url,
|
18 |
aliyundrive_signin_url,
|
@@ -22,6 +18,7 @@ from __init__ import (
|
|
22 |
aliyundrive_logger,
|
23 |
aliyundrive_img,
|
24 |
)
|
|
|
25 |
|
26 |
# session
|
27 |
headers = {"message-Type": "application/json"}
|
@@ -34,6 +31,26 @@ def get_refresh_token():
|
|
34 |
pass
|
35 |
|
36 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
37 |
async def validate_access_token():
|
38 |
# token只有三小时有效期,所以定时任务刷新间隔为三小时
|
39 |
# 从树莓派获取 refresh_token
|
@@ -97,8 +114,8 @@ def sign():
|
|
97 |
# 当天签到获得的奖励信息
|
98 |
reward_name = current_sign_info["reward"]["name"]
|
99 |
reward_description = current_sign_info["reward"]["description"]
|
100 |
-
curent_reward = f"{reward_name}{reward_description}"
|
101 |
-
#
|
102 |
is_reward = current_sign_info["isReward"]
|
103 |
return is_reward, signin_count, curent_reward
|
104 |
return False
|
|
|
8 |
|
9 |
# conf
|
10 |
sys.path.append(join(dirname(abspath(__file__)), "../"))
|
11 |
+
from utils import push_msg
|
|
|
|
|
|
|
|
|
12 |
from __init__ import (
|
13 |
aliyundrive_nickname_url,
|
14 |
aliyundrive_signin_url,
|
|
|
18 |
aliyundrive_logger,
|
19 |
aliyundrive_img,
|
20 |
)
|
21 |
+
from option_mysql import get_aiomysql_instance
|
22 |
|
23 |
# session
|
24 |
headers = {"message-Type": "application/json"}
|
|
|
31 |
pass
|
32 |
|
33 |
|
34 |
+
async def get_aliyundrive_refresh_token():
|
35 |
+
sql = f"SELECT token FROM aliyundrive WHERE id=1"
|
36 |
+
pool = await get_aiomysql_instance()
|
37 |
+
data = await pool.query(sql)
|
38 |
+
if data:
|
39 |
+
aliyundrive_logger.info("获取阿里云盘 refresh_token 成功")
|
40 |
+
return data[0]["token"]
|
41 |
+
return False
|
42 |
+
|
43 |
+
|
44 |
+
async def update_aliyundrive_access_token(access_token):
|
45 |
+
sql = f"UPDATE aliyundrive SET token=%s WHERE id=2"
|
46 |
+
pool = await get_aiomysql_instance()
|
47 |
+
data = await pool.update(sql, [access_token])
|
48 |
+
if data:
|
49 |
+
aliyundrive_logger.info("update aliyundrive access token")
|
50 |
+
return True
|
51 |
+
return False
|
52 |
+
|
53 |
+
|
54 |
async def validate_access_token():
|
55 |
# token只有三小时有效期,所以定时任务刷新间隔为三小时
|
56 |
# 从树莓派获取 refresh_token
|
|
|
114 |
# 当天签到获得的奖励信息
|
115 |
reward_name = current_sign_info["reward"]["name"]
|
116 |
reward_description = current_sign_info["reward"]["description"]
|
117 |
+
curent_reward = f"{reward_name},{reward_description}"
|
118 |
+
# 是否已领取奖励
|
119 |
is_reward = current_sign_info["isReward"]
|
120 |
return is_reward, signin_count, curent_reward
|
121 |
return False
|
api.py
CHANGED
@@ -11,7 +11,7 @@ from apscheduler.schedulers.background import BackgroundScheduler
|
|
11 |
from apscheduler.schedulers.asyncio import AsyncIOScheduler
|
12 |
from loguru import logger
|
13 |
|
14 |
-
from _playwright.bilibili import bilibili_sign
|
15 |
from _playwright.v2ex import v2ex_sign
|
16 |
from _playwright.vits import vits_sign
|
17 |
from _playwright.tsdm import tsdm_sign
|
@@ -28,15 +28,18 @@ def run_scheduler(loop):
|
|
28 |
# add task
|
29 |
task = AsyncIOScheduler()
|
30 |
task.configure(timezone=pytz.timezone("Asia/Shanghai"))
|
|
|
31 |
task.add_job(
|
32 |
-
|
33 |
"cron",
|
34 |
-
hour=
|
|
|
35 |
next_run_time=datetime.now(),
|
36 |
-
coalesce=True
|
|
|
37 |
)
|
38 |
task.add_job(
|
39 |
-
|
40 |
"cron",
|
41 |
hour=6,
|
42 |
minute=1,
|
@@ -105,9 +108,7 @@ def run_scheduler(loop):
|
|
105 |
|
106 |
|
107 |
def start_daemon_scheduler(loop):
|
108 |
-
t = threading.Thread(
|
109 |
-
target=run_scheduler, args=(loop,), name="schedule", daemon=True
|
110 |
-
)
|
111 |
t.start()
|
112 |
|
113 |
|
|
|
11 |
from apscheduler.schedulers.asyncio import AsyncIOScheduler
|
12 |
from loguru import logger
|
13 |
|
14 |
+
from _playwright.bilibili import bilibili_sign, bilibili_live
|
15 |
from _playwright.v2ex import v2ex_sign
|
16 |
from _playwright.vits import vits_sign
|
17 |
from _playwright.tsdm import tsdm_sign
|
|
|
28 |
# add task
|
29 |
task = AsyncIOScheduler()
|
30 |
task.configure(timezone=pytz.timezone("Asia/Shanghai"))
|
31 |
+
task.add_job(tick, "cron", hour="*/2", next_run_time=datetime.now(), coalesce=True)
|
32 |
task.add_job(
|
33 |
+
bilibili_sign,
|
34 |
"cron",
|
35 |
+
hour=6,
|
36 |
+
minute=1,
|
37 |
next_run_time=datetime.now(),
|
38 |
+
coalesce=True,
|
39 |
+
misfire_grace_time=60 * 60 * 12,
|
40 |
)
|
41 |
task.add_job(
|
42 |
+
bilibili_live,
|
43 |
"cron",
|
44 |
hour=6,
|
45 |
minute=1,
|
|
|
108 |
|
109 |
|
110 |
def start_daemon_scheduler(loop):
|
111 |
+
t = threading.Thread(target=run_scheduler, args=(loop,), name="schedule", daemon=True)
|
|
|
|
|
112 |
t.start()
|
113 |
|
114 |
|
utils.py
CHANGED
@@ -105,7 +105,7 @@ def push_msg(title: str = "无标题", message: str = "无内容", img_url: str
|
|
105 |
"message": message,
|
106 |
"priority": 10,
|
107 |
"extras": {
|
108 |
-
"client::display": {"contentType": "text/
|
109 |
"client::notification": {"bigImageUrl": img_url},
|
110 |
},
|
111 |
}
|
@@ -113,16 +113,6 @@ def push_msg(title: str = "无标题", message: str = "无内容", img_url: str
|
|
113 |
return {"code": resp.status_code, "res": resp.content}
|
114 |
|
115 |
|
116 |
-
async def get_bilibili_live_rooms_from_pi() -> dict:
|
117 |
-
sql = f"SELECT room_id, username FROM live_rooms"
|
118 |
-
pool = await get_aiomysql_instance()
|
119 |
-
data = await pool.query(sql)
|
120 |
-
bilibili_live_rooms = {}
|
121 |
-
for d in data:
|
122 |
-
bilibili_live_rooms[d["room_id"]] = d["username"]
|
123 |
-
return bilibili_live_rooms
|
124 |
-
|
125 |
-
|
126 |
async def get_cookie_from_pi() -> dict:
|
127 |
sql = f"SELECT cookie_name, cookie_value FROM cookie"
|
128 |
pool = await get_aiomysql_instance()
|
@@ -134,26 +124,6 @@ async def get_cookie_from_pi() -> dict:
|
|
134 |
return data[0]["cookie_name"]
|
135 |
|
136 |
|
137 |
-
async def get_aliyundrive_refresh_token():
|
138 |
-
sql = f"SELECT token FROM aliyundrive WHERE id=1"
|
139 |
-
pool = await get_aiomysql_instance()
|
140 |
-
data = await pool.query(sql)
|
141 |
-
if data:
|
142 |
-
logger.info("获取阿里云盘 refresh_token 成功")
|
143 |
-
return data[0]["token"]
|
144 |
-
return False
|
145 |
-
|
146 |
-
|
147 |
-
async def update_aliyundrive_access_token(access_token):
|
148 |
-
sql = f"UPDATE aliyundrive SET token=%s WHERE id=2"
|
149 |
-
pool = await get_aiomysql_instance()
|
150 |
-
data = await pool.update(sql, [access_token])
|
151 |
-
if data:
|
152 |
-
logger.info("update aliyundrive access token")
|
153 |
-
return True
|
154 |
-
return False
|
155 |
-
|
156 |
-
|
157 |
async def read_logfile(log_file: str) -> str:
|
158 |
async with aiofiles.open(log_file, mode="r", encoding="utf-8") as f:
|
159 |
data = await f.read()
|
@@ -183,7 +153,4 @@ async def main():
|
|
183 |
if __name__ == "__main__":
|
184 |
logger.debug(f"DEBUG Mode: {DEBUG}")
|
185 |
logger.debug(f"DIR_PATH: {DIR_PATH}")
|
186 |
-
logger.debug(f"get_pi_ip: {get_pi_ip(gotify_host)}")
|
187 |
-
logger.debug(f'get_domain: {get_domain("https://github.com")}')
|
188 |
-
logger.debug(f'push_msg: {push_msg("utils.py", "hello world")}')
|
189 |
# asyncio.run(main())
|
|
|
105 |
"message": message,
|
106 |
"priority": 10,
|
107 |
"extras": {
|
108 |
+
"client::display": {"contentType": "text/plaintext"},
|
109 |
"client::notification": {"bigImageUrl": img_url},
|
110 |
},
|
111 |
}
|
|
|
113 |
return {"code": resp.status_code, "res": resp.content}
|
114 |
|
115 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
116 |
async def get_cookie_from_pi() -> dict:
|
117 |
sql = f"SELECT cookie_name, cookie_value FROM cookie"
|
118 |
pool = await get_aiomysql_instance()
|
|
|
124 |
return data[0]["cookie_name"]
|
125 |
|
126 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
127 |
async def read_logfile(log_file: str) -> str:
|
128 |
async with aiofiles.open(log_file, mode="r", encoding="utf-8") as f:
|
129 |
data = await f.read()
|
|
|
153 |
if __name__ == "__main__":
|
154 |
logger.debug(f"DEBUG Mode: {DEBUG}")
|
155 |
logger.debug(f"DIR_PATH: {DIR_PATH}")
|
|
|
|
|
|
|
156 |
# asyncio.run(main())
|