diff --git a/.claude/settings.local.json b/.claude/settings.local.json new file mode 100644 index 0000000..7caa121 --- /dev/null +++ b/.claude/settings.local.json @@ -0,0 +1,8 @@ +{ + "permissions": { + "allow": [ + "Bash(pip3 install selenium 2>&1)", + "Bash(python3 lotto_auto_buy.py 2>&1)" + ] + } +} diff --git a/setup_scheduler.sh b/setup_scheduler.sh new file mode 100755 index 0000000..2899e13 --- /dev/null +++ b/setup_scheduler.sh @@ -0,0 +1,123 @@ +#!/bin/bash +# ───────────────────────────────────────────── +# 로또 자동 구매 스케줄러 설정 스크립트 +# 매주 금요일 오전 10시에 자동 실행 +# ───────────────────────────────────────────── + +echo "=== 로또 자동 구매 스케줄러 설정 ===" + +# 스크립트 경로 (본인 환경에 맞게 수정) +SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" +PYTHON_PATH=$(which python3) +SCRIPT_PATH="${SCRIPT_DIR}/lotto_auto_buy.py" + +echo "Python 경로: ${PYTHON_PATH}" +echo "스크립트 경로: ${SCRIPT_PATH}" + +# ───────────────────────────────────────────── +# 방법 1: crontab 등록 (Linux / macOS) +# ───────────────────────────────────────────── +setup_cron() { + echo "" + echo "[방법 1] crontab에 등록합니다..." + + # 환경변수 설정 포함 cron 항목 생성 + CRON_ENTRY="0 10 * * 5 cd ${SCRIPT_DIR} && LOTTO_USER_ID=\${LOTTO_USER_ID} LOTTO_USER_PW=\${LOTTO_USER_PW} ${PYTHON_PATH} ${SCRIPT_PATH} >> ${SCRIPT_DIR}/cron_output.log 2>&1" + + # 기존 crontab에 추가 (중복 방지) + (crontab -l 2>/dev/null | grep -v "lotto_auto_buy"; echo "${CRON_ENTRY}") | crontab - + + echo "crontab 등록 완료!" + echo "등록된 cron 항목:" + crontab -l | grep "lotto_auto_buy" + echo "" + echo "※ 실행 시간: 매주 금요일 오전 10:00" + echo "※ cron 형식: 분(0) 시(10) 일(*) 월(*) 요일(5=금)" +} + +# ───────────────────────────────────────────── +# 방법 2: systemd timer (Linux) +# ───────────────────────────────────────────── +setup_systemd() { + echo "" + echo "[방법 2] systemd timer를 설정합니다..." + + TIMER_DIR="${HOME}/.config/systemd/user" + mkdir -p "${TIMER_DIR}" + + # Service 파일 생성 + cat > "${TIMER_DIR}/lotto-auto-buy.service" << EOF +[Unit] +Description=로또 6/45 자동 구매 + +[Service] +Type=oneshot +WorkingDirectory=${SCRIPT_DIR} +Environment="LOTTO_USER_ID=%E{LOTTO_USER_ID}" +Environment="LOTTO_USER_PW=%E{LOTTO_USER_PW}" +ExecStart=${PYTHON_PATH} ${SCRIPT_PATH} +EOF + + # Timer 파일 생성 + cat > "${TIMER_DIR}/lotto-auto-buy.timer" << EOF +[Unit] +Description=매주 금요일 로또 자동 구매 타이머 + +[Timer] +OnCalendar=Fri *-*-* 10:00:00 +Persistent=true + +[Install] +WantedBy=timers.target +EOF + + # 활성화 + systemctl --user daemon-reload + systemctl --user enable lotto-auto-buy.timer + systemctl --user start lotto-auto-buy.timer + + echo "systemd timer 등록 완료!" + echo "상태 확인: systemctl --user status lotto-auto-buy.timer" +} + +# ───────────────────────────────────────────── +# 메뉴 +# ───────────────────────────────────────────── +echo "" +echo "스케줄러 방식을 선택하세요:" +echo " 1) crontab (간단, Linux/macOS 공통)" +echo " 2) systemd timer (Linux, 더 안정적)" +echo " 3) 설정하지 않음" +echo "" +read -p "선택 (1/2/3): " choice + +case $choice in + 1) setup_cron ;; + 2) setup_systemd ;; + 3) echo "스케줄러를 설정하지 않았습니다." ;; + *) echo "잘못된 입력입니다." ;; +esac + +echo "" +echo "─────────────────────────────────────────────" +echo "※ 중요: 환경변수를 먼저 설정하세요!" +echo "" +echo " export LOTTO_USER_ID='동행복권_아이디'" +echo " export LOTTO_USER_PW='동행복권_비밀번호'" +echo "" +echo " 또는 lotto_auto_buy.py 내 CONFIG를 직접 수정" +echo "─────────────────────────────────────────────" + +# ───────────────────────────────────────────── +# Windows 사용자를 위한 안내 +# ───────────────────────────────────────────── +echo "" +echo "※ Windows 사용자:" +echo " 작업 스케줄러(Task Scheduler)에서 아래와 같이 등록하세요." +echo " 1) 작업 스케줄러 열기 (taskschd.msc)" +echo " 2) '기본 작업 만들기' 클릭" +echo " 3) 트리거: 매주 → 금요일 선택 → 시간: 오전 10:00" +echo " 4) 동작: 프로그램 시작" +echo " 프로그램: python" +echo " 인수: ${SCRIPT_PATH}" +echo " 시작 위치: ${SCRIPT_DIR}" \ No newline at end of file diff --git a/로또_자동구매_가이드.md b/로또_자동구매_가이드.md new file mode 100755 index 0000000..a898012 --- /dev/null +++ b/로또_자동구매_가이드.md @@ -0,0 +1,98 @@ +# 로또 6/45 자동 구매 스크립트 + +매주 금요일 동행복권(dhlottery.co.kr)에서 로또 5게임을 자동 구매하는 스크립트입니다. + +## 사전 준비 + +### 1. 동행복권 계정 + +- [동행복권](https://dhlottery.co.kr) 회원가입 및 본인인증 완료 +- **예치금 충전** 필수 (매주 5,000원 이상 유지) + +### 2. Python 환경 + +```bash +# Python 3.8 이상 필요 +python3 --version + +# Selenium 설치 +pip install selenium +``` + +### 3. ChromeDriver + +Chrome 브라우저 115+ 버전은 자동으로 ChromeDriver를 관리합니다. +구버전 사용 시 [ChromeDriver 다운로드](https://chromedriver.chromium.org/downloads)에서 Chrome 버전에 맞는 드라이버를 설치하세요. + +## 설정 방법 + +### 방법 A: 환경변수 (권장) + +```bash +export LOTTO_USER_ID='동행복권_아이디' +export LOTTO_USER_PW='동행복권_비밀번호' +``` + +### 방법 B: 스크립트 직접 수정 + +`lotto_auto_buy.py`의 CONFIG 부분을 수정하세요: + +```python +CONFIG = { + "USER_ID": "내_아이디", + "USER_PW": "내_비밀번호", + "BUY_COUNT": 5, + "HEADLESS": True, +} +``` + +## 실행 + +### 수동 실행 (테스트) + +```bash +python3 lotto_auto_buy.py +``` + +### 자동 실행 (매주 금요일) + +**Linux/macOS — crontab:** + +```bash +bash setup_scheduler.sh +# 또는 직접 등록: +crontab -e +# 아래 줄 추가 (매주 금요일 오전 10시): +0 10 * * 5 cd /path/to/script && python3 lotto_auto_buy.py +``` + +**Windows — 작업 스케줄러:** + +1. `taskschd.msc` 실행 +2. 기본 작업 만들기 → 트리거: 매주 금요일 10:00 +3. 동작: `python lotto_auto_buy.py` + +## 구매 기록 + +구매 내역은 `lotto_log.json`에 자동 저장됩니다: + +```json +[ + { + "date": "2026-03-20 10:00:05", + "status": "success", + "games": [ + [3, 12, 18, 27, 35, 42], + [1, 7, 14, 23, 31, 40] + ] + } +] +``` + +## 주의사항 + +- **예치금 유지**: 잔액이 5,000원 미만이면 구매 실패. 정기적으로 충전하세요. +- **동행복권 판매 시간**: 매주 토요일 오후 8시에 판매 마감. 금요일 구매로 충분한 여유가 있습니다. +- **사이트 변경**: 동행복권 사이트 UI가 변경되면 셀렉터(CSS selector)를 업데이트해야 할 수 있습니다. +- **비밀번호 보안**: 환경변수 방식을 권장합니다. 스크립트에 직접 입력 시 Git에 커밋하지 않도록 주의하세요. +- **1회 최대 구매**: 인터넷 로또는 1회당 최대 10게임(10,000원)까지 구매 가능합니다.