前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >pyautogui库简单实现的python刷课程序

pyautogui库简单实现的python刷课程序

作者头像
Nowl
发布2024-01-19 14:30:30
1340
发布2024-01-19 14:30:30
举报
文章被收录于专栏:NowlNowl_AINowlNowl_AI

前言

上了大学,各种要刷的课程接踵而来,于是为了不用一直等在屏幕前等着点下一节,有时间去更有效的学习,我用python写了一个非常简单的刷课程序(由于简单,肯定有一些局限,可以根据实际情况具体修改)

完整代码

代码语言:javascript
复制
import pyautogui
import time
import cv2

pyautogui.click(2368, 30)

while True:
    pyautogui.click(903, 730)
    while True:
        if pyautogui.locateOnScreen("E:\image\screenshot\z1.png", confidence=0.8):
            pyautogui.click(tuple(pyautogui.locateOnScreen("E:\image\screenshot\z2.png", confidence=0.8)))
            pyautogui.moveTo(1636, 597)
            time.sleep(1)
            pyautogui.scroll(-1000)
            time.sleep(1)
            pyautogui.click(tuple(pyautogui.locateOnScreen("E:\image\screenshot\z2.png", confidence=0.8)))
            break

具体介绍

安装所需库

首先导入所需要的库,注意这里的cv2原始库名称不是这个,可以去命令行输入以下命令下载:

代码语言:javascript
复制
pip install opencv-python

控制鼠标

安装好所有所需库后,我们具体介绍代码:

pyautogui.click(x, y),这行代码的作用是鼠标移动到给定的坐标并点击,我这里就是运行代码后鼠标点击右上方缩小化我的编辑器

那么怎样获取鼠标位置呢,pyautogui库有一个函数pyautogui.position(),这个函数可以返回当前鼠标所在位置,于是我们可以这样:

代码语言:javascript
复制
import pyautogui
import time


time.sleep(2)
print(pyautogui.position())

运行上述代码,time.sleep(2)先给我们2秒的缓冲时间,这时我们把鼠标移动到缩小键的位置后,程序运行结束就能知道相应位置了。

获取其他位置的方法,如视频播放,视频跳转按钮方法类似,我们只需要先缩小编辑器,然后移动鼠标到相应位置,等一下之后回到编辑器就能得到相应坐标了:

代码语言:javascript
复制
import pyautogui
import time

pyautogui.click(2368, 30)
time.sleep(2)
print(pyautogui.position())

脚本逻辑

接下来我们要弄清逻辑,我们需要播放视频,还有检测视频是否已结束,结束后我们还要跳转到下一个视频,怎么实现呢,这几步的关键是pyautogui.locateOnScreen()函数,它会识别某图像是否在屏幕上,如果在,返回它的位置,注意,该函数的返回值不是标准类型,我们使用tuple()函数将它转换为元组,再结合pyautogui.click()函数实现"识别到这个图像然后点击"的功能,即这行代码:

代码语言:javascript
复制
pyautogui.click(tuple(pyautogui.locateOnScreen("E:\image\screenshot\z2.png", confidence=0.8)))

pyautogui.locateOnScreen()函数需要一个图片文件路径参数,而confidence参数是安装了cv2库才能使用的,功能是"模糊识别度",因为可能由于分辨率的原因电脑识别不了图像,因为locateOnScreen()函数需要两个完全一样的图片才能识别,这时我们可以借助confidence使电脑模糊判别,即相似就能检测到,confidence参数的值即为这个"相似度"。

言归正传,在我的网课网站中,课程结束后会有"已完成"的标志,我将这个图片截取下来作为判别的标志,即

代码语言:javascript
复制
if pyautogui.locateOnScreen("E:\image\screenshot\z1.png", confidence=0.8):

如果检测到了,我会点击"下一节",由于我点击下一节会跳转到章节测验,于是我要点击两次,如果需要滑动鼠标,比如我跳转到章节测验后,要滑动鼠标才能找到"下一节"按钮,我们可以使用pyautogui.scroll()函数来滑动鼠标,参数即为滑动的方向和距离,正数向上滑,负数相反。

补充:time.sleep()函数是做缓冲用,防止程序点击切换太快导致出错(亲身经历)

于是下列代码实现了:1.点击播放

2.播放结束后跳转

3.继续播放

如此就实现了循环功能,晚上挂着,早上就刷完啦(虽然晚上插电不安全......)

建议刷课的时候去做别的事,但是人在电源旁边。

代码语言:javascript
复制
while True:
    pyautogui.click(903, 730)
    while True:
        if pyautogui.locateOnScreen("E:\image\screenshot\z1.png", confidence=0.8):
            pyautogui.click(tuple(pyautogui.locateOnScreen("E:\image\screenshot\z2.png", confidence=0.8)))
            pyautogui.moveTo(1636, 597)
            time.sleep(1)
            pyautogui.scroll(-1000)
            time.sleep(1)
            pyautogui.click(tuple(pyautogui.locateOnScreen("E:\image\screenshot\z2.png", confidence=0.8)))
            break

总结

以上就是全部内容了,当然那种会刷着刷着跳题的课程这个不适用,由于这学期已经没课了,下个学期再说吧hh,不过知道原理了你们自己也可以尝试开发出来。

有问题欢迎提问,有错误欢迎指正,共勉。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-12-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 完整代码
  • 具体介绍
    • 安装所需库
      • 控制鼠标
        • 脚本逻辑
        • 总结
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档