ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 파이썬으로 어벤져스: 엔드게임 용산IMAX 명당 예매 하기 (2)
    개발/기록 2019. 4. 25. 01:23

    파이썬으로 어벤져스: 엔드게임 용산IMAX 명당 예매 후기 (1)

     

    3. 예매 오픈시, 텔레그램으로 알림 주기

     

    이전 포스팅에서의 코드

    앞서 작성한 코드로, 저는 4월 26일에 용산 IMAX관의 어벤져스: 엔드게임의 예매오픈 여부를 알 수 있었습니다.

     

     


    하지만 이 코드만으로는, 해당 여부를 자동으로 확인할 수 없고, 알림도 주지 않습니다!


     

     

    때문에, 예매오픈 여부를 확인하고 저에게 알람을 주기위해, 텔레그램 봇으로 구축을 하였습니다.

     

     

    개발자가 이용할 수 있는 외부 봇 플랫폼은 많이 있으나,
    가장 간단하고 목적에 가장 부합한 플랫폼이 텔레그램이기 때문에, 텔레그램 봇을 선택하였습니다.

     

    \ 간단하게 구축이 가능한가? 선톡 기능이 있는가? 여러 사용자가 이용할 수 있는가?
    카카오i △(오픈빌더 권한 얻어야 함) X O
    페이스북 메신저 봇 X O △(봇 검수 필요)
    텔레그램 봇 O O O

     

    텔레그램 봇을 만드는 과정은 간단합니다.

     

    1. 텔레그램 내 BotFather을 이용하여 봇과 토큰을 발급받는다
    2. 봇을 쉽게 만들 수 있는 pip 패키지인, python-telegram-bot을 설치한다
    3. 만든 봇에게 메세지를 보내서, 자신의 고유id값을 알아낸다
    4. 특정 조건 값을 만족하면, 고유id값에게 메세지를 보내게 코딩한다
    { DoKy's Blog } | Telegram Bot 만들기

     

    텔레그램 봇 생성 과정

     


    이제, 예매오픈시 텔레그램 메세지를 보내주도록 기존 코드를 수정할 수 있습니다!


     

    수정한 코드

     

    기존 코드에 예매오픈시 텔레그램으로 메세지를 보내는 코드를 추가하여, 어느정도 알림을 해주는 형태로 되었습니다!


     

    4. 서버에 올려서, 자동으로 확인하기

     

     

    마지막 단계는, 자동으로 예매오픈을 확인하는 과정입니다.

     

     

    자동으로 예매오픈을 확인하기 위해, 저는 지금까지 작성한 코드를 서버에 올려 초 단위로 실행시켜서 확인하도록 하였습니다.

    서버는, 12개월간 프리티어를 제공하는 AWS의 EC2로 구축하였습니다.

     

    EC2 인스턴스 생성 과정

     

    EC2로 인스턴스를 생성할 때 우분투 운영체제로 선택하면, 파이썬이 자동으로 깔려있어서 사용이 편합니다!

     

     

    EC2를 생성후 접속을 한 후, 지금까지 작성한 코드를 github이나 FTP를 이용하여 받은 후,

    crontab을 이용하여 3초마다 예매오픈 시기를 확인하도록 하였습니다.

     

     

    우분투에서 crontab을 이용한 스케쥴러도, 쉽게 작성할 수 있습니다.

     

    1. crontab -e 로 crontab 설정을 시작한다
    2. * * * * * 파이썬절대경로 파이썬파일.py 로 cronatb을 설정한다 (1분마다 실행)

     

    위 과정을 거치면, 1분마다 파이썬 파일을 실행하는 스케쥴러를 만들 수 있지만,

     

     

    기존의 텔레그램 채팅방보다 빠르게 정보를 받아야 하고, 티켓팅은 초 단위 싸움이기 때문에 sleep을 이용한 편법으로, 초 단위로 스케쥴러를 작성하였습니다.

     

     

    * * * * * 파이썬절대경로 파이썬파일.py & sleep 5; 파이썬절대경로 파이썬파일.py & sleep 5; 파이썬절대경로 파이썬파일.py & sleep 5; 파이썬절대경로 파이썬파일.py & sleep 5; 파이썬절대경로 파이썬파일.py & sleep 5; 파이썬절대경로 파이썬파일.py & sleep 5; 파이썬절대경로 파이썬파일.py & sleep 5; 파이썬절대경로 파이썬파일.py & sleep 5; 파이썬절대경로 파이썬파일.py & sleep 5; 파이썬절대경로 파이썬파일.py & sleep 5; 파이썬절대경로 파이썬파일.py & sleep 5; 파이썬절대경로 파이썬파일.py & sleep 5; 

    위와 같이 작성하면, 5초에 한 번씩 해당 파이썬 파일을 실행할 수 있습니다!

     

     

    또한, 스케쥴러와 서버의 정상 작동 여부를 확인하기 위해, 매일 1시 5분에 테스트 메세지를 보내주도록 하였습니다.

     

    사실, 이렇게 코드를 짜게 되면, 예매가 오픈되고 나면, 텔레그램의 메세지가 멈추지 않고 계속 온다는 문제가 발생하지만,

    핸드폰을 계속 보고 있을 수 없고, 무음 모드인 경우가 있으므로, 예외 처리를 하지 않고 계속 메세지를 주어 빠른 확인을 가능케 했습니다! 

     

    이렇게, 기본적인 용산아이맥스 어벤져스: 엔드게임 예매오픈 알리미를 모두 구축했습니다! 

     

     


    이제, 예매할 일만 남았는데...몇 가지 문제가 있었습니다!


     

    파이썬으로 어벤져스: 엔드게임 용산IMAX 명당 예매 하기 (完)

     

     

     

    댓글

Designed by Tistory.