Optimize code structure to improve code readability and maintainability.
This commit is contained in:
@@ -36,12 +36,6 @@
|
|||||||
6. 显示未公布成绩的课程,即已选课但尚未出成绩的课程。
|
6. 显示未公布成绩的课程,即已选课但尚未出成绩的课程。
|
||||||
7. 显示异常的课程,即已出成绩但用户未选课的课程。
|
7. 显示异常的课程,即已出成绩但用户未选课的课程。
|
||||||
|
|
||||||
## 未来的计划
|
|
||||||
|
|
||||||
1. 重写[详细使用方法](https://github.com/NianBroken/ZFCheckScores/blob/main/DetailedUsage.md "详细使用方法")。
|
|
||||||
2. 增加显示学分,如 当前学分:54 / 280。
|
|
||||||
3. 代码重构。
|
|
||||||
|
|
||||||
## 使用方法
|
## 使用方法
|
||||||
|
|
||||||
### 1. [Fork](https://github.com/NianBroken/ZFCheckScores/fork "Fork") 本仓库
|
### 1. [Fork](https://github.com/NianBroken/ZFCheckScores/fork "Fork") 本仓库
|
||||||
|
|||||||
+54
-51
@@ -1,60 +1,63 @@
|
|||||||
def get_grade(student_client, output_type="none"):
|
def get_grade(student_client, output_type="none"):
|
||||||
# 获取成绩信息
|
# 获取成绩信息
|
||||||
grade_data = student_client.get_grade("").get("data", {})
|
grade_data = student_client.get_grade().get("data", {})
|
||||||
grade = grade_data.get("courses", [])
|
grade = grade_data.get("courses", [])
|
||||||
|
|
||||||
# 遍历 grade 中的每个字典,将 title 中的中文括号替换为英文括号
|
# 成绩不为空时
|
||||||
for course_data_grade in grade:
|
if grade:
|
||||||
course_data_grade["title"] = (
|
# 遍历 grade 中的每个字典,将 title 中的中文括号替换为英文括号
|
||||||
course_data_grade["title"].replace("(", "(").replace(")", ")")
|
for course_data_grade in grade:
|
||||||
|
course_data_grade["title"] = (
|
||||||
|
course_data_grade["title"].replace("(", "(").replace(")", ")")
|
||||||
|
)
|
||||||
|
|
||||||
|
# 按照提交时间降序排序
|
||||||
|
sorted_grade = sorted(grade, key=lambda x: x["submission_time"], reverse=True)
|
||||||
|
|
||||||
|
# 学分总和
|
||||||
|
total_credit = sum(float(course["credit"]) for course in grade)
|
||||||
|
|
||||||
|
# 学分绩点总和
|
||||||
|
total_xfjd = sum(float(course["xfjd"]) for course in grade)
|
||||||
|
|
||||||
|
# (百分制成绩*学分)的总和
|
||||||
|
sum_of_percentage_grades_multiplied_by_credits = sum(
|
||||||
|
float(course["percentage_grades"]) * float(course["credit"])
|
||||||
|
for course in grade
|
||||||
)
|
)
|
||||||
|
|
||||||
# 按照提交时间降序排序
|
# GPA计算 (学分*绩点)的总和/学分总和
|
||||||
sorted_grade = sorted(grade, key=lambda x: x["submission_time"], reverse=True)
|
gpa = "{:.2f}".format(total_xfjd / total_credit)
|
||||||
|
|
||||||
# 学分总和
|
# 百分制GPA计算 (百分制成绩*学分)的总和/学分总和
|
||||||
total_credit = sum(float(course["credit"]) for course in grade)
|
percentage_gpa = "{:.2f}".format(
|
||||||
|
sum_of_percentage_grades_multiplied_by_credits / total_credit
|
||||||
# 学分绩点总和
|
|
||||||
total_xfjd = sum(float(course["xfjd"]) for course in grade)
|
|
||||||
|
|
||||||
# (百分制成绩*学分)的总和
|
|
||||||
sum_of_percentage_grades_multiplied_by_credits = sum(
|
|
||||||
float(course["percentage_grades"]) * float(course["credit"]) for course in grade
|
|
||||||
)
|
|
||||||
|
|
||||||
# GPA计算 (学分*绩点)的总和/学分总和
|
|
||||||
gpa = "{:.2f}".format(total_xfjd / total_credit)
|
|
||||||
|
|
||||||
# 百分制GPA计算 (百分制成绩*学分)的总和/学分总和
|
|
||||||
percentage_gpa = "{:.2f}".format(
|
|
||||||
sum_of_percentage_grades_multiplied_by_credits / total_credit
|
|
||||||
)
|
|
||||||
|
|
||||||
# 初始化输出成绩信息字符串
|
|
||||||
integrated_grade_info = "成绩信息:"
|
|
||||||
|
|
||||||
# 遍历前8条成绩信息
|
|
||||||
for _, course in enumerate(sorted_grade[:8]):
|
|
||||||
# 整合成绩信息
|
|
||||||
integrated_grade_info += (
|
|
||||||
f"\n"
|
|
||||||
f"教学班ID:{course['class_id']}\n"
|
|
||||||
f"课程名称:{course['title']}\n"
|
|
||||||
f"任课教师:{course['teacher']}\n"
|
|
||||||
f"成绩:{course['grade']}\n"
|
|
||||||
f"提交时间:{course['submission_time']}\n"
|
|
||||||
f"提交人姓名:{course['name_of_submitter']}\n"
|
|
||||||
f"------"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
if output_type == "grade":
|
# 初始化输出成绩信息字符串
|
||||||
return grade
|
integrated_grade_info = "成绩信息:"
|
||||||
elif output_type == "gpa":
|
|
||||||
return gpa
|
# 遍历前8条成绩信息
|
||||||
elif output_type == "percentage_gpa":
|
for _, course in enumerate(sorted_grade[:8]):
|
||||||
return percentage_gpa
|
# 整合成绩信息
|
||||||
elif output_type == "integrated_grade_info":
|
integrated_grade_info += (
|
||||||
return integrated_grade_info
|
f"\n"
|
||||||
else:
|
f"教学班ID:{course['class_id']}\n"
|
||||||
return "获取成绩:参数缺失"
|
f"课程名称:{course['title']}\n"
|
||||||
|
f"任课教师:{course['teacher']}\n"
|
||||||
|
f"成绩:{course['grade']}\n"
|
||||||
|
f"提交时间:{course['submission_time']}\n"
|
||||||
|
f"提交人姓名:{course['name_of_submitter']}\n"
|
||||||
|
f"------"
|
||||||
|
)
|
||||||
|
|
||||||
|
if output_type == "grade":
|
||||||
|
return grade
|
||||||
|
elif output_type == "gpa":
|
||||||
|
return gpa
|
||||||
|
elif output_type == "percentage_gpa":
|
||||||
|
return percentage_gpa
|
||||||
|
elif output_type == "integrated_grade_info":
|
||||||
|
return integrated_grade_info
|
||||||
|
else:
|
||||||
|
return "获取成绩:参数缺失"
|
||||||
|
|||||||
+9
-7
@@ -14,17 +14,19 @@ def get_info(student_client, output_type="none"):
|
|||||||
)
|
)
|
||||||
|
|
||||||
grade = get_grade(student_client, output_type="grade")
|
grade = get_grade(student_client, output_type="grade")
|
||||||
gpa = get_grade(student_client, output_type="gpa")
|
|
||||||
percentage_gpa = get_grade(student_client, output_type="percentage_gpa")
|
|
||||||
|
|
||||||
if grade:
|
if grade:
|
||||||
|
gpa = get_grade(student_client, output_type="gpa")
|
||||||
|
percentage_gpa = get_grade(student_client, output_type="percentage_gpa")
|
||||||
# 整合个人信息
|
# 整合个人信息
|
||||||
gpa_info = f"\n当前GPA:{gpa}\n" f"当前百分制GPA:{percentage_gpa}\n" f"------"
|
gpa_info = f"\n当前GPA:{gpa}\n" f"当前百分制GPA:{percentage_gpa}\n" f"------"
|
||||||
integrated_info = f"{info}{gpa_info}"
|
integrated_info = f"{info}{gpa_info}"
|
||||||
|
|
||||||
if output_type == "info":
|
if output_type == "info":
|
||||||
return info
|
return info
|
||||||
elif output_type == "integrated_info":
|
elif output_type == "integrated_info":
|
||||||
return integrated_info
|
return integrated_info
|
||||||
|
else:
|
||||||
|
return "获取个人信息:参数缺失"
|
||||||
else:
|
else:
|
||||||
return "获取个人信息:参数缺失"
|
return info
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ from get_grade import get_grade
|
|||||||
|
|
||||||
|
|
||||||
def get_selected_courses(student_client):
|
def get_selected_courses(student_client):
|
||||||
|
|
||||||
# 获取成绩信息
|
# 获取成绩信息
|
||||||
grade = get_grade(student_client, output_type="grade")
|
grade = get_grade(student_client, output_type="grade")
|
||||||
|
|
||||||
@@ -18,13 +17,13 @@ def get_selected_courses(student_client):
|
|||||||
abnormal_courses_by_semester = {}
|
abnormal_courses_by_semester = {}
|
||||||
|
|
||||||
# 获取成绩列表中的class_id集合
|
# 获取成绩列表中的class_id集合
|
||||||
grade_class_ids = {course["class_id"] for course in grade}
|
grade_class_ids = {course["class_id"] for course in grade} if grade else ""
|
||||||
|
|
||||||
# 初始化输出内容
|
# 初始化输出内容
|
||||||
selected_courses_filtering = ""
|
selected_courses_filtering = ""
|
||||||
|
|
||||||
# 遍历selected_courses和grade中的每个课程
|
# 遍历selected_courses和grade中的每个课程
|
||||||
for course in selected_courses + grade:
|
for course in selected_courses + (grade or []):
|
||||||
# 获取课程的class_id和学年学期
|
# 获取课程的class_id和学年学期
|
||||||
yearsemester_id = course["class_name"].split("(")[1].split(")")[0]
|
yearsemester_id = course["class_name"].split("(")[1].split(")")[0]
|
||||||
year, semester, seq = yearsemester_id.split("-")
|
year, semester, seq = yearsemester_id.split("-")
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ from get_info import get_info
|
|||||||
from get_grade import get_grade
|
from get_grade import get_grade
|
||||||
from get_selected_courses import get_selected_courses
|
from get_selected_courses import get_selected_courses
|
||||||
from pushplus import send_message
|
from pushplus import send_message
|
||||||
|
from datetime import datetime
|
||||||
|
|
||||||
|
|
||||||
# MD5加密
|
# MD5加密
|
||||||
@@ -47,6 +48,9 @@ run_count = 2
|
|||||||
# 初始化运行日志
|
# 初始化运行日志
|
||||||
run_log = ""
|
run_log = ""
|
||||||
|
|
||||||
|
# 当前时间
|
||||||
|
current_time = "------\n" + datetime.now().strftime("%Y-%m-%d %H:%M:%S:%f")[:-3]
|
||||||
|
|
||||||
# 登录
|
# 登录
|
||||||
student_client = login(url, username, password)
|
student_client = login(url, username, password)
|
||||||
|
|
||||||
@@ -98,6 +102,7 @@ for _ in range(run_count):
|
|||||||
with open(grade_file_path, "w") as grade_file:
|
with open(grade_file_path, "w") as grade_file:
|
||||||
grade_file.truncate()
|
grade_file.truncate()
|
||||||
|
|
||||||
|
# 获取整合后的成绩信息
|
||||||
integrated_grade_info = get_grade(
|
integrated_grade_info = get_grade(
|
||||||
student_client, output_type="integrated_grade_info"
|
student_client, output_type="integrated_grade_info"
|
||||||
)
|
)
|
||||||
@@ -155,7 +160,7 @@ integrated_send_info = (
|
|||||||
f"{integrated_info}\n"
|
f"{integrated_info}\n"
|
||||||
f"{integrated_grade_info}\n"
|
f"{integrated_grade_info}\n"
|
||||||
f"{selected_courses_filtering}\n"
|
f"{selected_courses_filtering}\n"
|
||||||
f"{workflow_info}"
|
f"{workflow_info if github_actions else current_time}"
|
||||||
)
|
)
|
||||||
|
|
||||||
# 整合首次运行时需要使用到的所有信息
|
# 整合首次运行时需要使用到的所有信息
|
||||||
|
|||||||
+1
-1
@@ -1 +1 @@
|
|||||||
4400f1a0083a801243f628f53a270491
|
048a6883262c441ad3095f05f2892187
|
||||||
Reference in New Issue
Block a user