diff --git a/README.md b/README.md index 3bce5e3..a970ba6 100644 --- a/README.md +++ b/README.md @@ -36,12 +36,6 @@ 6. 显示未公布成绩的课程,即已选课但尚未出成绩的课程。 7. 显示异常的课程,即已出成绩但用户未选课的课程。 -## 未来的计划 - -1. 重写[详细使用方法](https://github.com/NianBroken/ZFCheckScores/blob/main/DetailedUsage.md "详细使用方法")。 -2. 增加显示学分,如 当前学分:54 / 280。 -3. 代码重构。 - ## 使用方法 ### 1. [Fork](https://github.com/NianBroken/ZFCheckScores/fork "Fork") 本仓库 diff --git a/get_grade.py b/get_grade.py index a69adab..ac59295 100644 --- a/get_grade.py +++ b/get_grade.py @@ -1,60 +1,63 @@ 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 中的每个字典,将 title 中的中文括号替换为英文括号 - for course_data_grade in grade: - course_data_grade["title"] = ( - course_data_grade["title"].replace("(", "(").replace(")", ")") + # 成绩不为空时 + if grade: + # 遍历 grade 中的每个字典,将 title 中的中文括号替换为英文括号 + 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 ) - # 按照提交时间降序排序 - sorted_grade = sorted(grade, key=lambda x: x["submission_time"], reverse=True) + # GPA计算 (学分*绩点)的总和/学分总和 + gpa = "{:.2f}".format(total_xfjd / total_credit) - # 学分总和 - 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计算 (学分*绩点)的总和/学分总和 - 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"------" + # 百分制GPA计算 (百分制成绩*学分)的总和/学分总和 + percentage_gpa = "{:.2f}".format( + sum_of_percentage_grades_multiplied_by_credits / total_credit ) - 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 "获取成绩:参数缺失" + # 初始化输出成绩信息字符串 + 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 + 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 "获取成绩:参数缺失" diff --git a/get_info.py b/get_info.py index 00c462d..dcafaf7 100644 --- a/get_info.py +++ b/get_info.py @@ -14,17 +14,19 @@ def get_info(student_client, output_type="none"): ) 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: + 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"------" integrated_info = f"{info}{gpa_info}" - if output_type == "info": - return info - elif output_type == "integrated_info": - return integrated_info + if output_type == "info": + return info + elif output_type == "integrated_info": + return integrated_info + else: + return "获取个人信息:参数缺失" else: - return "获取个人信息:参数缺失" + return info diff --git a/get_selected_courses.py b/get_selected_courses.py index dee6897..ce07a54 100644 --- a/get_selected_courses.py +++ b/get_selected_courses.py @@ -2,7 +2,6 @@ from get_grade import get_grade def get_selected_courses(student_client): - # 获取成绩信息 grade = get_grade(student_client, output_type="grade") @@ -18,13 +17,13 @@ def get_selected_courses(student_client): abnormal_courses_by_semester = {} # 获取成绩列表中的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和grade中的每个课程 - for course in selected_courses + grade: + for course in selected_courses + (grade or []): # 获取课程的class_id和学年学期 yearsemester_id = course["class_name"].split("(")[1].split(")")[0] year, semester, seq = yearsemester_id.split("-") diff --git a/main.py b/main.py index 3f86d31..1165882 100644 --- a/main.py +++ b/main.py @@ -8,6 +8,7 @@ from get_info import get_info from get_grade import get_grade from get_selected_courses import get_selected_courses from pushplus import send_message +from datetime import datetime # MD5加密 @@ -47,6 +48,9 @@ run_count = 2 # 初始化运行日志 run_log = "" +# 当前时间 +current_time = "------\n" + datetime.now().strftime("%Y-%m-%d %H:%M:%S:%f")[:-3] + # 登录 student_client = login(url, username, password) @@ -98,6 +102,7 @@ for _ in range(run_count): with open(grade_file_path, "w") as grade_file: grade_file.truncate() + # 获取整合后的成绩信息 integrated_grade_info = get_grade( student_client, output_type="integrated_grade_info" ) @@ -155,7 +160,7 @@ integrated_send_info = ( f"{integrated_info}\n" f"{integrated_grade_info}\n" f"{selected_courses_filtering}\n" - f"{workflow_info}" + f"{workflow_info if github_actions else current_time}" ) # 整合首次运行时需要使用到的所有信息 diff --git a/old_grade.txt b/old_grade.txt index b0c3520..c5c88a2 100644 --- a/old_grade.txt +++ b/old_grade.txt @@ -1 +1 @@ -4400f1a0083a801243f628f53a270491 \ No newline at end of file +048a6883262c441ad3095f05f2892187 \ No newline at end of file