4.5 KiB
4.5 KiB
Bizmax Excel Downloader
이 디렉터리에는 hyun.bizmax.net, hyun2.bizmax.net 고객목록 엑셀을 기간별로 다운로드하는 스크립트가 들어 있습니다.
파일
bizmax-download-excel.ts: 실제 다운로드 로직convert-xlsx-to-csv.ts: 다운로드된.xlsx전체를 하나의.csv로 합침compare-csv-phone.ts:a.csv,b.csv를 전화번호 기준으로 비교run-bizmax.sh:hyun,hyun2,all선택 실행run-hyun.sh:hyun.bizmax.net전용 실행run-hyun2.sh:hyun2.bizmax.net전용 실행run-convert-csv.sh: 다운로드된.xlsx전체를 하나의.csv로 합침run-compare-csv.sh:a.csv,b.csv를 전화번호 기준으로 비교.env.example: 환경변수 예시
1. 환경 설정
.env.example를 복사해서 .env 파일을 만듭니다.
cp .env.example .env
.env 예시:
BIZMAX_ID=JH1204
BIZMAX_PASSWORD=12345
BIZMAX_RANGE_START=2016-01-01
BIZMAX_BATCH_MONTHS=3
BIZMAX_BASE_URLS=https://hyun.bizmax.net,https://hyun2.bizmax.net
BIZMAX_OUTPUT_DIR=/home/pure13700/project/download/output
2. 의존성 설치
최초 1회:
npm install
현재 package.json에는 axios, cheerio, xlsx가 들어 있습니다.
3. 실행 방법
두 사이트 모두 실행:
./run-bizmax.sh all
hyun.bizmax.net만 실행:
./run-bizmax.sh hyun
또는:
./run-hyun.sh
hyun2.bizmax.net만 실행:
./run-bizmax.sh hyun2
또는:
./run-hyun2.sh
직접 TypeScript 파일 실행:
node --experimental-strip-types ./bizmax-download-excel.ts
이 경우 .env는 자동 로드되지 않으므로, 셸에서 환경변수를 먼저 export 하거나 run-*.sh 사용을 권장합니다.
4. 동작 방식
- 로그인
- 고객목록 진입
2016-01-01부터 현재 날짜까지 3개월 단위로 조회- 각 기간별 조회 결과가
0건이면 건너뜀 1건 이상이면 첫 번째 엑셀 다운로드- 파일명에 사이트명과 기간을 붙여 저장
예시 출력:
[hyun_bizmax_net] SKIP 2016-01-01~2016-03-31 (0건)
/home/pure13700/project/download/output/hyun_bizmax_net_현대생활건강_프로그램_고객목록_2016-04-01_2016-06-30.xlsx
5. 저장 위치
기본 저장 위치:
/home/pure13700/project/download/output
변경하려면 .env의 BIZMAX_OUTPUT_DIR 값을 수정합니다.
CSV 저장 위치 기본값:
/home/pure13700/project/download/output/csv
변경하려면 환경변수 BIZMAX_CSV_DIR를 사용합니다.
6. XLSX -> CSV 변환
다운로드된 전체 .xlsx를 하나의 .csv로 합치기:
./run-convert-csv.sh
또는:
node --experimental-strip-types ./convert-xlsx-to-csv.ts
다른 CSV 출력 폴더를 쓰려면:
BIZMAX_CSV_DIR=/home/pure13700/project/download/output/csv node --experimental-strip-types ./convert-xlsx-to-csv.ts
기본 출력 파일:
/home/pure13700/project/download/output/csv/bizmax-all.csv
파일명을 바꾸려면:
BIZMAX_CSV_NAME=my-all.csv node --experimental-strip-types ./convert-xlsx-to-csv.ts
동작 방식:
output/아래의.xlsx파일들을 찾음- 각 워크시트를 읽음
- 모든 데이터를 하나의 CSV로 합침
- 앞에
source_file,source_sheet컬럼을 추가함
참고:
.xlsx파싱은xlsx패키지로 처리합니다.- 모든 파일의 헤더 구조가 동일하다는 전제를 두는 편이 안전합니다.
7. 주의 사항
- 계정이 SMS 추가 인증을 요구하면
axios만으로는 완료되지 않습니다. - 사이트 구조가 바뀌면 hidden input 이름이나 다운로드 파라미터도 같이 바뀔 수 있습니다.
- 장기간 전체 다운로드라 실행 시간이 꽤 걸릴 수 있습니다.
8. CSV 전화번호 비교
기본 실행:
COMPARE_FILE_A=./a.csv COMPARE_FILE_B=./b.csv ./run-compare-csv.sh
또는:
COMPARE_FILE_A=./a.csv COMPARE_FILE_B=./b.csv node --experimental-strip-types ./compare-csv-phone.ts
기본값:
COMPARE_MODE=intersection:a.csv와b.csv에 모두 있는 전화번호만 출력COMPARE_PHONE_COL_A=phoneCOMPARE_PHONE_COL_B=phone
a.csv에만 있는 전화번호만 뽑으려면:
COMPARE_FILE_A=./a.csv COMPARE_FILE_B=./b.csv COMPARE_MODE=only_a node --experimental-strip-types ./compare-csv-phone.ts
출력 파일 기본값:
./compare-intersection.csv