일상/취미

DC새글알리미 제작기

토고미 2021. 3. 14. 03:22

1. 동기

작년 중순쯤 디시인사이드 새글 알림 프로그램이 있었으면 하는 생각이 들었다.

아니나 다를까, 이미 다양한 알림 프로그램들이 있었다.

 

하지만 내가 원하는 알림 프로그램은 없었다.

 

어떤 것은 프로그램 자체 UI에서, 어떤 것은 텔레그램을 통해서 알려주는 등

컴퓨터로 다른 짓을 하면서 보기에는 불편하다는 생각이 들었다.

그래서 내가 만들기로 했다.

 

 

2. 기획

내가 원하는 건 컴퓨터로 다른 짓을 하면서도, 그 화면에서 알림을 받을 수 있는 프로그램이었다.

그리고 심플하면서도 만들기 쉬운 UI를 원했다.

 

그것이 파이썬을 선택한 계기였다.

PyQT5라는 라이브러리로 UI를 간단하게 그릴 수 있었고,

win10toast라는 라이브러리로 윈도우10 팝업메시지를 이용할 수 있는 라이브러리도 있었다.

크롤링, html 파싱 라이브러리도 사용하기 쉬웠다.

 

개발 툴은 파이참을 사용했다.

 

 

3. 초안 제작

UI는 제쳐두고, 실제로 내가 원하는 기능의 구현이 가능한지 알고 싶었다.

그래서 내부 로직을 먼저 짜기로 했다.

 

내가 생각한 로직은 이러하다.

글 번호

가장 먼저 프로그램이 시작되면 해당 갤러리 1페이지의 모든 글 번호를 가져온다.

거기서 가장 큰 숫자만 저장해서 유지한다. 그것이 가장 최신 글의 번호이기 때문이다.

 

그 후는 간단하다.

주기적으로 크롤링해서 유지하고 있는 숫자보다 큰 글번호가 있다면,

그 글은 최신글로 판단해서 보여주는 것이다.

해당 번호의 글쓴이와 제목을 가져와서 뿌려주는 것이다.

실제로 파이참으로 테스트해보니 작동했었다.

 

다음은 UI 였다.

개인적으로 UI가 심플한 걸 선호한다. 필요한 것만 딱 들어있으면서, 작고 아담한 걸 좋아한다.

 

그래서 딱 3가지만 넣었다.

갤러리 주소 칸, 시작 버튼, 중지 버튼

그렇게 가장 초기의 UI가 나왔다.

가장 초기의 UI

딱 내가 원하는 스타일의 UI가 나왔다.

 

이제 마무리 작업만 남았었다.

갤러리 주소값은 텍스트창에서 가져오고, 만들어놨던 로직은 시작버튼 함수에 넣어주기만 하면 됐다.

그리고 win10toast를 이용하여 가져온 결과를 넣어주었다.

 

마침내 완성이 됐다.

알림 팝업

내가 만들었는데도 신기하고 뿌듯했다. 그리고 확실히 쓸만했다!

 

 

4. 업그레이드 & 사용자 피드백

하지만 완벽하진 않았다.

실제로 디시 서버는 너무 자주터져서 html요청이 실패할때가 종종 있다.

초안에는 html요청 실패에 대한 예외처리를 안 해두어서

디시 서버가 잠깐만 터져도 프로그램이 멈췄다.

그래서 다시 프로그램을 실행시켜야하는 귀찮음이 있었다.

 

하지만 예외처리를 해서, 서버가 터져서 요청을 실패한 경우 다시 시도하도록 수정하니

문제가 해결되었다.

 

 

이 정도면 쓸만하겠다 싶어서 프로그램 홍보를 했다.

 

그런데 어느 날, 어떤 분이 프로그램이 튕긴다고 댓글을 달아주셨다.

실제로 그 분이 말씀하신 갤러리에서는 이상하게 프로그램이 오류가 나서 멈췄다.

 

디버깅을 하면서 확인해보니 글 번호를 확인하는 게 문제였다.

 오래된 갤
신생갤

신생갤과 오래된 갤러리의 게시판 형태가 약간 차이가 있었다.

글 번호란에 숫자가 아니라 "뉴스", "공지" 같은 문자열이 있었던 것이다.

나는 여태 신생갤에서만 테스트 해봐서 알지 못했던 것이다.

 

그래도 문제를 파악한 뒤의 해결은 간단했다.

isdecimal() 함수를 통해 숫자인 것만 검사하도록 하면 끝이었다.

 

 

그렇게 또 시간이 지나고...

어떤 분이 키워드 기능을 추가해줄 수 있냐고 요청하셨다.

 

사실 다른 디시 알림 프로그램들에는 키워드 기능들이 꽤 있었다.

내 것만 없는 게 이상하기도 하고, 구현이 어려울 것도 없어서 바로 추가하기로 했다.

그냥 알림을 띄우기 전에, 제목에 특정 키워드가 있을 때만 알림을 띄우면 그만이었다.

 

대신 UI에 키워드 부분이 추가돼야 했다.

그리드 레이아웃을 적용시키고, 여러 UI 컴포넌트들의 위치를 이리저리 옮겨보면서

드디어 지금 형태의 UI가 완성되었다.

지금의 UI

그 이후에도 팝업창을 누르면 해당 글이 브라우저로 열리는 기능을 추가하고 자잘한 버그들도 고쳤다.

 

이제는 솔직히 더 업그레이드할 필요성을 못 느낀다.

그나마 생각해두고 있는 건, 키워드 저장/불러오기 기능 정도이다.

 

 

5. 후기

 

솔직히 말해서 누구나 만들 수 있는 정말 간단한 프로그램이다.

 

하지만 내가 원하는 것을 내 손으로 직접 만들고,

그 프로그램을 누가 써준다는 것이 굉장히 뿌듯했다.

 

심지어 어떤 분은 고맙다고 개인적으로 기프티콘을 주시기도 했다.

내가 프로그램을 만들어서 누군가에게 보답을 받다니...

개발자로서 이보다 뿌듯하고 기쁜 일은 없을 것이다.

 

거기에 더 나아가서 사용자들의 피드백을 반영해서

업그레이드 시킬 때마다 나도 발전해나감을 느꼈다.

 

나중에도 이런 개인적인 프로젝트를 하나 또 진행해보고 싶다.

 

======

다운로드는 아래 링크에서 가능하다.

https://togomi.tistory.com/12