텔레그램을 이용한 메뉴 알리미
개요
평소에 아침도 안먹고 출근하는 경우가 대부분이라 그런지, 출근하자마자 점심메뉴를 확인하게 됩니다. 그때마다 pdf 파일을 열어서 메뉴를 확인하는게 은근히 귀찮아서 머리를 굴리다가….. 간단하게 메뉴를 알려주는 봇을 만들어보기로 했습니다.
간단하게 파이썬으로 메뉴만 알려주는 봇을 만들려고 찾아보다가 텔레그램 API를 이용한 봇을 만들어보기로 했습니다.
전체적인 구조
한시간 단위로 식단표 업로드를 확인하고 다운로드하는 스크립트를 실행합니다. 식단표 업로드 확인 방법은 파일사이즈와 파일명을 보고 확인하도록 하였습니다.
식단표는 pdf 로 제공되며, 이를 텍스트로 변환하여 각 요일별로 메뉴를 파싱합니다.
텔레그램 봇은 파싱된 요일별 메뉴를 메모리에 가지고있으며, 사용자가 요일을 말하면 해당 요일의 메뉴를 전송해주게 됩니다.
텍스트 파싱 방식
처음에는 pdf 파일의 텍스트를 파싱해서 요일별 메뉴를 그대로 전달하는 방식으로 만들었습니다. 식단표 pdf의 형태가 거의 비슷했기 때문에 큰 무리 없이 동작했습니다.

하지만 이 방식은 몇 가지 문제가 있었습니다.
- 공휴일이 낀 주에는 표 구성 자체가 평소와 달라짐
- 가끔씩 표 형태가 미묘하게 바뀌면서 파싱이 실패함
- 파싱이 깨질 때마다 그때그때 파싱 로직을 다시 손봐야 했음
식단표 형태가 계속 바뀌는 이상 텍스트 파싱만으로는 대응하는 데 한계가 있었습니다.
이미지 크롭 방식으로 변경
그래서 pdf를 아예 이미지로 변환한 뒤, 요일별 · 아침/점심/저녁별 위치를 미리 좌표로 지정해두고 해당 부분만 잘라서 이미지로 전달하는 방식으로 바꿨습니다.

텍스트를 해석할 필요 없이 정해진 좌표만 잘라내면 되기 때문에, 표 안의 내용이 조금씩 바뀌어도 파싱이 깨질 걱정 없이 훨씬 안정적으로 동작했습니다.
Leave a comment