부동산 텔레그램봇 사내공유 @tech

24
부부부 부부부부부 부부 +@ by 부부부 @SKP [email protected] 2016.05.26

Upload: hochul-shin

Post on 21-Apr-2017

5.830 views

Category:

Internet


4 download

TRANSCRIPT

Page 1: 부동산 텔레그램봇 사내공유 @Tech

부동산 텔레그램봇 후기+@

by 신호철 @[email protected]

2016.05.26

Page 2: 부동산 텔레그램봇 사내공유 @Tech

Profile (@ 회사 )

- 진영 : Syrup 본부 , SyrupStore 개발팀 .

- 종족 : 개발자

- 나이 : 0x20 대

- 클래스 : frontend 개발

- 스킬 : javascript, ...

Page 3: 부동산 텔레그램봇 사내공유 @Tech

...

Page 4: 부동산 텔레그램봇 사내공유 @Tech

Profile - ( 퇴근 후 )

- 귀찮귀찮 열매를 먹은 건지 , 귀찮은 일은 너무 하기 싫음 .

- 가성비가 떨어지는 일은 하기 싫음 .

- 일하는 거는 비교적 잘 참는데 , 그 외의 일들에 대한 노가다는 잘 못 참음 .- 게임 등 노는 것도 포함 .

Page 5: 부동산 텔레그램봇 사내공유 @Tech

WOW

- World of Warcraft, 다음 달에 영화 (Warcraft) 로도 나와요 .

- 2005 년에 출시됨 .

- 이 게임을 제대로 즐기기 위해서는 , 일단 만렙 달고 레이드를 해야 하던 때 .

- 그런데 , 40 인 레이드를 제대로 하려면 평소에 회사도 안 가고 재료를 구하러 다녀야 하는 난감한 상황 .

- 그 당시 40 인 공격대는 웬만한 회사보다 군기가 쎕니다 .

- 혹은 퇴근 후에 술약속도 잡지 않고 레이드 및 준비만 해야 함 .

Page 6: 부동산 텔레그램봇 사내공유 @Tech

WOW 조차도 노가다는 하기 싫었음 .- 낚시가 너무 지겨웠어요 .

- https://www.youtube.com/watch?v=Zqx08E3CVFI

- 원래는 이런 작업을 몇 시간 씩 해야 합니다 .

- 낚시를 해서 낚은 물고기들을 경매장에서 팔아서돈으로 환산하거나 물약을 만들어서 레이드에서씁니다 .

- 제가 하던 서버에서 경매장의 물고기 시세는 다 제 손에 있었음 .

- 특히 돌비늘뱀장어 ...

Page 7: 부동산 텔레그램봇 사내공유 @Tech

사냥도 ... - 사냥도 귀찮아 졌습니다 .- https://www.youtube.com/watch?v=IkAEjyy1

Pe4

- 모든 사냥의 자동화는 하지 못했고 , 사냥꾼이라는 직업전용으로만 했음 .

- 사냥 이후의 전리품들 수집 , 무두 , 골드 수집 .

- 사냥을 하다 간혹 죽는 경우가 있는데 , 그러면 시체를 찾아와서 부활하는 기능까지…

- 중국산 봇도 많이 만났습니다 .

- 봇으로 의심하고 말 거는 사람들 때문에 적절한 채팅 대응기능까지 넣어야 하는가에 대한 심각한 고민도 ...

Page 8: 부동산 텔레그램봇 사내공유 @Tech

How?

1.Visual C++ 로 윈도우 핸들을 얻어와서 ,

2.픽셀 정보를 득

3.어떤 화면이고 어떤 상태인지 알아낸 후 ,

4.적절한 ( 마우스 ) 이벤트를 던짐 .

5.2 번으로 반복 .

Page 9: 부동산 텔레그램봇 사내공유 @Tech

결국에는 ...- 파밍은 자동화를 완벽하게 하고 , 편안한 WOW 생활을 영위 .

- 그냥 버리기는 아까워서 , 2007 년에 책으로 정리까지 했으나…

- http://www.yes24.com/24/goods/2549646

Page 10: 부동산 텔레그램봇 사내공유 @Tech

…- 악플 (?) 이 아닌 신랄한 댓글에 gg.

- http://blog.yes24.com/blog/blogMain.aspx?blogid=wonlover&artSeqNo=893990

- 연예인들이 왜 악플에 고통 받는지 약간이나마 이해할 수 있게 됨 .

- 다행히 지금은 절판됨 .- 절대 구매하지 마세요 .

Page 11: 부동산 텔레그램봇 사내공유 @Tech

애니팡 , 캔디팡도 ...- 문득 내가 왜 이 단순한 작업에

목숨을 걸고 있나라는 생각이 듦 .

- wow bot 과 거의 유사하게 픽셀분석해서 퍼즐맞추는 방식 .

- mobizen 을 연결해서 pc 에서윈도우 핸들 득 후 동일하게 처리 .

- 이 때 카톡 친구들이 많이 친구를끊었음 . --;

- 봇과 승부를 하는 것은 정당하지 않다나 ?

Page 12: 부동산 텔레그램봇 사내공유 @Tech

+Monitoring - BlueStacks : PC 에서 android 를 구동 .

- CrazyRemote

- TeamViewer

- Chrome Desktop

Page 13: 부동산 텔레그램봇 사내공유 @Tech

이제 본론으로 들어가죠 .

- 전세값이 너무 올라서 , 이리저리 아파트 값을 알아보다가 빡침 .- 정보가 공개되어 있음이 분명한데 , 관심 지역에 대한 모니터링을 하기가 힘듦 .

- 조회 용으로는 괜찮은 application 들이 많은데 ,noti 를 내가 원하는 방식으로 보내주는 app 은 없음 .

