대학원생 리암의 블로그

KAIST 폭력예방 통합교육(윤리 및 안전 소과목) 매크로 본문

대학원

KAIST 폭력예방 통합교육(윤리 및 안전 소과목) 매크로

liam0222 2024. 7. 17. 18:57

카이스트 대학원 신입생들은 개강 전까지 폭력예방 통합교육을 수강해야 한다.

 

그런데 강의 수가 너무 많아서 영상이 끝날 때마다 다음걸 클릭하는게 여간 귀찮은게 아니었다. 

 

그래서 매크로를 검색해보니 다른 분께서 이미 작성하신 코드가 있었으나 실행 방식이 다소 복잡해보여 그냥 직접 javascript selenium을 이용해서 간단한 코드를 짜보았다.

 

Shell 1.

#%%
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get("https://humanrights.kaist.ac.kr/pages/contents/41")

 

Shell 2. 

#%%
for i in range(1,25):
    driver.execute_script(f"popup('popUpDiv', 'v{i}')")
    time.sleep(3)
    driver.execute_script("togglePlayPause()")
    time.sleep(3)
    driver.execute_script("toggleMute(true)")
    while True:
        try:
            alert = driver.switch_to.alert
            alert.accept()
            break
        except:
            continue

    time.sleep(3)

 

코드의 전문이다. 실행은 VS CODE IDE를 이용한다. VS코드를 사용하는 이유는 '#%%'를 앞에 붙이면 마치 colab이나 jupyter처럼 쉘별 실행이 가능해지기 때문이다. 따라서 단계별로 테스트할 때 유용하다. 우선 첫번째 쉘을 실행시킨다. 첫번째 쉘을 실행하면 크롬 브라우저에서 다음과 같은 페이지가 뜬다. 

 

 

여기서 로그인을 하고 학습하기 버튼을 눌러 강의 목록으로 들어가준다. 

 

그럼 강의 목록이 뜨는데 이때 두번째 쉘을 실행시키고 강의가 재생되는 동안 롤을 하면 된다. 코드가 궁금한 사람이 있을 수 있으니 조금 상세히 설명하면 다음과 같다. 

  • driver.get -> 해당 url로 접속
  • driver.exectue_script -> javascript 명령어를 실행
  • popup('popUpDiv', 'v{i}') -> i 번째 영상을 튼다
  • togglePlayPause() -> 영상 실행
  • toggleMute(true) -> 음소거
  • driver.switch_to.alert & alert.accept() -> 영상이 끝나서 수강 완료 알림창이 뜨면 자동해제

'대학원' 카테고리의 다른 글

Discrete Choice Model 설명 [1편]  (0) 2024.09.10
Closed Form  (2) 2024.09.04
EM-알고리즘의 수식적 이해  (1) 2024.09.03
Jensen's Inequality (옌센 부등식) 설명  (1) 2024.09.02
티스토리 LaTeX 사용  (6) 2024.08.29