경제

북앤라이프 상품권 충전 자동입력 파이썬 코드

상테크를 하기 위해 상품권을 대량으로 구매하면, 상품권이 수십장이 되기 때문에, 이걸 충전하고 현금화 하는 과정이 상당히 많은 시간이 소요된다. 특히, 일일이 수작업으로 입력을 한다 했을 때, 오타도 있을 수 있기에 비교 대조해가며 입력해야 하는데, 눈 까지 침침해지면서 정말이지 곤욕이다. 이런 단순하고 반복적인 일은 컴퓨터가 정말 정확하게 잘 처리한다. 파이썬으로 북앤라이프 상품권 번호 자동입력 코드를 간단하게 개발해봤다.

북앤라이프 상품권 충전 자동입력 코드는 두 부분으로 구성된다. 하나는 SMS에서 백업한 XML 파일에서 상품권번호와 인증번호를 추출하는 부분이고, 다른 하나는 북앤라이프 웹사이트에서 자동충전을 도와주는 부분이다.

[2024년 1월 5일 현재 잘 작동]

1. XML 파일에서 상품권번호와 인증번호 추출

먼저, 백업은 구글 안드로이드 기준 SMS Backup & Restore 앱을 이용해 문자 백업을 진행했다.

XML 파일에서 상품권번호와 인증번호 추출 파이썬 코드

import xml.etree.ElementTree as ET

# XML 파일 경로 지정
xml_file = 'giftcard/booknlife/sms.xml'

def extract_info(xml_file):
    try:
        # XML 파일 파싱
        doc = ET.parse(xml_file)
        root = doc.getroot()
        mms = root.findall("mms")

        for i, m in enumerate(mms, 1):
            parts = m.find("parts")  # 각 'mms' 요소에 대한 'parts' 찾기 (하나만 가정)
            if parts is not None:
                for part in parts.findall("part"):
                    # 'part' 요소가 텍스트인 경우만 처리
                    if part.attrib.get("ct") == "text/plain":  
                        text = part.attrib.get('text')
                        if text:
                            lines = text.split('\n')
                            pin_n, pin_4 = "", ""
                            for line in lines:
                                # 상품권번호 추출
                                if '상품권번호' in line:
                                    pin_n = line.split(': ')[1].strip()
                                # 인증번호 추출 (4자리 숫자만)
                                elif '인증번호' in line and len(line.split(': ')[1].strip()) == 4:
                                    pin_4 = line.split(': ')[1].strip()
                            
                            # 상품권번호와 인증번호가 모두 추출된 경우 출력
                            if pin_n and pin_4:
                                print(f"상품권번호: {pin_n} 인증번호: {pin_4}")

            # 5개의 'mms'를 처리할 때마다 구분선 출력
            if i % 5 == 0:
                print('------------------------------')

    # XML 파싱 오류 처리
    except ET.ParseError as e:
        print(f"XML 파싱 오류: {e}")
    # 기타 예외 처리
    except Exception as e:
        print(f"오류 발생: {e}")

# XML 파일에서 정보 추출
extract_info(xml_file)

2. 북앤라이프 웹사이트 자동 충

pyautogui와 keyboard 라이브러리를 이용해, 이른바 오토마우스 형식으로 프로그램을 개발했다.

북앤라이프 웹사이트 자동 충전 파이썬 코드

import pyautogui
import time
import re
import keyboard

# 상품권번호와 인증번호 최대 20개까지 동시 입력
raw_data = """
상품권번호: 9580613396817252 인증번호: 6264
상품권번호: 6065284996332898 인증번호: 5537
상품권번호: 2957902157690847 인증번호: 4316
상품권번호: 8659512797736897 인증번호: 7812
상품권번호: 3206577542285569 인증번호: 3936
상품권번호: 0013303130092941 인증번호: 1082
상품권번호: 9762527603357423 인증번호: 9860
상품권번호: 5997636008268112 인증번호: 8757
상품권번호: 8214934972978261 인증번호: 3536
상품권번호: 8573994843415960 인증번호: 7571
상품권번호: 1904959876058790 인증번호: 3426
상품권번호: 5248341821690276 인증번호: 1388
상품권번호: 7200462883741703 인증번호: 8117
상품권번호: 4517760231248127 인증번호: 8567
상품권번호: 5798544236263175 인증번호: 4726
상품권번호: 7872786798310634 인증번호: 2784
상품권번호: 2392508491724485 인증번호: 0374
상품권번호: 1657614429252740 인증번호: 3799
상품권번호: 7461772017854881 인증번호: 7330
상품권번호: 3305049519145471 인증번호: 6736
"""

# 정규 표현식을 사용하여 상품권번호와 인증번호 추출
vouchers = []
for line in raw_data.strip().split('\n'):
    match = re.search(r'상품권번호: (\d+) 인증번호: (\d+)', line)
    if match:
        pin, auth = match.groups()
        vouchers.append({"pin": pin, "auth": auth})

running = False  # 스크립트 실행 상태

def input_vouchers():
    global running
    running = True
    for voucher in vouchers:
        if not running:
            break
        input_voucher(voucher["pin"], voucher["auth"])
        time.sleep(1)  # 각 입력 사이에 약간의 지연
    print("자동 입력 완료 또는 중지됨")
    running = False

def input_voucher(pin, auth):
    time.sleep(1)                       # 다음 입력 전에 짧은 지연    
    # 상품권번호를 두 부분으로 나누어 입력
    part1, part2 = pin[:8], pin[8:]

    pyautogui.write(part1, interval=0.1)  # 첫 번째 부분 입력
    time.sleep(0.5)                       # 짧은 지연
    pyautogui.write(part2, interval=0.1)  # 두 번째 부분 입력

    pyautogui.write(auth, interval=0.1)   # 인증번호 입력
    time.sleep(0.5)                       # 다음 입력 전에 짧은 지연
    pyautogui.press('tab')                # 필요하면 다음 필드로 이동


def on_activate():
    global running
    if not running:
        print("자동 입력 시작")
        input_vouchers()
    else:
        print("자동 입력 중지")
        running = False

# 단축키 설정 (Ctrl + F12)
keyboard.add_hotkey('ctrl+f1', on_activate)

# 프로그램 종료를 위한 메시지
print("Ctrl + F1를 눌러 자동 입력을 시작/중지하세요. 스크립트를 종료하려면 Ctrl + C를 누르세요.")

# 이벤트 루프
keyboard.wait('ctrl+c')

앱을 실행 한 후, 상품권번호 입력하는 첫 번째 칸에 마우스를 한 번 클릭해, 커서가 깜빡이면 Ctrl키와 F1키를 동시에 누르면 상품권번호와 인증번호를 자동으로 입력한다.

Related Posts

2024년 4월 신용카드 체크카드 신규발급 혜택

2024년 4월 신용카드 체크카드 신규발급 혜택

일반적으로 신용카드를 설계사를 통해 발급받을 경우 사은품을 제공받지만, 이와 함께 몇 달 동안의 최소 사용 금액이 요구되는 의무가 부과된다. 이런 부담을 줄이는 대안으로, 핀테크 플랫폼을 이용한 카드 발급이…

교보생명 보험금 청구 서류 사망, 장해, 진단, 입원, 통원, 치아치료, 골절, 수술, 실손

교보생명 보험금 청구 서류 사망, 장해, 진단, 입원, 통원, 치아치료, 골절, 수술, 실손

보험에 가입하는 것은 미래의 불확실성과 다양한 상황에 대비하는 한 방법이다. 그러나 많은 사람들이 보험금 청구 과정에서 어떤 서류가 필요한지, 어떻게 준비해야 하는지에 대해 어려움을 겪곤 한다. 이번 포스트에서는…

삼성생명 다이렉트, 내가 가입한 모든 보험 보장내역 무료로 비교분석 받기

삼성생명 다이렉트, 내가 가입한 모든 보험 보장내역 무료 분석 후기

간혹 무료로 가입한 보험의 보장 내역을 확인해 주고 불필요하고 과도한 보장은 빼주고 부족한 보장은 어떤 것인지 비교해 준다는 설계사들이 있다. 이런 설계사들에게 한 번 붙잡히면 몇 시간은 그냥…

한화생명 고객센터 전화번호 지점 보험금청구 방법

한화생명 고객센터 전화번호 지점 보험금청구 방법

한화생명은 국내 최초의 생명보험 회사로서, 보험금 지급능력에서 14년 연속 AAA등급의 신뢰성을 자랑한다. 종신보험부터 정기보험, 질병보험, 암보험, 중대질병보험, 상해보험, 어린이보험, 치아보험, 간병/치매보험, 연금보험, 저축보험, 그리고 실손의료보험에 이르기까지 다양한 보험…

2024년 3월 신용카드 체크카드 신규발급 혜택

2024년 3월 신용카드 체크카드 신규발급 혜택

일반적으로 신용카드를 설계사를 통해 발급받을 경우 사은품을 제공받지만, 이와 함께 몇 달 동안의 최소 사용 금액이 요구되는 의무가 부과된다. 이런 부담을 줄이는 대안으로, 핀테크 플랫폼을 이용한 카드 발급이…

삼성카드 다이렉트 오토 이용자들이 가장 궁금해하는 질문 10가지

삼성카드 다이렉트 오토 이용자들이 가장 궁금해하는 질문 10가지

삼성카드 다이렉트 오토 서비스는 차량 구매부터 할부, 리스, 렌트 등 다양한 자동차 금융 서비스를 온라인으로 제공하는 서비스다. 하지만 새로운 서비스를 이용하려 할 때, 누구나 가질 수 있는 궁금증들이…

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다