前言
? ? ? ? 近来,工作之余想整点小工具来提高划水效率,没错就是辅助划水的工具。工作累了休息一下,拿着手机刷视频呀,看一会小说呀,难免会被领导或者其他小伙伴发现,这样莫名的“摸鱼”称号不就非你莫属了么?工作累了休息一下抽根烟,刷个手机看看视频,玩会游戏放松一下这是人之常情,但是猪还是怕壮的,就算划水也得暗自理偷偷进行。
目的:
1、鼠标识别电脑桌面的像素
2、用电脑刷抖音,按回车键刷下一条抖音。同时记录观看的抖音次数和观看的时长。
开发工具:pychram ,调用类:pyautogui?
辅助工具:夜神模拟器
pyautogui官方解读文档:https://pyautogui.readthedocs.io/en/latest/
一、pyautogui基础语法运用
1.鼠标命令
import pyautogui
pyautogui.click #固定指定位置点击鼠标一次 button 单击属性
pyautogui.click(100,150,button='left') #点击鼠标左键一次
pyautogui.click(100,150,button='middle') #点击鼠标中间键一次
pyautogui.click(100,150,button='right') #点击鼠标右键一次
pyautogui. mouseDown() #鼠标左键按下
pyautogui. mouseUp() #鼠标右键弹起
pyautogui.dragTo() #鼠标按住拖动绝对位置
pyautogui.dragRel() #鼠标按住拖动相对位置
pyautogui.doubleClick() #鼠标双击左键
pyautogui.rightClick() #鼠标双击右键
pyautogui.middleClick() #鼠标双加中间键
pyautogui.scroll() #中间滚轮,上下滚动,
#正数是向上滚动,负数是向下滚动
pyautogui.moveTo #将鼠标箭头移到,指定,绝对位置
pyautogui.moveRel #将鼠标箭头移到,相对位置
花样移动:2秒移动时长,移动样式,通用
pyautogui.moveTo(100, 100, 2, pyautogui.easeInQuad) # 开始慢,结束快
pyautogui.moveTo(100, 100, 2, pyautogui.easeOutQuad) # 开始快,结束慢
pyautogui.moveTo(100, 100, 2, pyautogui.easeInOutQuad) # 开始和结束快,中间慢
pyautogui.moveTo(100, 100, 2, pyautogui.easeInBounce) # 最后反弹
pyautogui.moveTo(100, 100, 2, pyautogui.easeInElastic) # 末端橡皮筋
pyautogui.position 返回值确定鼠标当前的位置
2.键盘命令
import pyautogui
pyautogui.hotkey('ctrl', 'c') # 热键组合输入
# 'a', 'b', 'c', 'A', 'B', 'C', '1', '2', '3', '!', '@', '#',等等单个字符的键
pyautogui.typewrite('yin') # 其他键输入,依次类推,直接输入对应单词
pyautogui.keyDown() # 按下一个键不放
pyautogui.keyUp() # 弹起按下不放的键
3、图像识别截图
import pyautogui
#判定目标截图在系统上的位置
location=pyautogui.locateOnScreen(image='target.png')
#输出坐标
print(location)
#利用center()函数获取目标图像在系统中的中心坐标位置
x,y=pyautogui.center(location)
print('center()',x,y)
#对识别出的目标图像进行点击
#参数x,y代表坐标位置,clicks代表点击次数,button可以设置为左键或者右键
pyautogui.click(x=x,y=y,clicks=1,button='left')
>>> import pyautogui
>>> im1 = pyautogui.screenshot()
>>> im2 = pyautogui.screenshot('my_screenshot.png')
二、项目的实现
1、鼠标识别电脑桌面的像素
import time
import datetime
import pyautogui as pg
#坐标识别器
print('print ctrl+c to quiet')
try:
while True:
x,y = pg.position()
positionStr = 'x:'+str(x).rjust(4) + 'y:'+str(y).rjust(4)
print(positionStr,end='')
print('\b' * len(positionStr),end='',flush=True)
except KeyboardInterrupt:
print('\n')
保存代码,通过cmd运行即:
鼠标移动到哪里打印出哪里的界面坐标
2、用电脑刷抖音,按回车键刷下一条抖音,同时记录观看的抖音次数和观看的时长。
# -*- coding: <encoding name> -*- : # -*- coding: utf-8 -*-
import time
import datetime
from selenium import webdriver
import random
import win32con
import win32api
import pyautogui as pg
def RunTest():
#移动到右下角进行抖音操作滑动(夜神模拟器小界面移动到界面右下角)
pg.moveTo(1740, 740)
time.sleep(2)
pg.dragTo(1740, 540)
time.sleep(0.5)
#返回cmd输入继续操作空格(cmd窗口设置于界面左上方固定好)
pg.moveTo(50, 100)
time.sleep(1)
#点击输入框
pg.click()
start = datetime.datetime.now()
for i in range(100):
SM = i + 1
print('今日刷新次数:'+str(SM))
number = input('请按空格键:')
if number != str(1):
print("-----------------開始運行------------------")
RunTest()
else:
end = datetime.datetime.now()
print('今日总观影次数为:%d 運行時間: %s' % (SM, end-start))
break
?
效果实现:
如上即可以通过键盘控制鼠标进行滑动,就按一下回车就切换到下一个视频,输入1即可打印出刷新的总条数和放松的时间,当然也可以修改一下代码,30秒内自动滑动视频。
3、工具升级,自动打开夜神模拟器,打开抖音,并且休息完后自动关闭软件,神不知鬼不觉的进行这些操作;
# -*- coding: <encoding name> -*- : # -*- coding: utf-8 -*-
import time
import datetime
import os
from selenium import webdriver
import random
import win32con
import win32api
import pyautogui as pg
def RunTest():
#移动到右下角进行抖音操作滑动
pg.moveTo(1740, 740)
time.sleep(2)
pg.dragTo(1740, 540)
time.sleep(0.5)
#返回cmd输入继续操作空格
pg.moveTo(50, 100)
time.sleep(1)
#点击输入框
pg.click()
#启动夜神浏览器
win32api.ShellExecute(0, 'open', r'D:\Program Files\Nox\bin\nox.exe', '','',1)
print("等待啓動:")
time.sleep(15)
start = datetime.datetime.now()
for i in range(100):
SM = i + 1
print('今日刷新次数:'+str(SM))
number = input('请按空格键:')
if number != str(1):
print("-----------------開始運行------------------")
RunTest()
else:
end = datetime.datetime.now()
#打印播放的抖音数和休息时间
print('今日总观影次数为:%d 運行時間: %s' % (SM, end-start))
time.sleep(5)
#终止夜神浏览器软件
os.system("taskkill /F /IM nox.exe")
break
这样的话代码逻辑就已经实现了
????????这个工具目前对于我是够用了,那么还有兴趣的小伙伴可以再完善一下工具,比如图像识别定位自动在模拟器上打开app,或者关闭app等,但这里运用的是模拟器非Windows系统桌面所以pyautogui的图像识别无法运用,但可以结合appium进行脚本优化。^——^
? ? ? ? 有好的建议欢迎各位大佬指点。
|