歡迎來到 SchoolSoftAPI 文件網站

安裝

外部套件

本專案依靠 tesseract 處理圖形 captcha,因此需要安裝相關套件:

sudo apt install tesseract-ocr -y

Python 套件

本專案只在 Python 3.5+ 版本上測試過,建議使用 Python 3.5+ 以上版本運行。安裝建議使用 venv 標準函式庫建立虛擬環境安裝套件,在 Debian Stretch 中必須執行:

sudo apt install python3-venv -y

才能使用 venv 標準函式庫建立虛擬環境:

mkdir -p ~/venv
python3 -m venv ~/venv/schoolsoftapi
source ~/venv/schoolsoftapi/bin/activate
pip install schoolsoftapi

使用 API

from schoolsoftapi import SchoolSoftAPI
# 傳入的 1061 代表 106 學年度第 1 學期
api = SchoolSoftAPI('校務系統帳號', '校務系統密碼', '1061')
# 若 captcha 辨識失敗導致無法登入,等待 5 秒重試
api.login(wait=5)
# 傾印學生資料
api.dump_students()
# 傾印教師資料含職務
api.dump_teachers()
# 新增教師帳號
api.add_teacher('K123456789', '王大明', '男', datetime.now())
# 重設教師密碼
api.reset_teacher_password('K123456789', '王大明')
# 刪除教師教師帳號
api.delete_teacher('K123456789', '王大明', '男', datetime.now())

全誼校務系統非官方 API

class schoolsoftapi.SchoolSoftAPI(username, password, semester, baseurl='https://eschool.tp.edu.tw', logger=None)

透過 WEB UI 介接全誼校務系統的 API

__init__(username, password, semester, baseurl='https://eschool.tp.edu.tw', logger=None)

初始化物件

參數:
  • username (str) – 校務系統資訊組或系管師帳號
  • password (str) – 密碼
  • semester (str) – 學年度與學期,比如 106 學年度第 1 學期其值則為 『1061』
  • baseurl (str) – 校務系統網址
  • logger (logging.Logger) – logger 物件
add_teacher(identity, name, gender, birthday)

新增教師

參數:
  • identity (str) – 身份證字號或護照號碼
  • name (str) – 姓名
  • gender (str) – 性別,』男』 或 『女』
  • birthday (datetime) – 生日
傳回:

成功回傳 True,否則回傳 False

傳回型態:

bool

delete_teacher(identity, name, gender, birthday)

刪除教師

根據測試,應該只要提供身份證字號就可刪除,但為了完整性還是模擬送出所有欄位

參數:
  • identity (str) – 身份證字號或護照號碼
  • name (str) – 姓名
  • gender (str) – 性別,』男』 或 『女』
  • birthday (datetime) – 生日
傳回:

成功回傳 True,否則回傳 False

傳回型態:

bool

dump_students(output_format='raw')

將下載下來的學生 xls 取出需要的欄位轉成資料結構

參數:output_format (str) – 輸出的格式,若為 『raw』 代表原始資料結構, 若為 『csv』 則轉為 csv 格式
傳回:資料結構或是 csv 內容,端看 output_format 指定何種
dump_teachers(output_format='raw')

將下載下來的教師 xls 取出需要的欄位並對照職稱 csv 內容轉成資料結構

參數:output_format (str) – 輸出的格式,若為 『raw』 代表原始資料結構, 若為 『csv』 則轉為 csv 格式
傳回:資料結構或是 csv 內容,端看 output_format 指定何種
login(retry=True, wait=30)

登入校務系統

要登入全誼校務系統除了帳號密碼要正確以外,也必須通過 captcha。 我們使用外部指令 tesseract 辨識圖片,目前辨識率勉強可以接受, 這邊的做法是:需辨識成五位數字,才進行認證嘗試。 如果認證失敗,等待 wait 秒後重新嘗試上述步驟直至 retry 次數。

參數:
  • retry (int) – 認證失敗重新嘗試的次數。若為 True 代表不限制重試次數
  • wait (int) – 認證失敗中間等待的秒數
傳回:

若成功登入則傳回 True,否則傳回 False

傳回型態:

bool

reset_teacher_password(identity, name)

重設教師密碼

參數:
  • identity (str) – 身份證字號或護照號碼
  • name (str) – 姓名
傳回:

成功回傳 True,否則回傳 False

傳回型態:

bool