refactor: 코드 정리 및 불필요한 주석 제거
This commit is contained in:
8
.claude/settings.local.json
Normal file
8
.claude/settings.local.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"permissions": {
|
||||
"allow": [
|
||||
"Bash(pip3 install selenium 2>&1)",
|
||||
"Bash(python3 lotto_auto_buy.py 2>&1)"
|
||||
]
|
||||
}
|
||||
}
|
||||
123
setup_scheduler.sh
Executable file
123
setup_scheduler.sh
Executable file
@@ -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}"
|
||||
98
로또_자동구매_가이드.md
Executable file
98
로또_자동구매_가이드.md
Executable file
@@ -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원)까지 구매 가능합니다.
|
||||
Reference in New Issue
Block a user