nevikw39 / APCS_grade

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

APCS_grade

手刀查詢APCS成績ㄉ爬蟲 o'_'o

注意!!注意!!注意!!

請保持低調!!保持低調!!低調!!

我是沒差喇,高三生倒數學測中,以後也不會考惹XD

好好把握APCS還沒有 reCAPTCHA 的時代QQ

每一次APCS考完都要 15 天才可以查成績,到底是為什麼喇欸。這 15 天說長不長說短不短,卻總是令人煎熬難耐。每次查成績那天的早上十點,你是否也是懷抱著既期待又害怕的心情立刻打開手機狂刷??這樣實在太麻煩惹,對吧??

此爬蟲幫助您一鍵取得APCS成績並申請寄送PDF至信箱,同時提供 Telegram bot 通知的解決方案。

Requirements

  • Python 3
  • requests
  • BeautifulSoup 4

註冊APCS的 email 必須是 gmail 或者 GSuite(例如學校提供的帳號)。

另外,必須打開 「低安全性應用程式存取權」 方能使爬蟲得以藉由 IMAP 讀取驗證信。

假如您很在乎資安且已開啟 二步驟驗證 ,則可以使用「應用程式密碼」

Usage

main.py

送出表單、讀取驗證碼、得到成績,輸出並保存。

# Default, print grade and save as pickle, and you can use it by other Python scripts.
python3 main.py
# Save grade as both pickle and json so that you could use it for other purpose.
python3 main.py > grade.json

第一次使用時需輸入 ID 身分證字號、Email 註冊APCS的 EmailPasswordEmail 的密碼。

您的所有個資將以 picklePythonjson??)儲存在本機。

執行完畢後將結果以 JSON 格式輸出在 stdin 並儲存至 grade.pickle,俾後續操作。

send.py

將成績傳送至 Telegram 帳號。

python3 send.py

建立一個 Telegram bot,取得其 token 及自己的 chat_id。第一次執行時輸入之。

Exception

APCS log-in failed

可能是你 gmail 帳號或身分證有誤。

IMAP log-in failed

可能是你 gmail 帳號或密碼有誤,或者尚未開啟「低安全性應用程式存取權」

APCS verification failed

可能是你 gmail 信箱最上方的信恰好是上次手動查詢的驗證信,請確保已經刪除最上方的驗證信。

Examples

你懂的,像是先跑過一次記住帳號密碼後,用 at 讓他準時十點執行。

at -t 11020000 <<< "./apcs_grade.sh" # UTC time

About


Languages

Language:Python 99.4%Language:Shell 0.6%