본문 바로가기
Project/Blog New Post Noti

[New Post Noti ] 블로그 새 글 알림 봇 : intro

by Haren 2021. 8. 25.

지난 4월, 군생활을 하던 중 휴가를 나왔을 때 진행했던 토이 프로젝트다.

이 블로그에 내가 새 글을 올리면 새 글 알림을 주는 Python 프로젝트였는데,

처음 구현하고 싶었던건 내 블로그에 새 글이 올라오면 내 트위터에 자동으로 트윗을 남겨주는 것이었다.

하지만 트위터 개발자 API를 휴가 복귀가 임박해서 신청했고, 결론적으로는 해당 기능은 구현하지 못하였다.

따라서 급한대로 쉽게 챗 봇 API를 발급받을 수 있는 텔레그램 챗 봇 형태로 구현해놓고 부대에 복귀했었던 기억이 있다.

이번 8월, 전역 전 휴가를 나옴으로서 이 토이프로젝트에 새 숨을 불어넣어 줄 수 있는 여유가 생겨 다시금 잡아봤으며

진행 상황과 더불어 이 프로젝트를 진행하는 나의 고민과 삽질을 꾸준히 블로그에 정리하고자 한다.

▲ Stargazer noti bot

 


 

텔레그램 챗 봇으로 구현했던 블로그 새 글 알림은 아래의 나의 gitHub 링크를 통해서 확인할 수 있다.

 

https://github.com/HarenKei/NewPostNoti

 

GitHub - HarenKei/NewPostNoti

Contribute to HarenKei/NewPostNoti development by creating an account on GitHub.

github.com

 


내가 사용한 Python 모듈은 다음과 같다.

  • BeautifulSoup4 - 블로그를 파싱해오기 위해 사용
  • Requests - BeautifulSoup4와 마찬가지로 블로그를 파싱하기 위해 사용
  • Telegram - 텔레그램 챗봇을 이용하기 위해 사용
  • OrderedDict - collections 모듈의 클래스로 데이터의 순서를 보장받기 이해 사용

각 모듈에 대한 사용법 등은 기회가 닿으면 따로 블로그에 정리해보도록 해야겠다.


이 블로그 알림은 다음과 같이 동작한다.

1. 내 블로그를 파싱해서 블로그의 최신 포스트 번호와 포스트 제목을 json 파일로 저장해둔다. (ExiNewPost.json)

2. 내 블로그를 다시 파싱해서 블로그의 최신 포스트 번호와 포스트 제목을 별도의 json 파일로 저장한다. (NewPost.json)

3. 두 json 파일을 비교해서 다르면 ExiNewPost.json을 NewPost.json의 내용으로 바꾸고, 알림을 보낸다.

 

1, 2 번의 동작들은 ssh 서버 위에서 crontab 명령어를 통해 주기적으로 파싱을 해오게 된다.


내가 변경하고 싶은 사항으로는 다음과 같은 것들이 있으며, 필요에 따라 빠질 수도 추가가 될 수도 있다.

  • 기존의 텔레그램 챗 봇 알림 → 트위터 자동 트윗 봇 알림
  • 코드를 조금 더 효율적으로 변경하기
  • 봇의 활성화

그렇게 어렵지는 않은 작업이 될 것 같다는 생각이 든다.