Skip to content

Commit

Permalink
feat: argparse to typer (#98)
Browse files Browse the repository at this point in the history
  • Loading branch information
roeniss authored Feb 23, 2024
2 parents a7d0364 + 7c2fbb7 commit 5fbffc2
Show file tree
Hide file tree
Showing 41 changed files with 948 additions and 934 deletions.
5 changes: 3 additions & 2 deletions .pylintrc
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,11 @@ disable=
R0903, # too few public methods
W0718, # broad exception caught
W0707, # raise-missing-from
C2401, # non-ascii-name)
C2401, # non-ascii-name


[FORMAT]
max-line-length=180
good-names=i,j,k,f,e
disable=logging-fstring-interpolation
max-args=6
max-args=7
38 changes: 23 additions & 15 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,20 +7,27 @@
### 설치 밎 사용법

```sh
pip install dhapi # pip 최신 버전을 권장합니다: pip install --upgrade pip
dhapi buy_lotto645 --help # 로또6/45 구매 도움말 보기
dhapi buy_lotto645 -q # 자동모드로 5장 구매
pip install dhapi --upgrade # pip 최신 버전을 권장합니다: pip install --upgrade pip
dhapi --help # 기본 도움말 보기
dhapi buy-lotto645 --help # '로또6/45' 구매 명령어의 도움말 보기
dhapi buy-lotto645 -y # '로또6/45' 자동모드로 5장 구매 & 확인절차 스킵
```

## 구현된 기능

- [로또 6/45 구매](https://dhlottery.co.kr/gameInfo.do?method=gameMethod&wiselog=H_B_1_1) (`buy_lotto645`)
- 자동, 수동, 반자동 (일부 번호만 자동으로 할당) 모드로 구매 가능
- 한 번에 1 ~ 5장 구매 가능
- 여러 모드를 혼합해 구매 가능
- 구매 결과 (번호) 를 이메일로 전송 가능 (아래 고급 설정 참고)
- [예치금 현황 조회](https://dhlottery.co.kr/userSsl.do?method=myPage) (`show_balance`)
- 총예치금, 구매가능금액, 예약구매금액, 출금신청중금액, 구매불가능금액, 이번달누적구매금액 출력
- [로또6/45 구매](https://dhlottery.co.kr/gameInfo.do?method=gameMethod&wiselog=H_B_1_1) (`buy-lotto645`)
- 자동, 수동, 반자동 모드로 구매 가능합니다.
- 한 번에 최대 5장까지 구매 가능합니다.
- 매주 최대 5장까지 구매 가능합니다 (온라인 구매 제약사항입니다).
- 구매한 내역을 이메일로 전송할 수 있습니다. 고급 설정 섹션을 참고해주세요.
- [예치금 현황 조회](https://dhlottery.co.kr/userSsl.do?method=myPage) (`show-balance`)
- 현재 보유한 예치금 정보를 조회합니다.
- [고정 가상계좌 입금을 위한 세팅](https://dhlottery.co.kr/userSsl.do?method=myPage) (`assign-virtual-account`)
- 개인에게 할당된 가상계좌에 입금하는 형태로 예치금을 충전할 수 있습니다. 이 때 얼마를 입금할건지 사이트에서 미리 선택해두어야 하는데, 이 작업을 대신 수행합니다.
- 입금은 직접 진행해야 합니다.
- 간편 충전 기능은 구현되지 않았습니다.
- 복수 프로필 지정
- 두 개 이상의 프로필을 사용할 수 있습니다. 고급 설정 섹션을 참고해주세요.

## 고급 설정

Expand All @@ -43,6 +50,10 @@ password = "dhlotter_second_pw"

### 이메일로 결과 전송 하기

> [!IMPORTANT]
> 아래 세팅대로 진행한다면 구매 결과를 담은 이메일이 아주 높은 확률로 스팸 메일함에 들어갑니다. 이럴 경우 해당 메일을 찾아서 '스팸이 아님' 체크를 해야 이후 메일들이 일반 메일함에 들어갑니다.

`-e` 플래그로 수신할 이메일을 지정합니다. 이렇게 하면 **콘솔에 결과가 출력되지 않고 지정한 이메일로 전송됩니다.** 아래 세팅이 추가적으로 필요합니다.

무료로 이메일을 보내기 위해 [Mailjet](https://www.mailjet.com/)을 사용합니다. 가입한 후, API KEY, SECRET KEY 를 발급합니다 (https://app.mailjet.com/account/apikeys).
Expand All @@ -60,10 +71,7 @@ mailjet_sender_email = "YOUR_MAILJET_EMAIL"
...
```

필요한 프로필에만 세팅하면 됩니다.

> [!IMPORTANT]
> 위 세팅대로 따라온다면 결과 이메일이 아주 높은 확률로 스팸 메일함에 들어갑니다. 이럴 경우 해당 메일을 찾아서 '스팸이 아님' 체크를 해야 이후 메일들이 일반 메일함에 들어갑니다.
이메일 전송이 필요한 프로필에만 세팅하면 됩니다.

> [!WARNING]
> `mailjet_sender_email` 값은 '발신 이메일 주소'로 활용되며, Mailjet 회원가입에 사용한 이메일이 아닐 경우 추가 세팅을 해야됩니다.
Expand All @@ -78,7 +86,7 @@ mailjet_sender_email = "YOUR_MAILJET_EMAIL"

이 프로그램을 사용해서 1등에 당첨된다면, 저에게 꼭 1000만원을 기부해주시길 바랍니다.

<img alt="Toss Donation QR Code" src="./docs/toss_donation_qr.png" width="300" />
<img alt="Toss Donation QR Code" src="https://github.com/roeniss/dhlottery-api/blob/b4d616033099f4c0fe38a5360017465fc88ff618/docs/toss_donation_qr.png?raw=true" width="300" />

그리고 딱히 당첨된 적은 없지만 그래도 커피를 사주고 싶다면, 절대 망설이지 마십시오.

Expand Down
4 changes: 3 additions & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -16,5 +16,7 @@ urllib3==1.26.18
webencodings==0.5.1
tomli-w==1.0.0
mailjet-rest==1.3.4
tabulate==0.9.0
pytz==2024.1
typer==0.9.0
rich==13.7.0
pytest-mock==3.12.0
227 changes: 0 additions & 227 deletions src/dhapi/client/lottery_client.py

This file was deleted.

34 changes: 0 additions & 34 deletions src/dhapi/client/mailjet_email_client.py

This file was deleted.

File renamed without changes.
13 changes: 13 additions & 0 deletions src/dhapi/config/logger.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import logging
import sys

from rich.logging import RichHandler


def set_logger(is_debug):
_log_level = logging.DEBUG if is_debug else logging.INFO

logging.basicConfig(level=_log_level, format="%(message)s", datefmt="[%X]", handlers=[RichHandler()])
sys.tracebacklimit = 1000 if is_debug else 0

logging.debug(f"log level is set to {_log_level}, traceback limit is set to {sys.tracebacklimit}")
27 changes: 0 additions & 27 deletions src/dhapi/configuration/logger.py

This file was deleted.

File renamed without changes.
Loading

0 comments on commit 5fbffc2

Please sign in to comment.