From 6d8c37a22d6886e3eb99ec47c622048ff27de2bf Mon Sep 17 00:00:00 2001 From: Ting-Jun Wang Date: Thu, 1 Jul 2021 23:39:19 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=E5=96=AE=E5=AD=B8?= =?UTF-8?q?=E6=9C=9F=E6=88=90=E7=B8=BE=E6=9F=A5=E8=A9=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/ncnu.py | 29 ++++++++++++++++++++++++++++- main.py | 7 ++++++- 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/api/ncnu.py b/api/ncnu.py index 2f23fad..88f6cbd 100644 --- a/api/ncnu.py +++ b/api/ncnu.py @@ -7,6 +7,7 @@ class NCNU(): initial 就登入 根據 self.status 判斷成功與否 ''' + self.username = username # 學號 self.session = requests.Session() self.status = self.login(username, password) @@ -87,11 +88,37 @@ class NCNU(): '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)] + } for data in (his.findAll('td')[2:] + for his in histories)] return { 'semesters': semesterDatas[:-1], 'sum': semesterDatas[-1] } + else: + return None + + def getScore(self, semester): + ''' + 取得指定學期的各項成績 + ''' + url = "https://ccweb.ncnu.edu.tw/student/aspmaker_student_selected_semester_stat_viewview.php" + url += "?showdetail=aspmaker_student_selected_view&studentid={}&year={}" + response = self.session.get(url.format(self.username, semester)) + + if response.status_code == 200: + scores = find(response, 'div', param={'class': 'card ew-card ew-grid aspmaker_student_selected_view'}) \ + .findAll('tr') + return [{ + 'number': data[1].text.replace('\n',''), # + 'class': data[2].text.replace('\n',''), + 'name': data[3].text.replace('\n',''), + 'teacher': data[4].text.replace('\n',''), + 'time': data[5].text.replace('\n',''), + 'place': data[6].text.replace('\n',''), + 'credit': data[7].text.replace('\n',''), + 'score': data[8].text.replace('\n',''), + 'mandatory': data[9].text.replace('\n','') + } for data in (score.findAll('td') for score in scores[1:])] else: return None \ No newline at end of file diff --git a/main.py b/main.py index 5e15ce1..b0d94bc 100644 --- a/main.py +++ b/main.py @@ -34,10 +34,15 @@ if ncnu.status: print("1092 課表已經儲存到 ./1092課表.pdf") else: print("無法存取 1092 課表") - + space() scores = ncnu.getScoreSummary() for c in scores['semesters']: print(c) print(scores['sum']) + space() + scores = ncnu.getScore('1092') + for i in scores: + print(i) + space() else: print("NCNU 教務系統登入失敗")