- 제일 유사한게 호갱노노인데 , 평수까지 동일해야해서 노티가 거의 안 옴 .

Page 14: 부동산 텔레그램봇 사내공유 @Tech

퇴근 후에 , 내가 만들어야겠다

- UI 붙이는 건 귀찮아라고 말하지만 능력 / 시간 부족 . 게다가 회사에서 하던 일을 퇴근 후에도 또 할 순 없어 .

- 텔레그램 봇으로 하자 .

- 요즘 봇 api 가 흥하던데 ...

- 요구사항

- 지역별 아파트 실거래가를 조회할 수 있어야 함 .

- 변경이 있을 경우 , 아침마다 noti 메시지 발송 .

Page 15: 부동산 텔레그램봇 사내공유 @Tech

필요 기술

- Telegram bot api

- https://core.telegram.org/bots/api

- 그러나 telepot 라는 library 를 사용하는 것이 더 간단해 보임 .

- https://github.com/nickoala/telepot

- 데이터는 어떻게 ?

- crawl 해야 되려나 ?

- 아니 ... 현기증 나기도 하고 , open api 가 있으니 이것을 쓰자

- 공공데이터 포탈 https://www.data.go.kr

Page 16: 부동산 텔레그램봇 사내공유 @Tech

How to create BOT- BotFather 에게 다음과 같이 메시지를 날리면 끝 .

Page 17: 부동산 텔레그램봇 사내공유 @Tech

Process

- 최소 2 개의 process 가 필요 .- BOT 에게 말을 걸어서 실거래가를 조회하고 , noti 를 등록하기 위한 process 가 필요 .

- forever 를 사용해서 항상 실행되도록 함 .

- https://github.com/foreverjs/forever

- 매일 아침 새로운 거래가에 대해 noti 를 날려줄 process 가 필요 .

- crontab 으로 하루에 1 번 오전에 실행 .

Page 18: 부동산 텔레그램봇 사내공유 @Tech

DB

- DB 도 쓰기 귀찮지만 process 가 2 개이고 , 저장해 놓아야 하는 요구사항이 있음 .

- 둘이 conflict 을 낼 확률 (맹렬히 동시에 접근할 확률 ) 은 거의 없으므로 따로 daemon 을 띄우는 애들 (mySQL 등 ) 을 쓸 필요는 없어 보임 .

- python 에 내장된 SQLite 을 사용해도 문제 없어 보임 .

- Tables(SQLite 는 file 단위로 관리되므로 각각 db files 로 분리 )

- Loc : 지역정보 조회를 위한 정보들 .

- User : 유저들이 등록한 noti 정보들 .

- Logs : Noti 를 중복해서 보내지 않기 위해 저장 .

Page 19: 부동산 텔레그램봇 사내공유 @Tech

$

- 아차 , 나 금수저 아니지 ? 서버비는 벌어야 겠다 .

- 어떻게 벌지 ?- 텔레그램 메시지를 뿌릴때 , 링크를 같이 주고 해당 링크페이지에 애드센스를 달면 ?

Page 20: 부동산 텔레그램봇 사내공유 @Tech

Data 는 ? (추가된 페이지에 대한 )

- data.go.kr 에서 곧바로 data 를 가져오는 방식인데 , 웹페이지를 구성할 때 필요한 정보는 어떻게 하지 ?

- 따로 정보를 저장해 놓지는 않았고 , sync 도 문제고 ...

- data.go.kr 에서 js api 도 지원해 주네 ?

- client 단에서 js api 를 찔러서 해결하자 .

- 화면단의 표현은

- highcharts

- bootstrap

Page 21: 부동산 텔레그램봇 사내공유 @Tech

CORS...

- data.go.kr 로 호출하는데 Same Origin Policy 에러가 발생 .- 헐… 서버단에서 CORS 설정을 안 해 둔 듯 ...

- jsonp 는 되려나 ?

- 역시 서버쪽 설정을 안 해 뒀는지 , 안됨 --;

- js api 사용 포기 .

- node.js 용 api였나보구나 ...

- 텔레그램쪽을 python 으로 한 김에 mod_python 으로 구성 .

Page 22: 부동산 텔레그램봇 사내공유 @Tech

애로사항- 1주일 정도 만에 만들다 보니 , 예외처리가 다양하게 되어 있지는 않음 .

- data.go.kr 이 생각보다 자주 먹통이 됨 .- 모든 문제의 근원 .

- 502 proxy error 가 나는 경우가 생각보다 많음 .

- 최근 2주일 동안 2 번 장애 발생…

- 중간에 DB 를 만들어서 주기적으로 갱신을 했어야 했음 .

- notification 등록건수가 1,000 개에 가까워져서 전송할 메시지가 많은 경우에는 , 오전 8 시에 시작한 노티 메시지가 12 시는 되어야 끝이 남 .

- sendMessage 가 평균적으로 1초에 1 개 정도 나감…

- data.go.kr 이 너무너무 느림 .

- sendMessage 의 max length 가 4096 bytes 라 메시지를 잘라서 보내야 함 . 게다가 utf-8 한글은 1자당 3bytes 씩이니 ...

Page 23: 부동산 텔레그램봇 사내공유 @Tech

소스코드 공유 및 결과물- Github

- https://github.com/dspshin/realestate-bot (api key 가 소스에 박혀 있는데 , 설마 누가 약용하겠어 ? telegram token 까지는 박아두지 않음 )

- Telegram bot URL- https://telegram.me/apart_bot

- 홍보

- http://clien.net/cs2/bbs/board.php?bo_table=lecture&wr_id=314658

- 자매품

- https://telegram.me/officetel_bot 외 다수 ...

Page 24: 부동산 텔레그램봇 사내공유 @Tech

The ENDThank you