{"_id":"k-dhlottery-api","name":"k-dhlottery-api","dist-tags":{"latest":"0.2.3"},"versions":{"0.2.3":{"name":"k-dhlottery-api","version":"0.2.3","description":"동행복권 비공식 API (Node.js)","main":"dist/index.js","bin":{"dhapi":"dist/cli.js"},"scripts":{"build":"tsc","start":"node dist/cli.js","cli":"node dist/cli.js","server":"node dist/server.js","api":"node dist/server.js","test":"jest","lint":"eslint src --ext .ts","lint:fix":"eslint src --ext .ts --fix","clean":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"","prepublishOnly":"npm run build"},"keywords":["donghaeng","lottery","lotto645","api","korean"],"author":"","license":"MIT","repository":{"type":"git","url":"git+https://github.com/roeniss/dhlottery-api.git"},"bugs":{"url":"https://github.com/roeniss/dhlottery-api/issues"},"homepage":"https://github.com/roeniss/dhlottery-api#readme","engines":{"node":">=18"},"publishConfig":{"access":"public"},"dependencies":{"@iarna/toml":"^2.2.5","axios":"^1.6.0","axios-cookiejar-support":"^5.0.0","chalk":"^5.3.0","cheerio":"^1.0.0-rc.12","cli-table3":"^0.6.3","commander":"^11.1.0","express":"^4.18.2","node-forge":"^1.3.1","readline-sync":"^1.4.10","tough-cookie":"^4.1.0"},"devDependencies":{"@types/express":"^4.17.21","@types/jest":"^29.5.11","@types/node":"^20.10.0","@types/node-forge":"^1.3.14","@types/readline-sync":"^1.4.8","@types/tough-cookie":"^4.0.5","eslint":"^8.56.0","@typescript-eslint/eslint-plugin":"^6.19.0","@typescript-eslint/parser":"^6.19.0","jest":"^29.7.0","ts-jest":"^29.1.1","typescript":"^5.3.0"},"_id":"k-dhlottery-api@0.2.3","gitHead":"e2dc3abda196c2269eba831012df2d2f884b092a","types":"./dist/index.d.ts","_nodeVersion":"20.20.0","_npmVersion":"10.8.2","dist":{"integrity":"sha512-+sRs5ntzVdxksgihxwpJ82QZg2qxTbmWiNNdRkUE/++eA+ESVQoaMpIBhosTD139nrKAKh+i/wPpBjtKjmatog==","shasum":"60079ff329c68f9b2395b98bef08ca9347ea0514","tarball":"https://registry.npmjs.org/k-dhlottery-api/-/k-dhlottery-api-0.2.3.tgz","fileCount":31,"unpackedSize":65149,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIDCV7KRsJzMHilFj8ZBws9frmvMvxJgHyFWu59Bi2K7sAiBy71RhRCgRAqPRE0nsw8MzajjyHvcH3+xJJfCx+0p4VQ=="}]},"_npmUser":{"name":"hdh0926","email":"hdh0926@naver.com"},"directories":{},"maintainers":[{"name":"hdh0926","email":"hdh0926@naver.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/k-dhlottery-api_0.2.3_1772361050983_0.6040470417799744"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-01T10:30:50.848Z","0.2.3":"2026-03-01T10:30:51.112Z","modified":"2026-03-01T10:30:51.421Z"},"maintainers":[{"name":"hdh0926","email":"hdh0926@naver.com"}],"description":"동행복권 비공식 API (Node.js)","homepage":"https://github.com/roeniss/dhlottery-api#readme","keywords":["donghaeng","lottery","lotto645","api","korean"],"repository":{"type":"git","url":"git+https://github.com/roeniss/dhlottery-api.git"},"bugs":{"url":"https://github.com/roeniss/dhlottery-api/issues"},"license":"MIT","readme":"# 비공식 동행복권 API (Node.js)\n\n[동행복권](https://dhlottery.co.kr/) 사이트를 터미널에서 이용할 수 있게 랩핑한 API입니다.  \n원본 Python 프로젝트 [roeniss/dhlottery-api](https://github.com/roeniss/dhlottery-api)를 Node.js로 마이그레이션한 버전입니다.\n\n## 요구사항\n\n- Node.js 18 이상\n\n## 설치 및 사용법\n\n### npm 패키지로 설치 (배포 후)\n\n```bash\nnpm install -g k-dhlottery-api\n# 또는\nnpx k-dhlottery-api --help\n\ndhapi buy-lotto645 -y\n```\n\n설치 후 실행 명령어는 `dhapi`입니다 (패키지 이름은 `k-dhlottery-api`).\n\n### 소스에서 설치\n\n```bash\ngit clone <this-repo>\ncd k-dhlottery-api\nnpm install\nnpm run build\n\n# 기본 도움말\ndhapi --help\n# 또는\nnode dist/cli.js --help\n\n# 로또6/45 구매 도움말\ndhapi buy-lotto645 --help\n\n# 자동모드 5장 구매 & 확인절차 스킵\ndhapi buy-lotto645 -y\n```\n\n전역 설치 후 사용:\n\n```bash\nnpm link\ndhapi buy-lotto645 -y\n```\n\n## 구현된 기능들\n\n- [로또6/45 구매](https://dhlottery.co.kr/gameInfo.do?method=gameMethod&wiselog=H_B_1_1) (`buy-lotto645`)\n  - 자동, 수동, 반자동 모드로 구매 가능합니다.\n  - 한 번에 최대 5장까지 구매 가능합니다.\n  - 매주 최대 5장까지 구매 가능합니다 (동행복권 측의 온라인 구매 관련 정책입니다).\n- [예치금 현황 조회](https://dhlottery.co.kr/userSsl.do?method=myPage) (`show-balance`)\n  - 현재 보유한 예치금 정보를 조회합니다.\n- [고정 가상계좌 입금을 위한 세팅](https://dhlottery.co.kr/userSsl.do?method=myPage) (`assign-virtual-account`)\n  - 개인에게 할당된 가상계좌에 입금하는 형태로 예치금을 충전할 수 있습니다. 이 때 얼마를 입금할건지 사이트에서 미리 선택해두어야 하는데, 이 작업을 대신 수행합니다.\n  - 입금은 직접 진행해야 합니다.\n  - 간편 충전 기능은 구현되지 않았습니다.\n\n### 유틸성 기능들\n\n- 복수 프로필 지정\n  - 두 개 이상의 프로필을 사용할 수 있습니다. 고급 설정 섹션을 참고해주세요.\n- 프로필 목록 조회 (`show-profiles`)\n  - 설정된 프로필 이름들을 확인할 수 있습니다.\n\n## 고급 설정\n\n### 프로필 (계정) 설정\n\n> [!NOTE] 최초 프로그램을 실행할 때 프로필 정보를 세팅하는 과정이 진행됩니다. 이 섹션에선 직접 프로필 정보 파일을 수정하는 법을 안내합니다.\n\n`~/.dhapi/credentials` (Windows: `%USERPROFILE%\\.dhapi\\credentials`) 파일을 사용해 프로필 정보를 수정하거나 여러 계정을 설정할 수 있습니다. toml 포맷을 사용하고 있으며, 아래와 같은 형식으로 작성할 수 있습니다.\n\n```toml\n[default]\nusername = \"dhlotter_id\"\npassword = \"****\"\n\n[another_profile]\nusername = \"dhlotter_second_id\"\npassword = \"****\"\n```\n\n이후 `-p` 플래그로 프로필을 골라 사용합니다.\n\n## 명령어 예시\n\n```bash\n# 자동 5장 (기본)\ndhapi buy-lotto645\n\n# 자동 1장\ndhapi buy-lotto645 \"\"\n\n# 수동 1장\ndhapi buy-lotto645 \"1,2,3,4,5,6\"\n\n# 반자동 1장 (1,2,3 고정)\ndhapi buy-lotto645 \"1,2,3\"\n\n# 수동 1장 + 반자동 1장\ndhapi buy-lotto645 \"1,2,3,4,5,6\" \"7,8,9\"\n\n# 확인 없이 자동 5장\ndhapi buy-lotto645 -y\n\n# 예치금 조회\ndhapi show-balance\n\n# 구매 내역 (최근 14일)\ndhapi show-buy-list -f json\n\n# 기간 지정\ndhapi show-buy-list -s 20250101 -e 20250131\n```\n\n## 백엔드 API 서버 (REST API)\n\nCLI 외에 HTTP API 서버로 같은 기능을 사용할 수 있습니다.\n\n```bash\nnpm run server\n# 포트 지정 (Windows: set PORT=4000 && npm run server)\nPORT=4000 npm run server\n```\n\n| 메서드 | 경로 | 설명 |\n|--------|------|------|\n| GET | `/api/profiles` | 프로필 목록 |\n| GET | `/api/balance` | 예치금 현황 (query: `profile`) |\n| POST | `/api/buy-lotto645` | 로또 구매 (body: `profile`, `tickets`, `skipConfirm`) |\n| GET | `/api/buy-list` | 구매 내역 (query: `profile`, `format`, `startDate`, `endDate`) |\n| POST | `/api/assign-virtual-account` | 가상계좌 세팅 (body: `profile`, `amount`) |\n\n성공 시 `{ \"success\": true, \"data\": ... }`, 실패 시 `{ \"success\": false, \"error\": \"메시지\" }` 형식입니다.\n\n## npm 패키지 배포\n\n이 프로젝트를 npm에 배포하려면:\n\n1. [npmjs.com](https://www.npmjs.com/) 회원가입 후 `npm login`\n2. 패키지 이름: 이 프로젝트는 `k-dhlottery-api`로 npm에 배포됩니다. 스코프 패키지(예: `@내계정/dhapi`)로 쓰려면 `name`을 변경하면 됩니다.\n3. 버전 업데이트 후 배포:\n\n```bash\nnpm run build\nnpm test\nnpm publish\n```\n\n- `prepublishOnly` 스크립트로 publish 전에 자동으로 `npm run build`가 실행됩니다.\n- 스코프 패키지(`@xxx/dhapi`)로 배포할 때는 `npm publish --access public`이 필요할 수 있습니다. (`publishConfig.access`가 이미 `public`으로 설정되어 있음)\n\n배포 전에 포함되는 파일 확인: `npm pack --dry-run`\n\n### GitHub Actions로 태그 푸시 시 자동 배포\n\n`v*` 형태의 태그를 푸시하면 자동으로 npm에 배포됩니다.\n\n1. **npm 인증 토큰 발급**  \n   [npm → Access Tokens](https://www.npmjs.com/account/tokens)에서 \"Generate New Token\" → \"Automation\" 또는 \"Classic\" 선택 후 토큰 복사.\n\n2. **GitHub 저장소에 시크릿 추가**  \n   저장소 **Settings → Secrets and variables → Actions**에서 New repository secret 추가:\n   - Name: `NPM_TOKEN`\n   - Value: 위에서 복사한 npm 토큰\n\n3. **버전 올리고 태그 푸시**\n\n```bash\n# package.json의 version 수정 후 (예: 1.0.1)\ngit add package.json\ngit commit -m \"chore: release 1.0.1\"\ngit tag v1.0.1\ngit push origin main\ngit push origin v1.0.1\n```\n\n태그 `v1.0.1`을 푸시하면 `.github/workflows/publish-npm.yml`이 실행되어 빌드·테스트 후 npm에 publish됩니다.\n\n## 기부하기\n\n이 프로그램을 사용해서 1등에 당첨된다면, [원작자 roeniss](https://github.com/roeniss)에게 꼭 1000만원을 기부해주시길 바랍니다.\n\n원본 Python 프로젝트: [Buy Me A Coffee](https://www.buymeacoffee.com/roeniss)\n\n## 기여하기\n\n기여는 대환영합니다! [CONTRIBUTING.md](docs/CONTRIBUTING.md) 파일을 참고해주세요.\n\n## 라이선스\n\nMIT. 원본 [dhlottery-api](https://github.com/roeniss/dhlottery-api)는 Apache-2.0 라이선스입니다.\n","readmeFilename":"README.md","_rev":"1-e91603ab813936a082c471dbabedd0b1"}