Skip to content

hyun-hyang/sixpc_reservation

Repository files navigation

Sixpc Reservation Bot

Sixpc Reservation Bot은 Selenium을 이용해 자동으로 PC실 예약을 진행하는 스크립트입니다. 이 봇은 예약 대상 요일(내일이 월요일 또는 수요일/목요일)에 맞춰 자동으로 예약 페이지에 로그인하고, 예약 정보를 입력한 후 예약을 진행합니다. 또한 예약 완료 여부를 Discord 웹훅을 통해 알림으로 전달합니다.

주요 기능

  • 자동 로그인 및 예약

예약 페이지에 자동으로 로그인하여 예약 시간을 설정하고 예약을 진행합니다.

  • 원하는 시간에 맞춰 예약 가능

전날 오전9시에 예약이 가능해지므로 원하는 시간을 미리 설정해두며, 매주 원하는 요일의 그 전날 예약이 실행됩니다. 현재 기준은,

  • 내일이 월요일인 경우: 15시 ~ 17시

  • 내일이 수요일인 경우: 12시 ~ 14시 으로 맞추어져 있으며, 원하는 요일과 시각에 맞춰 예약이 가능합니다.

  • 스케줄링

schedule 라이브러리를 사용해 예약 전날(일요일, 화요일)에 자동 실행되도록 스케줄링합니다.

  • 로그 관리

예약 진행 상황과 오류 정보를 로그 파일(logs/reservation.log)로 저장하며, 일정 기간이 지난 로그는 자동으로 삭제됩니다.

  • Discord 알림

예약 성공 또는 실패 시, Discord 웹훅을 통해 알림 메시지를 전송합니다.

필수 요구 사항

  • Python 3.6 이상
  • Selenium
  • Firefox 브라우저 및 Geckodriver (Selenium 사용 시 필요)
  • 기타 Python 패키지: python-dotenv, schedule, requests

설치 및 설정

  1. 패키지 설치

프로젝트 루트 디렉토리에서 다음 명령어로 필요한 라이브러리를 설치합니다.

pip install -r requirements.txt
  1. 환경 변수 설정

프로젝트 루트에 .env 파일을 생성하거나 .env.example 파일을 참고하여 환경 변수를 설정합니다.

필수 환경 변수:

  • USER_ID: 예약 사이트 로그인용 아이디
  • USER_PW: 예약 사이트 로그인용 비밀번호
  • DISCORD_WEBHOOK_URL: Discord 알림 전송용 웹훅 URL
  1. Firefox 및 Geckodriver 준비 Selenium이 Firefox를 사용할 수 있도록 Firefox 브라우저와 Geckodriver가 설치되어 있고, 시스템 PATH에 추가되어 있는지 확인하세요.

사용 방법

로컬 실행

환경 변수와 패키지 설치 후, 터미널에서 아래 명령어를 실행합니다.

python scheduler.py

스크립트는 예약 대상 요일에 맞춰 자동으로 예약을 진행하며, 실행 로그는 logs 폴더에 저장됩니다.

Docker를 이용한 실행

  1. Docker와 Docker Compose가 설치되어 있는지 확인합니다.
  2. 프로젝트 루트 디렉토리에서 다음 명령어로 컨테이너를 실행합니다.
docker-compose up -d
  1. 컨테이너가 백그라운드에서 실행되며, docker-compose.yml에 정의된 환경 변수와 설정에 따라 자동으로 예약 작업이 수행됩니다.

스케줄링

scheduler.py는 아래 일정에 따라 예약을 실행합니다.

  • 일요일 오전 09:02 – 다음 날(월요일)이 예약 대상일 경우 예약 실행
  • 화요일 오전 09:02 – 다음 날(수요일)이 예약 대상일 경우 예약 실행

로그 관리

  • 로그는 logs 폴더에 저장되며, TimedRotatingFileHandler를 통해 매일 새로운 로그 파일이 생성됩니다.
  • 30일이 지난 로그 파일은 자동으로 삭제되어 디스크 공간을 관리합니다.

문제 해결

  • 환경 변수 미설정 오류
    • .env 파일에 USER_ID, USER_PW, DISCORD_WEBHOOK_URL 등이 정확하게 설정되었는지 확인하세요.
  • Selenium 관련 오류
    • Firefox 및 Geckodriver가 올바르게 설치되고 PATH에 포함되어 있는지 확인하세요.
  • 예약 실패 또는 알림 미전송 예약 대상 요일이 맞는지, 웹사이트의 변경 사항이 없는지 확인하고, 로그 파일을 통해 오류 메시지를 검토하세요.

기여 및 라이선스

  • 기여를 원하시면 이 리포지토리를 포크한 후 풀 리퀘스트(PR)를 보내주시기 바랍니다.
  • 본 프로젝트는 MIT 라이선스를 따릅니다.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors