본문 바로가기

Python

[python] 티켓 자동 예매 매크로 만들기 - 1

1. 프로그램동작 구상

 1) 티켓링크, 인터파크 등 원하는 예매 사이트 선정하기

    - 티켓링크로 선정

 2) 로그인 자동화

   - 개발 기간동안 귀차니즘 해결

 3) 페이지 이동 

   - 야구 예매하기 버튼이 있는 위치로 페이지 이동(귀차니즘..해결)

 4) 시간에 맞춰서 예매하기 버튼 클릭

   - 버튼 활성화 시간에 예매하기 버튼 클릭

 5) 자동방지 코드 자동입력

   - 자동으로 코드입력

 6) 블럭 선택

   - 원하는 블록 선택 클릭

 7) 좌석 선택

   - 원하는 블록 선택 클릭

 

2. 매크로 제작 선언 및 자동로그인 기능 구현

 1) GPT를 통해 매크로 제작 선언하기

   - "티켓링크 URL주소"에서 크롬 브라우저 통해 자동으로 로그인 하는 기능을 python으로

      구현하고 싶어

1-1) Selenium 및 ChromeDriver 설치

pip install selenium

 

1-2) Python 스크립트 작성

import os
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC


# 크롬 옵션 설정
options = Options()
options.add_argument("user-data-dir=C:\\Users\\user\\AppData\\Local\\Google\\Chrome\\User Data")
options.add_argument("profile-directory=Default")

# 크롬 드라이버 서비스 설정
service = Service()

def setup_driver():
    driver = webdriver.Chrome(service=service, options=options)
    return driver

def login_to_payco(driver):
    # PAYCO 로그인 페이지로 이동
    login_url = "https://id.payco.com/oauth2.0/authorize?serviceProviderCode=TKLINK&scope=&response_type=code&state=552be1ed1114458787d51df604dfdc44&client_id=Z9Ur2WLH9rB59Gy4_cJ3&redirect_uri=https://www.ticketlink.co.kr/auth/callback?selfRedirect=N&userLocale=ko_KR"
    driver.get(login_url)
    
    try:
        # 로그인 폼 로딩 대기
        WebDriverWait(driver, 20).until(
            EC.presence_of_element_located((By.ID, "id"))
        )
        
        # 로그인 정보 입력
        driver.find_element(By.ID, "id").send_keys("usernameFieldId")  # 사용자 ID 입력
        driver.find_element(By.ID, "pw").send_keys("passwordFieldId")  # 사용자 비밀번호 입력
        
        # 로그인 버튼 클릭
        login_button = driver.find_element(By.ID, "loginBtn")
        login_button.click()
        
        # 로그인 완료 대기 (로그인 후 나타나는 요소 ID로 변경 필요)
        WebDriverWait(driver, 2).until(
            EC.presence_of_element_located((By.ID, "some_element_after_login"))
        )
        print("로그인 성공.")
    except Exception as e:
        print(f"로그인 오류 발생: {e}")


def main():
    driver = setup_driver()

    try:
        login_to_payco(driver)  # PAYCO 로그인
        
    except Exception as e:
        print(f"오류 발생: {e}")
    finally:
        input("창을 닫으려면 엔터 키를 누르세요...")
        driver.quit()

if __name__ == "__main__":
    main()

 

 

1-3) 자동로그인 완성