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

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

前言

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

 

完整代码

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原始库名称不是这个,可以去命令行输入以下命令下载:

pip install opencv-python

控制鼠标

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

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

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

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

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

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

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

脚本逻辑

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

pyautogui.click(tuple(pyautogui.locateOnScreen("E:\image\screenshot\z2.png", confidence=0.8)))

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

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

if pyautogui.locateOnScreen("E:\image\screenshot\z1.png", confidence=0.8):

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

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

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

2.播放结束后跳转

3.继续播放

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

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

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,不过知道原理了你们自己也可以尝试开发出来。

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

相关文章
|
3月前
|
存储 人工智能 测试技术
如何使用LangChain的Python库结合DeepSeek进行多轮次对话?
本文介绍如何使用LangChain结合DeepSeek实现多轮对话,测开人员可借此自动生成测试用例,提升自动化测试效率。
456 125
如何使用LangChain的Python库结合DeepSeek进行多轮次对话?
|
3月前
|
监控 数据可视化 数据挖掘
Python Rich库使用指南:打造更美观的命令行应用
Rich库是Python的终端美化利器,支持彩色文本、智能表格、动态进度条和语法高亮,大幅提升命令行应用的可视化效果与用户体验。
218 0
|
4月前
|
人工智能 Linux 开发工具
Python从零到一:手把手带你写出第一个实用程序
Python语法简洁易懂,适合编程新手入门。它广泛应用于人工智能、自动化办公、Web开发等领域。学习Python可快速搭建项目,拥有丰富库支持和强大社区资源。通过本教程,你将掌握基础语法、环境搭建、程序逻辑控制及实战项目开发,开启编程之旅。
395 0
|
2月前
|
数据可视化 关系型数据库 MySQL
【可视化大屏】全流程讲解用python的pyecharts库实现拖拽可视化大屏的背后原理,简单粗暴!
本文详解基于Python的电影TOP250数据可视化大屏开发全流程,涵盖爬虫、数据存储、分析及可视化。使用requests+BeautifulSoup爬取数据,pandas存入MySQL,pyecharts实现柱状图、饼图、词云图、散点图等多种图表,并通过Page组件拖拽布局组合成大屏,支持多种主题切换,附完整源码与视频讲解。
232 4
【可视化大屏】全流程讲解用python的pyecharts库实现拖拽可视化大屏的背后原理,简单粗暴!
|
2月前
|
传感器 运维 前端开发
Python离群值检测实战:使用distfit库实现基于分布拟合的异常检测
本文解析异常(anomaly)与新颖性(novelty)检测的本质差异,结合distfit库演示基于概率密度拟合的单变量无监督异常检测方法,涵盖全局、上下文与集体离群值识别,助力构建高可解释性模型。
306 10
Python离群值检测实战:使用distfit库实现基于分布拟合的异常检测
|
4月前
|
运维 Linux 开发者
Linux系统中使用Python的ping3库进行网络连通性测试
以上步骤展示了如何利用 Python 的 `ping3` 库来检测网络连通性,并且提供了基本错误处理方法以确保程序能够优雅地处理各种意外情形。通过简洁明快、易读易懂、实操性强等特点使得该方法非常适合开发者或系统管理员快速集成至自动化工具链之内进行日常运维任务之需求满足。
240 18
|
3月前
|
设计模式 决策智能 Python
Python条件控制:让程序学会"思考"的魔法
本文深入浅出地讲解Python条件控制,从基础if语句到多分支、嵌套结构,再到简洁的三元表达式与Python 3.10新增的match-case模式匹配,结合电商折扣、会员等级、ATM系统等实战案例,全面掌握程序“智能决策”的核心逻辑。
401 0
|
4月前
|
机器学习/深度学习 API 异构计算
JAX快速上手:从NumPy到GPU加速的Python高性能计算库入门教程
JAX是Google开发的高性能数值计算库,旨在解决NumPy在现代计算需求下的局限性。它不仅兼容NumPy的API,还引入了自动微分、GPU/TPU加速和即时编译(JIT)等关键功能,显著提升了计算效率。JAX适用于机器学习、科学模拟等需要大规模计算和梯度优化的场景,为Python在高性能计算领域开辟了新路径。
384 0
JAX快速上手:从NumPy到GPU加速的Python高性能计算库入门教程
|
4月前
|
数据采集 存储 Web App开发
Python爬虫库性能与选型实战指南:从需求到落地的全链路解析
本文深入解析Python爬虫库的性能与选型策略,涵盖需求分析、技术评估与实战案例,助你构建高效稳定的数据采集系统。
369 0

推荐镜像

更多