인터파크 티켓팅 매크로를 내 GitHub Repository에 업로드하였다.

 

라이선스는 PyQt에 따라 GPL V3.0에 따라 배포되며, 그냥 일반 사용자들은 막 가져다가 빌드해서 쓰면 된다.

 

라이선스 때문에 PySide로 변경할 생각도 하고 있긴 하지만, 귀찮음이....

 

당연하지만 상업적인 재배포는 금지다. 

 

이제부터 프로그램에 버그가 있거나 수정할 점이 있을 경우 직접 Pull Request를 생성하고 기여해 주시면 고마울 것 같다.

 

https://github.com/kustar103/Interpark-Ticketing-Macro

 

kustar103/Interpark-Ticketing-Macro

Interpark ticketing macro with selenium. Contribute to kustar103/Interpark-Ticketing-Macro development by creating an account on GitHub.

github.com

  1. 문의 2020.08.05 17:46

    exe파일로 올려주시면 안될까요 ㅜ ㅜ 부탁드립니다 ㅠㅠ

    • 페이지다운 2020.08.05 23:24 신고

      이건 원래 있던 걸 깃헙에 올린 겁니다. 빌드 파일은 https://pagedown.n-e.kr/13 이곳에서 다운받으실 수 있습니다

이번에 내 인터파크 매크로 코드를 보면 try ~ except 구문으로 떡칠되어 있는 모습을 볼 수 있다.

 

아마도 아래와 같은 형태일 것이다.

1
2
3
4
5
6
7
while True:
    try:
        pass # 실행할 구문
    except:
        continue
    else:
        break
cs

셀레니움은 웹페이지가 다 로딩되기 전에 요소를 찾으려고 하면 없다고 예외를 내뿜으면서 꺼진다. 

 

그러나 로딩 속도는 사용자 컴퓨터 성능이나 인터넷 속도 영향을 많이 받고, 때에 따라 다르기 때문에 항상 언제 정확히 몇초 후에 로딩이 될 것이라고 예측할 수가 없다. 

 

보통은 Explicit Waits을 쓰면 되지만, 그래도 불확실성이 완전히 해소된다는 보장도 없고, 내가 써 보니 잘 안되서 위와 같은 형태를 취하게 되었다.

 

해석하자면 일단 실행할 구문을 무한 루프 안에 가둬 놓고 예외가 나지 않을 때까지(셀레니움에서는 로딩이 끝나 정상적으로 요소를 찾을 수 있을 때까지) 실행한다. 그리고 예외 없이 정상적으로 실행되면 루프를 나간다.

 

그리고 몇 번 실행하고 더 이상 안되면 꺼버리고 싶을 때, 아래와 같이 for 구문을 사용하면 된다.

1
2
3
4
5
for i in range(0, time):
    try:
        pass
    except:
        continue
cs

무식한 방법처럼 보이지만, 제일 간단하고 정확하다. 오히려 될 때까지 시도한다는 점 때문에 일정 시간이 지나면 포기하는 Explicit Waits와는 다르게 어떻게든 예매창에 들어가기만 하면 좌석을 알아서 선택하고 나오게 된다.

 

사실 이 방법을 쓰기 전에 고민했는데, 이걸 쓰면 코드가 너무 지저분해지기 때문이다. 당장 구문만 빼고 들어가는 줄 수만 봐도 6줄이나 된다. 이게 몇개씩이나 있어서 코드 가독성을 해친다.

 

그냥 생각하기 싫을 때나 어떤 일이 있어도 절대로 프로그램이 종료되지 말아야 하는 경우에 쓸 수는 있어도, 가급적이면 다른 방법을 사용하는 것을 권한다.

지난번에 매크로를 올리고 정말 많은 오류가 보고되었다.

 

이렇게 복잡한 프로그램을 만들고 배포하긴 처음이라, 많이 당황했다.

 

거의 4개월만에 오류 패치를 했다. 물론 중간고사 끝나고 바로 기말고사라 급하게 해서 몇개 부탁주신 기능 구현은 하지 못했다.

 

그래서 고쳐진 부분과 추가된 부분에 대해 설명을 하고자 한다.

 

패치된 오류

안심예매 단계에서 꺼짐

회차가 두 개 이상일 경우 직접 선택해야 함

구역이 나눠져 있을 경우 작동 안됨

 

새로 바뀐 매크로

바뀐 매크로는 위와 같다.

 

여기서 추가된 부분은 회차와 구역 분리 항목이다.

 

회차의 경우에는 두 개 이상이 있는 경우가 있다.

 

이럴 경우 회차마다 순서대로 001, 002, 003... 이렇게 올라간다.

 

만약 두번째 회차를 원한다면 002라 적으면 된다(반드시 002여야 한다, 2 안됨, 02 안됨).

 

구역 분리같은 경우에 티켓팅할 공연장의 규모가 커서 구역을 선택하는 곳이 나올 때 이용할 수 있다.

 

구역 선택은 직접 해야 하며, 선택만 하면 그 다음은 알아서 한다.

 

아래는 빌드(exe) 파일과 코드이다. 코드는 직접 올리기 번거로워서 파일 형식으로 올렸다.

 

소스 코드 파일에는 pyinstaller 빌드를 위한 .spec 파일도 포함되어 있다.

 

*추가

