应@YLY之邀写这篇文章
前两天写了一个python的自动化操作脚本用于某学习平台自动播放网课视频。
参考了https://github.com/LuDreamst/xuexitong_auto_play
项目地址:https://github.com/LCHLCHLCHLCH/autoGUI
如果这个项目对您有帮助,麻烦github里面给个star!
安全声明
本程序旨在帮助用户提高学习效率,但同时也强调对使用环境和他人利益的尊重。使用者需自行承担使用本程序可能带来的风险和责任。禁止将本程序用于任何违法、侵权或不当用途,包括但不限于利用自动化脚本进行课程刷课、作弊等行为。一经发现违反本声明的行为,将立即停止对本程序的使用,并承担相应的法律责任。
我制作此程序的初衷是为了帮助用户更高效地利用学习平台资源,提升学习效率。然而,滥用自动化工具进行刷课等行为不仅违反了学习平台的使用规定,也损害了其他用户的利益,严重影响了平台的公平性和教育质量。因此,我们强调严禁将本程序用于刷课等违规行为,并呼吁用户在使用本程序时遵守相关法律法规和学校、平台的规定,维护良好的网络环境和学术道德。
使用方法
依赖安装
本代码依赖于以下python模块:
- pyautogui
- time
- PIL(pillow)
- pyscreeze
- opencv-python
在运行代码之前请确保您已经安装了python以及以上模块。
代码内容
import pyautogui
import PIL
import pyscreeze
import time
# 读取屏幕分辨率大小
screenWidth, screenHeight = pyautogui.size()
# 定位函数,屏幕中含匹配项时返回中心x,y坐标,无匹配项则返回None
def location(png, confidence):
icon = pyautogui.locateOnScreen(png, confidence=confidence) # 新增参数confidence,须配置opencv环境
if icon is not None:
center = pyautogui.center(icon)
return center
else:
time.sleep(3) # 考虑网页的加载时间,无法识别时延时3秒
icon = pyautogui.locateOnScreen(png, confidence=confidence)
if icon is None:
return None
else:
center = pyautogui.center(icon)
return center
def main():
print("程序将于3秒后开始运行")
time.sleep(3)
while(True):
# 点击播放按钮
while True:
try:
playButton = location('playbutton.png',0.9)
pyautogui.moveTo(playButton[0], playButton[1], duration=0.8)
pyautogui.click()
break
except:
time.sleep(3)
# 等待视频播放结束,这时屏幕上会出现重播标志
while True:
try:
location('replay.png',0.9)
break
except:
time.sleep(10)
# 寻找下一节的标志并点击
while True:
try:
next = location('next.png',0.9)
pyautogui.moveTo(next[0],next[1],duration=0.9)
pyautogui.click()
break
except:
pyautogui.scroll(-750)
# 寻找下一节的标志并点击(这时处在答题界面)
while True:
try:
next = location('next.png',0.9)
pyautogui.moveTo(next[0],next[1],duration=0.9)
pyautogui.click()
break
except:
pyautogui.scroll(-750)
if __name__ == '__main__':
main()
代码使用
该代码需要使用网页版的“该学习平台”以及一台电脑。
-
首先确保您已经将所需的图片文件和代码放在同一目录。如图。注意python脚本可以随意命名。图片文件的名字尽量不要改变。如果非要该的话请在python脚本中也做出相应的改变。
-
将“该学习平台”打开到这个页面:
然后执行上述python代码。
代码解析
该代码使用了pyautogui模拟了鼠标点击和滚动的动作。
- 在起始的页面,程序会在屏幕上检测播放按钮,即文件中的playbutton.png。如果有匹配到的按钮就移动到按钮的位置然后点击;否则就过一小会再检测一次。
- 然后该程序会每十秒检测一次视频播放是否完成。视频播放完成的标志是屏幕上出现“重播”的标志。
- 检测到视频播放完成以后,该程序会不断往下滚动,并寻找“下一节”的按钮,即next.png。如果找不到就继续往下滚再次寻找。
- 点击以后就会进入到答题界面。程序会继续下滚寻找“下一节”的标志并进行点击。
- 此时学习通界面就会进入下一节课的视频播放界面。回到第一步重复执行。
注意事项
- 非常非常重要的一点,请 一定确保把每节课的题目都答完以后再使用该脚本!! 本程序没有考虑题目没有答完的情况。如果在没有答完的情况下运行,可能会出现难以预料的bug!!!
- 该程序可能会陷入死循环,导致进度停住。此时需要手动停止脚本的执行。
- 使用前建议将屏幕分辨率调整至1920x1080。其他分辨率理论上也能执行,但是未经试验过。