KAIST Safety Course Bot

A bot for automatically completing the KAIST safety course.

This bot makes viewing the (quite annoying) lab safety videos automatic, so you don’t have to click many times on the videos that you need to see to complete the course. Also, considering that as of the time of writing the quiz can’t be failed, the bot can additionally complete it too πŸ˜€

App Screenshot

Image

Usage

First, choose you target courses in the KAIST Safety Website. Then:

  • For Windows/Mac users:
  1. We will be using Chrome and thus the chromedriver needs to be installed and moved in the right path (look it up on Google for installation help depending on your system).
  2. From the Release Page, download and run files that fit your operating system.
  3. Run the executable file
  4. Modify settings (have a look at the Configuration Settings). NOTE: you need to modify the driver_path with the path where chromedriver is saved
  5. Enjoy!
  • For Linux users (or developers): We will be using Selenium for automating the webpages. The first step is to install it along with the requirements:
pip install -r requirements.txt

then, run

python kaist-safety-course-bot.py

Configuration Settings

The bot will ask for a few configuration inputs:

  • answer_quiz: (default=true): if true, the bot will also answer the quiz for you
  • driver_path: (default=/usr/bin/chromedriver) your chromedriver path (look at Setup above)
  • mute_video (default=true) mute video
  • target_webpage (default=’https://safety.kaist.ac.kr/main/main.do‘) target page
  • username (default=’YOUR_USERNAME’) your KAIST username
  • video_id (default=0) the video you want to watch signed with ‘μ •κΈ°’ starting on the left

A config.yaml file will be saved so that you don’t need to re-add these again. You should then see some webpages automatically popping up and doing stuff!

Important Note

The scope of these scripts is NOT to disregard lab safety, which is extremely important for researchers! The purpose is mainly to automate some boring stuff for fun – besides, don’t you feel like a chad cheating the system?

On a serious note, most people just find it annoying having to listen to mandatory courses they are not interested in so they skip them manually. The exam can just be passed by failing the first time and completing the answers after knowing the results. So my question is: does this make sense? Why not just automate this tedious and – for most – time-wasting process?

PS: I’m not responsible for inappropriate use of this software of course πŸ˜‰ Feel free to contact me anytime though if you need help or have some feedback

Known Issues

  • When the quiz is passed (>=60 points scored) the bot gets stuck since it cannot find the “NEXT” button. In this case, check if the quiz has been passed and you can stop the script with Ctrl+C. This could be fixed by checking the page source for keywords related to the completion.
  • Only Easy Authentication works for now (κ°„νŽΈ 2단계 인증), so you need to set it up first Setup instructions
  • After answering the quiz, the bot crashes: if it does though good news, you should have completed the lesson πŸ˜‰

Changelog

  • v0.2.0: new GUI
    • Added GUI with PySimpleGUI
    • In-app help and link
    • Add stoppable thread for selenium driver
    • Source code polishing
    • Misc. fixes
  • v0.1.0: first release

Contribute

Feel free to contribute and open Issue/PRs!

Here are some ideas of things to be done:

  • Create executable for Windows/Mac
  • Add GUI
  • Automate chromedriver installation
  • Automatic course selection (everything would be automatic this way)
  • Add other authentication methods if user does not have Easy Auth
  • Fix final step: although the quiz is answered correctly, the user does not have any prompt about the finished course since the bot crashes
  • Progress bar or better progress print – now each second there is a bit ugly printing
  • Add tests for Windows version
  • Add tests for Mac version
  • Add tests for Linux version
  • … Any additional feedback!

You may also try reusing some code for automating something else ^^


PS: the original scope was to save time, but I took much longer to create this bot rather than just clicking on the screen myself and remembering the answers kkk. Hopefully though, it will save other people’s time!

GitHub

View Github