This commit is contained in:
2025-07-09 00:17:36 +08:00
parent eebe92bab0
commit d56d2a3267
2 changed files with 87 additions and 80 deletions

View File

@ -1,29 +1,37 @@
from serverchan_sdk import sc_send as _sc_send
from datetime import datetime
import logging
from pathlib import Path
from os import environ
from dotenv import load_dotenv
import requests
import base64
import hashlib
import json
import logging
import re
from typing import NoReturn,Optional,Iterable
from datetime import datetime
from os import environ
from pathlib import Path
from typing import Iterable, NoReturn, Optional
import requests
from dotenv import load_dotenv
from serverchan_sdk import sc_send as _sc_send
class LessonsException(Exception):
"""自定义异常类"""
pass
class ReloginException(LessonsException):
"""用于处理需要重新登录的异常"""
pass
# 配置日志
logging.basicConfig(
level=logging.INFO, format="%(asctime)s - %(levelname)s - %(message)s"
)
logger = logging.getLogger(__name__)
def sc_send(title: str, desp: str):
if not environ.get("SC_KEY"):
logger.error("SC_KEY 未设置,无法发送通知")
@ -43,16 +51,17 @@ def log_init():
file.setLevel(logging.INFO)
logger.addHandler(file) # 日志输出到文件
class URP:
def __init__(self,base=None):
def __init__(self, base=None):
self.session = requests.session()
if base is None:
self.base = environ.get("base","http://jwstudent.lnu.edu.cn")
self.base = environ.get("base", "http://jwstudent.lnu.edu.cn")
else:
self.base = base
@staticmethod
def env_check(required_keys:Optional[Iterable] = None) -> None|NoReturn:
def env_check(required_keys: Optional[Iterable] = None) -> None | NoReturn:
# 检查必需的环境变量
if required_keys is None:
required_keys = [
@ -65,7 +74,7 @@ class URP:
for key in required_keys:
if not environ.get(key):
raise LessonsException(f"请在环境变量中设置{key}")
@staticmethod
def _retry_request(
func, max_retries: int = 10, error_msg: str = "请求失败"
@ -123,7 +132,7 @@ class URP:
md5_part2 = hashlib.md5(string.encode()).hexdigest().lower()
final_result = md5_part1 + "*" + md5_part2
return final_result
def _login(self):
"""登录模块"""
username = environ.get("uname")
@ -195,7 +204,6 @@ class URP:
if not flag:
raise LessonsException("登录失败无法获取token")
@staticmethod
def _judge_logout(response: requests.Response):
"""检查账号是否在其他地方被登录"""
@ -203,6 +211,5 @@ class URP:
raise ReloginException("有人登录了您的账号!")
load_dotenv(override=True)
log_init()
log_init()