Project11_오토마우스를 활용한 PC카카오톡 자동화

Song Chae Won·2023년 2월 3일
0
post-thumbnail

오토마우스를 활용한 PC카카오톡 자동화

오토마우스를 활용하여 PC에 설치된 카카오톡을 통해 메시지를 자동으로 보내는 프로그램을 만들어본다.

➕ 라이브러리 설치

마우스와 키보드를 자동으로 제어하기 위한 라이브러리

pip install pyautogui

클립보드에 값을 복사하거나 붙여넣기 용도로 사용하는 라이브러리

pip install pyperclip

일정시간마다 함수를 동작시킬 때 사용

pip install schedule

📍사진에서 좌표 추출하는 코드 만들기

PC카카오톡에서 내 사진 캡쳐 후 저장

오토 마우스는 사진으로 좌표를 찾을 수 있는 기능이 있다. 나에게 메시지를 보내기 위해 내 프로필 사진 부분을 캡쳐하여 저장해놓아야한다. 여기서 PC카카오톡의 화면 상태는 그냥 두었을 때, 마우스를 올려두었을 때, 클릭할 때 각각 배경색상이 미세하게 틀리다. 오토마우스는 100% 동일한 이미지로 좌표를 얻기 때문에 배경색상이 틀려도 다른 이미지로 인식하기에 3가지의 경우 모두 사진으로 저장해야한다.

import pyautogui
import os

#경로를 .py파일의 실행경로로 이동, 현재 경로로 이동
os.chdir(os.path.dirname(os.path.abspath(__file__)))

#pic1.png 파일과 동일한 그림을 찾아 좌표 출력하기
picPosition = pyautogui.locateOnScreen('pic1.png')
print(picPosition)

# 못찾았으면 pic2.png 파일과 동일한 그림 찾아 좌표 출력
if  picPosition is None:
    picPosition = pyautogui.locateOnScreen('pic2.png')
    print(picPosition)

# 못찾았으면 pic3.png 파일과 동일한 그림 찾아 좌표 출력
if  picPosition is None:
    picPosition = pyautogui.locateOnScreen('pic3.png')
    print(picPosition)

📍 좌표를 이용하여 메세지를 자동으로 보내는 코드 만들기

import pyautogui
import pyperclip
import time
import os

#경로를 .py파일의 실행경로로 이동, 현재 경로로 이동
os.chdir(os.path.dirname(os.path.abspath(__file__)))

#이미지에서 좌표 찾기
picPosition = pyautogui.locateOnScreen('pic1.png')
print(picPosition)

if  picPosition is None:
    picPosition = pyautogui.locateOnScreen('pic2.png')
    print(picPosition)

if  picPosition is None:
    picPosition = pyautogui.locateOnScreen('pic3.png')
    print(picPosition)

#이미지에서 좌표의 중간 좌표값을 찾는다
clickPosition = pyautogui.center(picPosition)
pyautogui.doubleClick(clickPosition) #이미지 더블클릭하여 카카오톡 메세지 전송창이 열린다.

#아래 문구를 붙여넣은 후에 1초 기다린다
pyperclip.copy("이 메세지는 자동으로 보내는 메세지 입니다~~") 
pyautogui.hotkey("ctrl", "v") 
time.sleep(1.0) 

pyautogui.write(["enter"]) #엔터 입력하고 1초 기다리기
time.sleep(1.0)

pyautogui.write(["escape"]) #esc 입력하고 1초 기다리기
time.sleep(1.0)

📍 일정 시간마다 동작하는 코드만들기

파이썬의 thread 기능을 이용하여 자기 자신의 함수를 호출하는 코드 만들기

import pyautogui
import pyperclip
import time
import threading #threading 라이브러리를 사용
import os

# 경로를 .py파일의 실행경로로 이동, 현재 경로로 이동
os.chdir(os.path.dirname(os.path.abspath(__file__)))

# 카카오톡에 메세지를 보내는 코드를 send_message 함수로 만들기
def send_mesaage():
    threading.Timer(10, send_mesaage).start() 
    #자신의 함수에서 10초후에 자신의 함수를 다시 불러오기 때문에 10초마다 실행된다.

    picPosition = pyautogui.locateOnScreen('pic1.png')
    print(picPosition)

    if picPosition is None:
        picPosition = pyautogui.locateOnScreen('pic2.png')
        print(picPosition)

    if picPosition is None:
        picPosition = pyautogui.locateOnScreen('pic3.png')
        print(picPosition)

    clickPosition = pyautogui.center(picPosition)
    pyautogui.doubleClick(clickPosition)

    pyperclip.copy("이 메세지는 자동으로 보내는 메세지 입니다~~")
    pyautogui.hotkey("ctrl", "v")
    time.sleep(1.0)

    pyautogui.write(["enter"])
    time.sleep(1.0)

    pyautogui.write(["escape"])
    time.sleep(1.0)


send_mesaage() #처음에 send_message 함수를 시행하고, 이후에는 threading.Timer에 의해 10초마다 불려진다.

종료하려면 터미널에서 정지 눌러주어야함!

🌿스케쥴 라이브러리 이용 방법

30분마다 실행

schedule.every(30).minutes.do(실행할 함수)

매주 월요일 9시마다 실행

schedule.every().monday.at("09:00").do(실행할 함수)

매일 10시 30분마다 실행

schedule.every().day.at("10:30").do(실행할 함수)
profile
@chhaewxn

0개의 댓글