Notice
Recent Posts
Recent Comments
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

INSPECT

[Python+GAE+Telegram Bot 오버워치 전적검색기]-2 본문

Python

[Python+GAE+Telegram Bot 오버워치 전적검색기]-2

INSPECT 2016. 9. 13. 21:13

[Python+GAE+Telegram Bot 오버워치 전적검색기]


Python script를 다 만들고 Telegram Bot과 연동시키기 위해 

http://bakyeono.net/post/2015-08-24-using-telegram-bot-api.html 페이지를 참고하여 많은 도움을 받았다.


작업환경은 Ubuntu 14.04LTS 에서 진행했다. 이유는 모르겠지만 리눅스에선 한글 인코딩 문제로 고생하지 않아도 되었다.

나는 Telegram Bot의 이름을 oversearch_bot으로 만들었다.


위 블로그의 내용대로 app.yaml파일과 main.py파일을 만든 후 내가 만든 python파일의 내용을 main.py에 추가했다. 실행시켜 보았더니 mechanize와 beautifulsoup를 import시키지 못했다. Google App Engine으로 작업하는 것이 처음이다보니 오류를 찾는데도 시간이 오래걸렸다. 열심히 구글링해본 결과 GAE는 몇가지를 제외한 외부 라이브러리를 사용할 경우 따로 lib폴더를 만들어 추가해 주어야 했다.


https://cloud.google.com/appengine/docs/python/tools/using-libraries-python-27

http://stackoverflow.com/questions/14638262/python-2-7-how-to-use-beautifulsoup-in-google-app-engine

http://stackoverflow.com/questions/14850853/how-to-include-third-party-python-libraries-in-google-app-engine 

Google App Engine의 공식 문서와 스택오버플로우에 설명이 잘 되어있었다.



위의 코드는 main.py에 이전에 만든 script소스를 변형시켜 넣은 것이다.

send_msg는 채팅상대의 id와 상대에게 보낼 메시지를 인자로 받아 메시지를 보내는 함수이다.

나의 search함수에 chat_id와 bt라는 이름으로 상대가 보낸 메시지를 받았다.

bt를 nickname에 저장하여 상대가 보낸 유저이름#배틀코드를 분석해 크롤링을 한다.

이 환경에서도 마찬가지로 한글 인코딩이 문제였다. 여기서는 setdefaultencoding을 이용해 utf-8로 기본 인코딩 상태를 지정해 주어 (보통 ascii로 되어있다.) 문제를 해결했다. 


이제 oversearch_bot을 Telegram에서 찾아 말을 걸어본다.

/start를 하면 시작한다는 기본멘트가 나온다.

/stop을 하면 멈춘다.

유저이름#배틀코드를 검색하면 유저의 오버워치 전적과 통계가 답장으로 온다.

오버워치 전적검색기를 메신저 톡으로 받으면 편할 것 같다는 생각에 만들어보았는데 생각보다 오류를 자주 만나서 쉽지 않았다.

오버워치를 하시는 분들은 oversearch_bot을 검색해 봇에게 말을 걸어 쉽게 전적검색을 할 수 있습니다.


'Python' 카테고리의 다른 글

Python Django-2  (0) 2017.01.02
Python Django-1  (0) 2017.01.02
[Python+GAE+Telegram Bot 오버워치 전적검색기]-1  (0) 2016.09.13
[PEfile Module] 사용  (0) 2016.05.05
[XML parsing] AndroidManifest.xml 파싱  (0) 2016.01.23
Comments