2. 카카오톡 크롤링

solarrrrr·2021년 4월 7일
1

Python

목록 보기
2/9
post-thumbnail

> 파이썬으로 카카오톡 대화 크롤링 and 메시지 보내기

요즘 프리로 이전 직장에서 하던 일을 하고 있는데
두 업체와 계약해 진행하고 있다.

한 곳은 올 여름까지 계약이 되어 있고 격주로 스케줄에 따라
재택으로 일하는 것이고

다른 한 곳은 별도로 일감이 들어올 때마다 받아서 재택으로
진행하면 되는데

이 두 번째 업체의 경우 일감 들어오는 시간이 대중 없고
무엇보다 단톡방에 나 같은 프리랜서들이 모여 있는데

일감이 공지되면 선착순으로 배정받는 방식이라서 약간의
애매함이 있다.

폰을 항시 들고 있으면서 들여다 볼 수도 없으니 말이다.

그래서 생각했다.
파이썬으로 카카오톡 대화내용을 크롤링해서 일감이 공지됐을 때
메시지를 자동으로 보내줄 수 있는 봇이 있다면 어떨까.
(일감은 다 내 것)

아직 검색을 많이 해 본 건 아니지만 오픈소스들 보니까
내가 원하는 거랑은 약간 차이가 있는 거 같다.

내가 원하는 건 아래와 같다.

  1. '실시간'으로 대화내용 크롤링
  2. 일이 공지되면 가장 먼저 해당 채팅방으로 메시지 전송
  3. '실시간' 크롤링 동작 중지
    일의 특성상 동시 진행이 어렵기 때문에 혹여라도
    일감이 여러 개 동시에 공지될 수 있으므로.

그런데 검색에 나오는 것들은 대화내용 내보내기로 얻은
파일을 크롤링하는 형태가 많았다.

잘 검색해 봐야겠다.


구글링 해 보니 많은 자료가 나왔고
어떤 분이 만드신 소스에 내가 필요한 부분만 첨가해서
완성은 했다.

def main():

    while True:
        
        hwndMain = win32gui.FindWindow( None, kakao_opentalk_name)
        hwndListControl = win32gui.FindWindowEx(hwndMain, None, "EVA_VH_ListControl_Dblclk", None)

        PostKeyEx(hwndListControl, ord('A'), [w.VK_CONTROL], False)
        time.sleep(1)
        PostKeyEx(hwndListControl, ord('C'), [w.VK_CONTROL], False)
        ctext = clipboard.GetData()

        ctext = re.sub('.*] ', '', ctext)
        ctext = re.sub('\r', '', ctext)
    
        m = re.search(r'납품기한 :', ctext)
        
        if m:
            time.sleep(2)
            text = "y"
            kakao_sendtext(text)
            break
        time.sleep(5)


if __name__ == '__main__':
    main()

<https://airfox1.tistory.com/2 블로그 참조>

다른 분이 만든 카톡 소스에 내가 필요한 부분만 약간 첨가했다.
대략 5초 간격으로 해당 채팅방의 대화내용을 긁어오고

내가 원하는 키워드가 등장하면 설정된 메시지를 전송하는
간단한 방식이다.

대화내용 키워드 감지는 정규식으로 처리했는데
한 줄로 처리를 못해서 두 줄로 했다.

그리고 메시지 전송 후 회전을 끝내지 않으면
계속해서 메시지를 보내는 문제가 있어서
break도 걸어줌으로써 동작은 원하는 대로 잘 되었다.

하지만......
이런 건 공부가 안 되는 것 같다.

학습 방향에 대한 고민인데
이건 새로운 포스팅으로 작성할 예정..

profile
몰입

0개의 댓글