diff --git a/API_Usage.py b/API_Usage.py new file mode 100644 index 0000000..2916716 --- /dev/null +++ b/API_Usage.py @@ -0,0 +1,101 @@ +from config import CONFIG +from api.moodle import Moodle +from api.ncnuMain import NcnuMain +from api.ncnu import NCNU + +def space(): + print("\n" + "="*20 + "\n") + +# =================== TEST Moodle API ========================== + +# ===== Test 登入 ===== +moodle = Moodle(CONFIG['moodle']['username'], CONFIG['moodle']['password']) +if moodle.status: + + # ===== Test 取得該學期課程資料 ===== + for c in moodle.getCourses("1092"): + print(c) + space() + + # ===== Test 取得未來重要事件 ===== + for e in moodle.getUpcomingEvents(): + print(e) + space() + + # ===== Test 取得課程在當週發布的物件 ( 文件、功課、BBB連結... 等) + for work in moodle.getWeekWorkInCourse('47562'): + print(work) + space() + + # ===== TEST 取得該課程的最新公告 + for anno in moodle.getAnnoInCourse('47555'): + print(anno) + space() +else: + print("Moodle 登入失敗") + + + + +# =================== Test 暨大官網 API ========================== + +# ===== Test 取得暨大官網最新消息 ===== +main = NcnuMain() +for anno in main.getAnno(): + print(anno) +space() + + + +# =================== Test 暨大教務系統 API ========================== + +# ===== Test 登入 ===== +ncnu = NCNU(CONFIG['NCNU']['username'], CONFIG['NCNU']['password']) +if ncnu.status: + + # ===== Test 下載課表 ===== + if ncnu.getCourseTable('1092'): + print("1092 課表已經儲存到 ./1092課表.pdf") + else: + print("無法存取 1092 課表") + space() + + # ===== Test 取得各學期成績總覽 ===== + scores = ncnu.getScoreSummary() + for c in scores['semesters']: + print(c) + print(scores['sum']) + space() + + # ===== Test 取得指定學期的成績列表 ===== + scores = ncnu.getScore('1092') + for i in scores: + print(i) + space() + + # ===== Test 取得所有缺曠課記錄 ===== + absenceLogs = ncnu.getAbsenceLogs() + if absenceLogs: + for log in absenceLogs: + print(log) + else: + print("沒有任何缺曠課記錄") + space() + + # ===== Test 獎懲紀錄 ===== + awardLogs = ncnu.getAwardLogs() + if awardLogs: + for log in awardLogs: + print(log) + else: + print("沒有任何獎懲紀錄") + space() + + # ===== Test 取得加選課程狀態 ===== + logs = ncnu.getAddCourseLogs() + if logs: + for log in logs: + print(log) + space() +else: + print("NCNU 教務系統登入失敗") diff --git a/api/ncnu.py b/api/ncnu.py index 88f6cbd..85fd2ba 100644 --- a/api/ncnu.py +++ b/api/ncnu.py @@ -121,4 +121,50 @@ class NCNU(): '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 + return None + + def getAbsenceLogs(self): + response = self.session.get("https://ccweb.ncnu.edu.tw/student/absencelist.php") + table = find(response, 'tbody') + + if table: + logs = table.findAll('tr') + return [{ + 'id': data[0].text.replace('\n', ''), + 'semester': data[1].text.replace('\n', ''), + 'classname': data[2].text.replace('\n', ''), + 'date': data[3].text.replace('\n', ''), + 'time': data[4].text.replace('\n', '') + } for data in (log.findAll('td') for log in logs)] + else: + return None + + def getAwardLogs(self): + response = self.session.get('https://ccweb.ncnu.edu.tw/student/aspmaker_student_merit_viewlist.php?export=csv') + datas = response.text.split('\r\n')[1:-1] + + if len(datas) == 2: + return None + else: + return [{ + 'id': data[0], + 'semester': data[1], + 'award': data[2], + 'count': data[3], + 'content': data[4], + } for data in (data.replace('"', '').split(',') for data in datas)] + + def getAddCourseLogs(self): + response = self.session.get('https://ccweb.ncnu.edu.tw/student/applyaddcourselist.php?export=csv') + datas = response.text.split('\r\n')[1:-1] + + if len(datas) == 2: + return None + else: + return [{ + 'id': data[0], + 'semester': data[1], + 'classname': data[2]+data[3], + 'class': data[4], + 'check': data[5], + } for data in (data.replace('"', '').split(',') for data in datas)] \ No newline at end of file diff --git a/main.py b/main.py deleted file mode 100644 index b0d94bc..0000000 --- a/main.py +++ /dev/null @@ -1,48 +0,0 @@ -from config import CONFIG -from api.moodle import Moodle -from api.ncnuMain import NcnuMain -from api.ncnu import NCNU - -def space(): - print("\n" + "="*20 + "\n") - -moodle = Moodle(CONFIG['moodle']['username'], CONFIG['moodle']['password']) -if moodle.status: - for c in moodle.getCourses("1092"): - print(c) - space() - for e in moodle.getUpcomingEvents(): - print(e) - space() - for work in moodle.getWeekWorkInCourse('47562'): - print(work) - space() - for anno in moodle.getAnnoInCourse('47555'): - print(anno) - space() -else: - print("Moodle 登入失敗") - -main = NcnuMain() -for anno in main.getAnno(): - print(anno) -space() - -ncnu = NCNU(CONFIG['NCNU']['username'], CONFIG['NCNU']['password']) -if ncnu.status: - if ncnu.getCourseTable('1092'): - 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 教務系統登入失敗")