2023-03-23 14:31:05 +00:00
|
|
|
from io import BytesIO
|
|
|
|
|
|
|
|
import openpyxl
|
|
|
|
|
|
|
|
import cqwu
|
|
|
|
from cqwu.errors import CookieError
|
|
|
|
from cqwu.types.cp import CP
|
|
|
|
|
|
|
|
|
|
|
|
class GetCP:
|
|
|
|
async def get_cp(
|
|
|
|
self: "cqwu.Client",
|
|
|
|
year: int = None,
|
|
|
|
semester: int = None,
|
|
|
|
) -> CP:
|
2023-12-29 10:04:00 +00:00
|
|
|
"""获取综合测评结果"""
|
2023-03-23 14:31:05 +00:00
|
|
|
xue_nian = year or self.xue_nian
|
|
|
|
xue_qi = semester or self.xue_qi
|
2023-03-26 05:23:57 +00:00
|
|
|
await self.oauth_xg()
|
2023-03-23 14:31:05 +00:00
|
|
|
url = "http://xg.cqwu.edu.cn/xsfw/sys/emapcomponent/imexport/export.do"
|
|
|
|
headers = {
|
2023-12-29 10:04:00 +00:00
|
|
|
"Accept": "application/json, text/javascript, */*; q=0.01",
|
|
|
|
"Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6,hu;q=0.5",
|
|
|
|
"Connection": "keep-alive",
|
|
|
|
"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
|
|
|
|
"Origin": "http://xg.cqwu.edu.cn",
|
|
|
|
"Referer": "http://xg.cqwu.edu.cn/xsfw/sys/zhcptybbapp/*default/index.do",
|
|
|
|
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36 Edg/111.0.1661.51",
|
|
|
|
"X-Requested-With": "XMLHttpRequest",
|
2023-03-23 14:31:05 +00:00
|
|
|
}
|
|
|
|
data = {
|
2023-12-29 10:04:00 +00:00
|
|
|
"app": "zhcptybbapp",
|
|
|
|
"contextPath": "http://xg.cqwu.edu.cn/xsfw",
|
|
|
|
"module": "modules",
|
|
|
|
"page": "cpjgcx",
|
|
|
|
"action": "cpjgcxbgdz",
|
|
|
|
"containerId": "cpjg_grid",
|
|
|
|
"CPXN": str(xue_nian),
|
|
|
|
"CPXQ": str(xue_qi),
|
|
|
|
"filename": "综合测评结果",
|
|
|
|
"colnames": "XH,XM,CPXN,CPXQ,DWDM,DZ_ZYFX,BJDM,ZCJ,BJPM,BJRS,ZYNJPM,ZYNJRS,FS1,FS10,FS11,FS12,"
|
|
|
|
"XZNJ,DZ_BJPM,DZ_ZYPM",
|
2023-03-23 14:31:05 +00:00
|
|
|
}
|
|
|
|
html = await self.request.post(url, headers=headers, data=data)
|
|
|
|
if html.status_code != 200:
|
|
|
|
raise CookieError()
|
|
|
|
html_data = html.json()
|
|
|
|
url = f"http://xg.cqwu.edu.cn/xsfw/sys/emapcomponent/file/getAttachmentFile/{html_data['attachment']}.do"
|
|
|
|
xlsx_file = await self.request.get(url, headers=headers)
|
|
|
|
wb = openpyxl.load_workbook(filename=BytesIO(xlsx_file.content))
|
|
|
|
ws = wb.active
|
|
|
|
wz = ws[2]
|
|
|
|
return CP(
|
|
|
|
id=int(wz[0].value),
|
|
|
|
name=wz[1].value,
|
|
|
|
xue_nian=wz[2].value,
|
|
|
|
xue_qi=wz[3].value,
|
|
|
|
score=float(wz[7].value),
|
|
|
|
class_rank=int(wz[8].value),
|
|
|
|
class_member=int(wz[9].value),
|
|
|
|
grade_rank=int(wz[10].value),
|
|
|
|
grade_member=int(wz[11].value),
|
|
|
|
dysz=float(wz[12].value),
|
|
|
|
zysz=float(wz[13].value),
|
|
|
|
cxsz=float(wz[14].value),
|
|
|
|
wtsz=float(wz[15].value),
|
|
|
|
zysz_class_rank=int(wz[17].value),
|
|
|
|
zysz_grade_rank=int(wz[18].value),
|
|
|
|
)
|