연령 제한 알림 같은 안내가 있는 경우 수동으로 알림을 꺼야 하는 문제를 해결해 자동으로 끄게 했다.

 

*추가

JS alert가 뜨는 경우 알아서 끌 수 있게 변경했다.

 

빌드 파일

 

38.62 MB file on MEGA

 

mega.nz

소스 코드

 

6.4 KB file on MEGA

 

mega.nz

 

  1. 이전 댓글 더보기
  2. 2020.07.14 20:46

    비밀댓글입니다

  3. 2020.07.15 11:57

    비밀댓글입니다

    • 페이지다운 2020.07.15 18:35 신고

      제가 보기엔 다음날 하는 공연 때문에 뜨는 알림창 때문에 수동으로 선택한 것 같습니다. 그 부분은 수정하겠습니다.

  4. ㅇㅇ 2020.07.15 20:13

    로그인을 누르면 응용 프로그램이 종료되는데 해결방법 아시나요...?

    • 페이지다운 2020.07.15 20:15 신고

      확인하겠습니다.

    • 사람1 2020.07.16 23:08

      저도 그랬는데 본인 컴퓨터에 설치된 크롬 버전이랑 크롬 드라이버 버전이랑 안 맞으면 그렇더라구요. 본인 컴퓨터에 설치된 크롬 버전 확인하시고 거기에 맞는 크롬 드라이버 다운받으시면 잘 돼요

  5. 제크맛집 2020.07.16 09:08

    공연코드는 어디서 확인하나요?

  6. 2020.07.17 16:20

    취켓팅 모드는 정확히 어떻게 하는 건가요?

    • 페이지다운 2020.07.17 16:55 신고

      https://pagedown.n-e.kr/8 참고하세요

    • 2020.07.17 17:42

      제가 이상한건지 잘 안 되는 거 같네요 ㅠㅠ

  7. ㅇㅇ 2020.07.17 17:17

    안심예매 공연에서는 회차 설정이 풀리는 것 같습니다.

  8. 111 2020.07.18 00:32

    선생님 덕분에 티케팅 성공했습니다..감사합니다...... 적게 일하시고 많이 버세요..

  9. ㅇㅇ 2020.07.18 23:54

    패치버전 다운이 안됩니다 ㅠㅠ

  10. 멜멜 2020.07.18 23:58

    패치파일 다운이 안되는데요 ㅠㅠ

  11. 1122 2020.07.23 21:35

    우선 공유 감사합니다. 별다른 오류 없이 실행은 잘 되는 것 같은데, 프로그램이 좌석을 선택하는 기준은 어떻게 되는지 알 수 있을까요?

    • 페이지다운 2020.07.23 23:58 신고

      좌석은 HTML 엘리먼트를 기준으로 제일 위에 있는 것을 고릅니다. 이게 불규칙적이라, 지금 그 엘리먼트에 열이나 등급이 표시된 title을 기반으로 정확한 좌석을 추적하는 기능을 준비하고 있습니다.

  12. 꽁수니 2020.07.30 02:35

    제가 티켓팅이 잘되본적이 없어서
    하고 싶은데 너무 컴알못이라
    설치하고 실험용으로 다른 여유있는 공연 설정해서 해봤는데 프로그램이 꼼짝도 안하더라구요
    원인을 모르겠어서 흑흑
    도움좀 받을수있을까요?

  13. 2020.07.31 01:29

    비밀댓글입니다

  14. ㅇㅇ 2020.08.04 14:33

    자리 널널한 공연으로 시험해보면서 회차 입력해봤는데 하루에 회차가 두개 이상이라서 그런지 001 입력해도 날짜까지만 가더라고요 직접 선택해야하는게 맞나요?

  15. 2020.08.06 11:18

    비밀댓글입니다

  16. ㅇㅇ 2020.08.07 02:41

    취켓팅 모드에서 이미 선택된 좌석 팝업창이 뜨면 자동으로 창 닫은 후 새로고침이 멈추는데 이 경우 프로그램 재시작해야 하나요??? 이선좌 창 닫고 계속 새로고침이 가능하면 좋을 것 같아요!!

  17. 희희 2020.08.17 02:57

    덕분에 얼마전에 티켓팅 성공했습니다ㅠㅠㅠㅠㅠ선생님 진짜 절받으세요ㅠㅠㅠㅠㅠ
    어느 방향에 계신 지 몰라서 사방으로 절하겠습니다ㅠㅠㅠㅠㅠ감사합니다 정말ㅠㅠ

  18. 2020.08.26 14:18

    비밀댓글입니다

  19. 디노 2020.08.26 14:37

    먼저 좋은 프로그램 공유 감사드립니다.
    취겟팅시 구역 분리를 선택해도 구역 선택할 타이밍 없이 새로고침이 되버리는것 같은데요.
    (새로 고침 되기전에 구역 선택해도 다음번에 구역선택없이 새로고침됨)
    혹시 제가 잘못 사용하는 것일까요?

  20. 2020.09.04 13:04

    비밀댓글입니다

    • 페이지다운 2020.09.08 23:39 신고

      아직 좌석 등급을 구분하는 기능을 구현하지 못했습니다. 완전한 랜덤이며 이는 수정할 예정입니다.

  21. 2020.09.15 23:57

    비밀댓글입니다

+ Recent posts