Skip to content

stemalomd/grab-the-course

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 

Repository files navigation

grab-the-course

適用於逢甲選課系統https://course.fcu.edu.tw/的自動加選程式
程式功能:自動加選、衝堂加選、遇到異常(網路斷線、跳驗證碼...)自動重啟
加選頻率約1.4次/s
驗證碼辨識成功率約8成

不同方法比較

方法 人工 滑鼠腳本 此專案(用selenium) 用requests
加選頻率(times/sec) 0.034 0.45 1.4 30
優點 使用無難度 啟動一次可以持續加選2~3個小時 可以穩定運行/加選頻率不算太高,公開後對學校系統影響不大(?) 可以最優先搶到課
缺點 手指痛/對於很熱門的課完全無用 用來加選的電腦,無法做其他事/不穩定(網路斷線、跳驗證碼、動到畫面) 啟動前要手動修改狀態 加選頻率太高,對學校系統影響大,較無法公開

註:
人工加選頻率用一天3000次來算
滑鼠腳本加選頻率使用按鍵精靈來測試,加選間隔小於2.2秒容易跳驗證碼
用requests加選頻率30是依據此文,不知道真的假的

加選狀態圖

  1. 模式:加選新
  2. 模式:舊換新

Warning

本人不保證程式完全無bug,若因程式bug造成使用者任何損失,皆須使用者自行承擔

其他

本人已無使用此程式之需求,也不打算進行後續維護,如有需要歡迎fork到自己的github進行修改、優化、維護...,也歡迎公開分享自己修改後的版本

How to use

事前準備

環境:
python 3.10+

  1. 安裝相依模組
    pip3 install -r requirements.txt
  2. 安裝Tesseract OCR
    https://github.com/UB-Mannheim/tesseract/wiki
  3. 修改453行左右的安裝路徑為剛才安裝tesseract.exe的路徑
if __name__ == "__main__":
    os.environ["WDM_LOG_LEVEL"] = "0"
    pytesseract.pytesseract.tesseract_cmd = (
        r"你的安裝路徑..."
    )
  1. 255行左右填寫你的學號、密碼
def login():
    while 1:
        driver.get("https://course.fcu.edu.tw/")
        driver.find_element(By.XPATH, '//*[@id="ctl00_Login1_UserName"]').send_keys(
            "你的學號..."
        )
        driver.find_element(By.XPATH, '//*[@id="ctl00_Login1_Password"]').send_keys(
            "你的密碼..."
        )
  1. 457行左右填寫你要加選的項目
    • 填寫範例:
    info = [
    		{"模式": "加選新", "舊課": "0", "新課": "0123", "狀態": "新的選不到"},
    		{"模式": "舊換新", "舊課": "0001", "新課": "0002", "狀態": "舊課程"},
    ]
    • 允許填寫的值:
      模式:加選新/舊換新
      舊課:0/(四碼選課代號)
      新課:(四碼選課代號)
      狀態:舊課程/舊的選不到/新課程/新的選不到
      註:請勿填寫自己本系的必修課程
    • 填寫模式、舊課、新課:
      • 加選的課程無衝堂,想要加選0001
        模式:加選新 舊課:0 新課:0001
      • 加選的課程有衝堂,衝堂的課為0001,想加選0002
        模式:舊換新 舊課:0001 新課:0002
      • 想加選0001與0002,但是兩堂課衝堂,且如果搶到0001之後想繼續搶0002
        模式:舊換新 舊課:0001 新課:0002
    • 填寫狀態範例:
      • 模式:加選新 舊課:0 新課:0001
        課表無0001,狀態=新的選不到
        課表有0001,狀態=新課程(或是把這整項刪了)
      • 模式:舊換新 舊課:0001 新課:0002
        課表沒有0001與0002,狀態=舊的選不到 or 新的選不到(無差別)
        課表只有0001,狀態=舊課程
        課表只有0002,狀態=新課程(或是把這整項刪了)

運行程式前須知

  • 初次啟動前,需註解419行左右的兩行code,加選項目填一些不重要的課,然後運行程式並查看有無異常,確認無異常後,再去除註解並重新啟動
#options.add_argument("headless")
#options.add_argument("disable-gpu")
  • 程式重啟或是啟動前請核對加選項目與自己的課表,有需要時自行手動更改加選項目
  • 程式開始執行後,除非console一直跳warning開頭的訊息,才需要停止並重啟,除此之外網路斷線之類的其他情況皆不須重啟

About

fcu auto grab the course program(open source)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages