설명하기에 앞서...
현재 백준 허브는 자신이 푼 문제는 바로 업로드가 되지만, 백준 허브 등록 이전의 문제들은 깃허브 트래픽 과부화의 우려로 인해 백준 허브 제작자분이 막아놔 전체 업로드가 불가하다.
그래서 이런 문제를 해결하기 위해 임시적으로 파이썬의 webbrowser 모듈을 사용해 업로드 했으나,
이 아이디어를 좀 더 다듬어 프로그램화 시켜 배포하면
많은 사람이 나와 같은 문제를 겪지 않을 수 있을 것 같아 이 프로그램을 제작하게 되었다.
백준 허브 자동화 프로그램 (Baekjoon Hub Automation) 다운로드 링크
(zip 링크: https://github.com/mychan0926/Baekjoon-Hub-Automation/releases/tag/v1.0.4)
GitHub - mychan0926/Baekjoon-Hub-Automation
Contribute to mychan0926/Baekjoon-Hub-Automation development by creating an account on GitHub.
github.com
zip파일 같은 경우는 혹시나 컴퓨터나 크롬에서 경고메시지가 뜰 수 있습니다.
인증서를 구매하지 않아 뜨는 경고이므로 무시하셔도 됩니다.
프로그램에는 어떠한 악성코드도 있지 않으며,
그래도 불안하시면 코드를 보시거나,
가능하신 경우 코드를 다운받으시고 GUI.py를 실행하시고 exe 파일과 마찬가지의 과정을 거치시면 정상적으로 실행하시면 됩니다.
(악성 코드 만들고 싶어도 실력이 부족해서 못만들어요 ㅋㅋㅋ...)
적용법 (필독)
먼저, 위에서 파일을 받아주세요.
(exe파일과 driver 폴더를 같은 파일 안에 두셔야 합니다.)
다운 받으신 후, 압축을 풀고, driver 파일 내에 자신의 브라우저 버전과 맞는 크롬 드라이버를 넣어주세요.
드라이버 링크 : "https://chromedriver.chromium.org/downloads"
( 버전은 크롬 오른쪽위 별 3개 (프로필 오른쪽) 클릭후, 도움말, 왼쪽 하단의 Chrome 정보를 누르시면 됩니다.
또는 주소 링크 복사후 붙여넣기 "chrome://settings/help" )
기능
프로그램을 실행 하였을 경우, 사용자가 여태까지 백준에서 풀었던 모든 문제들을 자동으로 깃허브에 업로드가 가능하다.
다만, 직접적으로 백준 사이트에 들어가서 업로드 하는 방식이라 시간은 다소 소모된다.
기본 원리
기본원리는 프로그램에서 사용자에게 받은 Id, Pw를 selenium을 통해 백준 사이트에 입력 후, 해결 문제 목록 가져옴. 그 후, 해결 문제 목록을 주소로 변환, 사이트로 이동 후, 백준 허브를 통해 문제 정보를 GitHub에 입력. 이다.
물론 이 과정에서 id나 pw는 서버로 전송되지 않고, 로컬 메모리를 통해 값 전달용으로만 쓰인다.
이 프로젝트의 GUI는 PyQt5를 통해 구현했으며, 웹 브라우저를 컨트롤 하기 위해 selenium 프레임워크를 통해 웹 브라우저의 XPATH, CSS 주소등을 불러와 요소를 파악하는데 사용했다.
사용시 주의 사항 및 문제 발생 시 해결법
백준 허브 자동화 프로그램 사용시 간혹, 백준 로그인 중 구글의 reCAPTCHA 시스템에 걸리는 경우가 있는데,
이때는 수동 로그인을 통해 로그인을 한후, "수동로그인 후" 실행 체크박스 체크 후,
"프로그램 실행"을 눌러 주면 정상적으로 실행이 가능하다.
만약, 인터넷 또는 컴퓨터 성능의 문제로 인해 크롬 확장 프로그램인 "백준 허브"가 느리게 작동되어,
업로드가 되지 않을 경우, 페이지 이동 시간 (초) 을 조절 하여 속도를 맞추어 주면 정상작동이 가능하다.
또한, 프로그램 실행 후 실행 된 크롬 웹브라우저는 프로그램이 종료 될 때까지 절대 종료하면 안된다.
(최소화는 가능하다.)
프로젝트 실행 화면
주석
아마 배포용으로는 거의 처음 만드는 프로그램인데, 처음 만드는 만큼 어려움도 많았다.
셀레니움 내에서는 백준 허브 확장 프로그램을 자동으로 등록 시킬 수 있는 방법이 없었고,
pyqt5 내에서 지원하는 스레드 기능도 관련 블로그 글이 적어 적용이나 이해가 힘들었지만,
GPT-3를 이용하여 모르는 점을 찾거나 개선하여 좀 더 수월 했던 것 같다.
이번에 만들게 된 자동화 프로그램을 통해 셀레니움의 사용법을 익히고 다른 자동화 방법도 구현이 가능했었다.
그리고 이런 사용자 편의를 생각하며 만들다 보니, 예외를 처리하고, 스레드를 추가로 사용해 프로그램 지연없이
구동 가능하게 만들었고, 다음에도 사용자 편의를 생각해서 만들 수 있을 것 같다.
'기타 > 자료실' 카테고리의 다른 글
[매드게임즈타이쿤2] 폰트 관련 패치파일 (2021-07-13) (5) | 2021.06.12 |
---|---|
스팀에 코드 등록하는 가장 쉬운 방법 (0) | 2021.01.30 |
매드 게임즈 타이쿤2 한글패치 [2021-09-13] (게임 내 적용완료) (85) | 2021.01.25 |
[어몽어스] 어몽어스를 설치하는 방법 (0) | 2020.08.09 |