From b26240d75bf60aeb39c129c63605a42608370dae Mon Sep 17 00:00:00 2001 From: Ting-Jun Wang Date: Wed, 30 Jun 2021 22:24:49 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=8F=96=E5=BE=97=E5=90=84=E5=AD=B8?= =?UTF-8?q?=E6=9C=9F=E6=88=90=E7=B8=BE=E7=B8=BD=E8=A6=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/ncnu.py | 29 +++++++++++++++++++++++++++++ main.py | 5 +++++ 2 files changed, 34 insertions(+) diff --git a/api/ncnu.py b/api/ncnu.py index 294929e..2f23fad 100644 --- a/api/ncnu.py +++ b/api/ncnu.py @@ -66,3 +66,32 @@ class NCNU(): else: return False + def getScoreSummary(self): + ''' + 取得各學期的學分數、平均、排名 + return data 包含 semesters(list) & sum(dict) 兩部份 + + 各個學期的細項(各項課程分數)需要在另外的 function 做請求 + ''' + url = "https://ccweb.ncnu.edu.tw/student/aspmaker_student_selected_semester_stat_viewlist.php" + response = self.session.get(url) + + if response.status_code == 200: + histories = find(response, 'tbody').findAll('tr') + + # 各學年度的資料(含總和) + semesterDatas = [{ + 'semester': data[0].text.replace('\n',''), # 學期 + 'select_num': data[1].text.replace('\n',''), # 選課數 + 'pass_Num': data[2].text.replace('\n',''), # 及格課程數 + 'pass_credit': data[3].text.replace('\n',''), # 及格學分數 + 'average': data[4].text.replace('\n',''), # 平均 + 'rank': data[5].text.replace('\n','') # 班排名 + } for data in (his.findAll('td')[2:] for his in histories)] + + return { + 'semesters': semesterDatas[:-1], + 'sum': semesterDatas[-1] + } + else: + return None \ No newline at end of file diff --git a/main.py b/main.py index f6797ff..5e15ce1 100644 --- a/main.py +++ b/main.py @@ -34,5 +34,10 @@ if ncnu.status: print("1092 課表已經儲存到 ./1092課表.pdf") else: print("無法存取 1092 課表") + + scores = ncnu.getScoreSummary() + for c in scores['semesters']: + print(c) + print(scores['sum']) else: print("NCNU 教務系統登入失敗")