python實現QQ背景牆自動點贊

1.思路

  • 通過pyautogui可以實現鼠標點擊、滾動鼠標、截屏等操作。由此功能實現打開頁面,進行點贊。
  • aircv可以從大圖像獲得小圖像的位置,利用pyautogui截屏得到的圖片,可以在頁面獲取到每一個👍的位置,進行點擊。
  • 當前頁面點擊完之後,通過pyautogui滾動鼠標的功能繼續向下翻。從而實現循環。
    - !](https://img-blog.csdnimg.cn/20200325113636966.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNDAxMzY5,size_16,color_FFFFFF,t_70)

2. 參考

pyautogui自動化控制鼠標和鍵盤操作
aircv通過大圖像獲得小圖像的位置

3. 安裝包

  • 這裏利用了清華的鏡像,不用鏡像容易下載失敗。
  • 下載的opencv-contrib-python和opencv_python版本也要帶上。如果已經下載了不對版本,可以使用pip uninstall 刪除。
	pip install aircv
	pip install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-contrib-python==3.4.2.16 
	pip install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv_python==3.4.2.16 
	pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyautogui

4. 準備工作

在這裏插入圖片描述
需要把這個截下來圖片放在代碼的同目錄下

5. 代碼

import cv2
import aircv as ac
import pyautogui
import time
import os

#獲取贊所在的位置
def mousepos(img1,img2): 
    imsrc = ac.imread(img1) # 原始圖像
    imsch = ac.imread(img2) # 帶查找的部分
    match_result=ac.find_all_template(imsrc, imsch,0.80)
    
    #提取出中心點的橫縱座標
    points=[]
    for i in match_result:
        points.append((i['result']))
    return points


def begin():
    #截屏
    time.sleep(1)
    img1 = pyautogui.screenshot()
    if os.path.exists('1.png'):  # 如果文件存在
        # 刪除文件,可使用以下兩種方法。
        os.remove('1.png')  
    img1.save('1.png')
    
    #由於匹配相似度不同,爲了減少錯誤,把縱座標不在點讚的那一條的刪除
    pos=mousepos('1.png','test.png')
    for i in pos[:]:
        if i[0]!=pos[0][0]:
            pos.remove(i)
    print(pos)
    
    #點擊
    for i in pos:
        pyautogui.moveTo(i[0], i[1])
        pyautogui.click(clicks=10, interval=0.2)
        time.sleep(1)
    
    #滾動鼠標
    pyautogui.scroll(-300, x=100, y=100)

#這一段僅僅是根據所在位置打開頁面,這一段可以不要,自己打開點贊頁面也行。
def openpage ():
    pyautogui.click(x=1596 ,y=1063,clicks=1, interval=2)
    pyautogui.click(x=1539 ,y=272,clicks=1, interval=2)
    pyautogui.click(x=896, y=581,clicks=1, interval=2)
    
if __name__ == '__main__':
    openpage();
    for i in range(20):    #根據自己的需要設置次數
        begin()    

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章