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

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

相关文章
|
11天前
|
XML JSON 数据库
Python的标准库
Python的标准库
127 77
|
5天前
|
安全 API C语言
Python程序的安全逆向(关于我的OPENAI的APIkey是如何被盗的)
本文介绍了如何使用C语言编写一个简单的文件加解密程序,并讨论了如何为编译后的软件添加图标。此外,文章还探讨了Python的.pyc、.pyd等文件的原理,以及如何生成和使用.pyd文件来增强代码的安全性。通过视频和教程,作者详细讲解了生成.pyd文件的过程,并分享了逆向分析.pyd文件的方法。最后,文章提到可以通过定制Python解释器来进一步保护源代码。
31 6
|
25天前
|
机器学习/深度学习 算法 数据挖掘
数据分析的 10 个最佳 Python 库
数据分析的 10 个最佳 Python 库
75 4
数据分析的 10 个最佳 Python 库
|
12天前
|
XML JSON 数据库
Python的标准库
Python的标准库
41 11
|
25天前
|
人工智能 API 开发工具
aisuite:吴恩达发布开源Python库,一个接口调用多个大模型
吴恩达发布的开源Python库aisuite,提供了一个统一的接口来调用多个大型语言模型(LLM)服务。支持包括OpenAI、Anthropic、Azure等在内的11个模型平台,简化了多模型管理和测试的工作,促进了人工智能技术的应用和发展。
99 1
aisuite:吴恩达发布开源Python库,一个接口调用多个大模型
|
12天前
|
数据可视化 Python
以下是一些常用的图表类型及其Python代码示例,使用Matplotlib和Seaborn库。
通过这些思维导图和分析说明表,您可以更直观地理解和选择适合的数据可视化图表类型,帮助更有效地展示和分析数据。
54 8
|
18天前
|
IDE 程序员 开发工具
Python编程入门:打造你的第一个程序
迈出编程的第一步,就像在未知的海洋中航行。本文是你启航的指南针,带你了解Python这门语言的魅力所在,并手把手教你构建第一个属于自己的程序。从安装环境到编写代码,我们将一步步走过这段旅程。准备好了吗?让我们开始吧!
|
19天前
|
安全 API 文件存储
Yagmail邮件发送库:如何用Python实现自动化邮件营销?
本文详细介绍了如何使用Yagmail库实现自动化邮件营销。Yagmail是一个简洁强大的Python库,能简化邮件发送流程,支持文本、HTML邮件及附件发送,适用于数字营销场景。文章涵盖了Yagmail的基本使用、高级功能、案例分析及最佳实践,帮助读者轻松上手。
29 4
|
1月前
|
开发者 Python
使用Python实现自动化邮件通知:当长时程序运行结束时
本文介绍了如何使用Python实现自动化邮件通知功能,当长时间运行的程序完成后自动发送邮件通知。主要内容包括:项目背景、设置SMTP服务、编写邮件发送函数、连接SMTP服务器、发送邮件及异常处理等步骤。通过这些步骤,可以有效提高工作效率,避免长时间等待程序结果。
60 9
|
29天前
|
存储 人工智能 数据挖掘
Python编程入门:打造你的第一个程序
本文旨在为初学者提供Python编程的初步指导,通过介绍Python语言的基础概念、开发环境的搭建以及一个简单的代码示例,帮助读者快速入门。文章将引导你理解编程思维,学会如何编写、运行和调试Python代码,从而开启编程之旅。
39 2