feat: 更改API名稱 & 新增活動報名登入

This commit is contained in:
Ting-Jun Wang 2021-07-02 18:02:30 +08:00
parent d720c32545
commit bca08dcbf2
Signed by: snsd0805
GPG Key ID: 8DB0D22BC1217D33
5 changed files with 61 additions and 9 deletions

View File

@ -1,7 +1,8 @@
from config import CONFIG from config import CONFIG
from api.moodle import Moodle from api.moodle import MoodleAPI
from api.ncnuMain import NcnuMain from api.ncnuMain import NcnuMainAPI
from api.ncnu import NCNU from api.ncnu import NcnuAPI
from api.eventRigestry import EventRegistry
def space(): def space():
print("\n" + "="*20 + "\n") print("\n" + "="*20 + "\n")
@ -9,7 +10,7 @@ def space():
# =================== TEST Moodle API ========================== # =================== TEST Moodle API ==========================
# ===== Test 登入 ===== # ===== Test 登入 =====
moodle = Moodle(CONFIG['moodle']['username'], CONFIG['moodle']['password']) moodle = MoodleAPI(CONFIG['moodle']['username'], CONFIG['moodle']['password'])
if moodle.status: if moodle.status:
# ===== Test 取得該學期課程資料 ===== # ===== Test 取得該學期課程資料 =====
@ -40,7 +41,7 @@ else:
# =================== Test 暨大官網 API ========================== # =================== Test 暨大官網 API ==========================
# ===== Test 取得暨大官網最新消息 ===== # ===== Test 取得暨大官網最新消息 =====
main = NcnuMain() main = NcnuMainAPI()
for anno in main.getAnno(): for anno in main.getAnno():
print(anno) print(anno)
space() space()
@ -50,7 +51,7 @@ space()
# =================== Test 暨大教務系統 API ========================== # =================== Test 暨大教務系統 API ==========================
# ===== Test 登入 ===== # ===== Test 登入 =====
ncnu = NCNU(CONFIG['NCNU']['username'], CONFIG['NCNU']['password']) ncnu = NcnuAPI(CONFIG['NCNU']['username'], CONFIG['NCNU']['password'])
if ncnu.status: if ncnu.status:
# ===== Test 下載課表 ===== # ===== Test 下載課表 =====
@ -99,3 +100,16 @@ if ncnu.status:
space() space()
else: else:
print("NCNU 教務系統登入失敗") print("NCNU 教務系統登入失敗")
# =================== Test 暨大活動報名系統 API ==========================
# ===== Test 登入 =====
eventReg = EventRegistry(CONFIG['NCNU']['username'], CONFIG['NCNU']['password'])
if eventReg.status:
print("登入成功")
space()
else:
print("登入失敗")

38
api/eventRigestry.py Normal file
View File

@ -0,0 +1,38 @@
import requests
from api.tools import *
class EventRegistry():
def __init__(self, username, password):
'''
initial 就登入
根據 self.status 判斷成功與否
'''
self.username = username # 學號
self.session = requests.Session()
self.status = self.login(username, password)
def login(self, username, password):
'''
登入活動報名系統
return bool
'''
# get login token
response = self.session.get('https://ccweb.ncnu.edu.tw/SLLL/login.asp')
loginToken = find(response, 'input', param={'name': 'token'}).get('value')
# request login page
response = self.session.post(
"https://ccweb.ncnu.edu.tw/SLLL/login.asp",
data={
'token': loginToken,
'username': username,
'password': password,
'type': ''
}
)
# 成功的話 return http 302, redirect
if len(response.history)!=0:
return True
else:
return False

View File

@ -4,7 +4,7 @@ from bs4 import BeautifulSoup
from api.tools import * from api.tools import *
import json import json
class Moodle(): class MoodleAPI():
def __init__(self, username, password): def __init__(self, username, password):
''' '''
Create a Moodle object to handle Session Create a Moodle object to handle Session

View File

@ -1,7 +1,7 @@
import requests import requests
from api.tools import * from api.tools import *
class NCNU(): class NcnuAPI():
def __init__(self, username, password): def __init__(self, username, password):
''' '''
initial 就登入 initial 就登入

View File

@ -2,7 +2,7 @@ from api.tools import *
import requests import requests
from bs4 import BeautifulSoup from bs4 import BeautifulSoup
class NcnuMain(): class NcnuMainAPI():
def getAnno(self): def getAnno(self):
response = requests.get('https://www.ncnu.edu.tw/ncnuweb/ann/tabs.aspx?homeType=ncnu&unit=ncnu') response = requests.get('https://www.ncnu.edu.tw/ncnuweb/ann/tabs.aspx?homeType=ncnu&unit=ncnu')
block = find(response, 'div', param={'id': 'annNews'}) block = find(response, 'div', param={'id': 'annNews'})