feat: 查詢當週該課程公告的所有物件

This commit is contained in:
Ting-Jun Wang 2021-06-30 12:12:29 +08:00
parent 5a21c6670f
commit fac7e0c7bc
Signed by: snsd0805
GPG Key ID: 8DB0D22BC1217D33
2 changed files with 33 additions and 5 deletions

View File

@ -1,3 +1,4 @@
import time
import requests import requests
from bs4 import BeautifulSoup from bs4 import BeautifulSoup
from api.tools import getUrlParam, findAll, find from api.tools import getUrlParam, findAll, find
@ -22,8 +23,9 @@ class Moodle():
''' '''
# get login token # get login token
response = self.session.get('https://moodle.ncnu.edu.tw/') response = self.session.get('https://moodle.ncnu.edu.tw/')
loginToken = find(response, 'input', {'name': 'logintoken'}).get('value') loginToken = find(response, 'input', param={'name': 'logintoken'}).get('value')
# login request
response = self.session.post( response = self.session.post(
'https://moodle.ncnu.edu.tw/login/index.php?authldap_skipntlmsso=1', 'https://moodle.ncnu.edu.tw/login/index.php?authldap_skipntlmsso=1',
data={ data={
@ -36,7 +38,7 @@ class Moodle():
# if it does, it return two 303 status code and redirected to Moodle main page # if it does, it return two 303 status code and redirected to Moodle main page
if len(response.history) == 2: if len(response.history) == 2:
self.sessionKey = getUrlParam( self.sessionKey = getUrlParam(
find(response, 'a', {'data-title': 'logout,moodle'}).get('href'), 'sesskey' find(response, 'a', param={'data-title': 'logout,moodle'}).get('href'), 'sesskey'
) )
return True return True
else: else:
@ -51,7 +53,7 @@ class Moodle():
} }
''' '''
response = self.session.get('https://moodle.ncnu.edu.tw/') response = self.session.get('https://moodle.ncnu.edu.tw/')
courses = findAll(response, 'ul', {'class': 'dropdown-menu'})[1] courses = findAll(response, 'ul', param={'class': 'dropdown-menu'})[1]
ans = [] ans = []
for course in courses: for course in courses:
if course.text.split('-')[0]==semester: if course.text.split('-')[0]==semester:
@ -67,7 +69,7 @@ class Moodle():
僅包含 ID大標題時間 僅包含 ID大標題時間
''' '''
response = self.session.get('https://moodle.ncnu.edu.tw/') response = self.session.get('https://moodle.ncnu.edu.tw/')
events = findAll(response, 'div', {'class': 'event'}) events = findAll(response, 'div', param={'class': 'event'})
ans = [] ans = []
for event in events: for event in events:
datas = event.findAll('a') datas = event.findAll('a')
@ -102,3 +104,26 @@ class Moodle():
'name': response['course']['fullname'] 'name': response['course']['fullname']
} }
} }
def getWeekWorkInCourse(self, courseID):
'''
使用 CourseID 取得當週所公告的物件
回傳 型別名稱連結
'''
url = "https://moodle.ncnu.edu.tw/course/view.php?id={}"
response = self.session.get(url.format(courseID))
# dateBlock = findAll(response, 'li', param={'class': 'section main clearfix'})[-2]
dateBlock = find(response, 'li', param={'class': 'section main clearfix current'})
if dateBlock:
links = dateBlock.findAll('li')
return [{
'name': " ".join( link.text.split(' ')[:-1] ),
'type': link.text.split(' ')[-1],
'link': link.find('a').get('href')
} for link in links]
else:
return None

View File

@ -7,4 +7,7 @@ if moodle.status:
print(c) print(c)
for e in moodle.getUpcomingEvents(): for e in moodle.getUpcomingEvents():
print(e) print(e)
print(moodle.getEvent(e['id'])) print(moodle.getEvent(e['id']))
for work in moodle.getWeekWorkInCourse('47562'):
print(work)